linux/drivers/gpu/drm/amd
Samuel Pitoiset 38fc4856ad drm/amdgpu: fix a potential deadlock in amdgpu_bo_create_restricted()
When ttm_bo_init() fails, the reservation mutex should be unlocked.

In debug build, the kernel reported "possible recursive locking
detected" in this codepath. For debugging purposes, I also added
a "WARN_ON(ww_mutex_is_locked())" when ttm_bo_init() fails and the
mutex was locked as expected.

This should fix (random) GPU hangs. The easy way to reproduce the
issue is to change the "Super Sampling" option from 1.0 to 2.0 in
Hitman. It will create a huge buffer, evict a bunch of buffers
(around ~5k) and deadlock.

This regression has been introduced pretty recently.

v2: only release the mutex if resv is NULL

Fixes: 12a852219583 ("drm/amdgpu: improve AMDGPU_GEM_CREATE_VRAM_CLEARED handling (v2)")
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2017-02-09 11:28:24 -05:00
..
acp drm/amd: add Kconfig dependency for ACP on DRM_AMDGPU 2016-05-25 09:44:15 -04:00
amdgpu drm/amdgpu: fix a potential deadlock in amdgpu_bo_create_restricted() 2017-02-09 11:28:24 -05:00
amdkfd drm/amdkfd: fix improper return value on error 2017-01-16 17:34:47 +02:00
include drm/amdgpu: add current_pg_status register define for smu7.1 2017-02-08 17:20:22 -05:00
powerplay drm/amdgpu: add support for new smc firmware on polaris 2017-02-09 10:54:45 -05:00
scheduler drm/virtio: fix busid in a different way, allocate more vbufs. 2016-11-30 14:18:51 +10:00