linux_dsm_epyc7002/drivers/gpu/drm/etnaviv
Lucas Stach d985349017 drm/etnaviv: take GPU lock later in the submit process
Both the fence and event alloc are safe to be done without holding the GPU
lock, as they either don't need any locking (fences) or are protected by
their own lock (events).

This solves a bad locking interaction between the submit path and the
recover worker. If userspace manages to exhaust all available events while
the GPU is hung, the submit will wait for events to become available
holding the GPU lock. The recover worker waits for this lock to become
available before trying to recover the GPU which frees up the allocated
events. Essentially both paths are deadlocked until the submit path
times out waiting for available events, failing the submit that could
otherwise be handled just fine if the recover worker had the chance to
bring the GPU back in a working state.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
2016-08-15 14:00:40 +02:00
..
cmdstream.xml.h drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
common.xml.h drm/etnaviv: update common and state_hi xml.h files 2016-01-26 18:53:55 +01:00
etnaviv_buffer.c drm: etnaviv: improve readability of command insertion to ring buffer 2016-03-07 15:36:59 +01:00
etnaviv_cmd_parser.c drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
etnaviv_drv.c Merge branch 'drm-etnaviv-next' of git://git.pengutronix.de/git/lst/linux into drm-next 2016-07-08 13:30:22 +10:00
etnaviv_drv.h drm: etnaviv: clean up vram_mapping submission/retire path 2016-03-07 15:37:00 +01:00
etnaviv_dump.c drm/etnaviv: rename etnaviv_gem_vaddr to etnaviv_gem_vmap 2016-01-26 18:54:01 +01:00
etnaviv_dump.h drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
etnaviv_gem_prime.c drm/etnaviv: fix mmap operations for userptr and dma-buf objects 2016-05-06 10:42:33 +02:00
etnaviv_gem_submit.c kernel.h: add u64_to_user_ptr() 2016-04-29 17:03:49 -07:00
etnaviv_gem.c Merge tag 'drm-for-v4.8' of git://people.freedesktop.org/~airlied/linux 2016-08-01 21:44:08 -04:00
etnaviv_gem.h drm/etnaviv: fix mmap operations for userptr and dma-buf objects 2016-05-06 10:42:33 +02:00
etnaviv_gpu.c drm/etnaviv: take GPU lock later in the submit process 2016-08-15 14:00:40 +02:00
etnaviv_gpu.h dma-buf/fence: make fence context 64 bit v2 2016-06-02 08:27:41 +02:00
etnaviv_iommu_v2.c drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
etnaviv_iommu_v2.h drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
etnaviv_iommu.c drm/etnaviv: initialize iommu domain page size 2016-06-15 11:18:39 +02:00
etnaviv_iommu.h drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
etnaviv_mmu.c drm: etnaviv: clean up vram_mapping submission/retire path 2016-03-07 15:37:00 +01:00
etnaviv_mmu.h drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
Kconfig drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
Makefile drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00
state_3d.xml.h drm: etnaviv: flush all GPU caches when stopping GPU 2016-03-07 15:36:56 +01:00
state_hi.xml.h drm/etnaviv: enable GPU module level clock gating support 2016-07-05 16:26:36 +02:00
state.xml.h drm/etnaviv: add initial etnaviv DRM driver 2015-12-15 14:48:02 +01:00