drm/amdgpu/userq: serialize queue map against GPU reset
authorJesse Zhang <Jesse.Zhang@amd.com>
Mon, 3 Aug 2026 09:19:46 +0000 (17:19 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 6 Aug 2026 13:46:13 +0000 (09:46 -0400)
commita8e151fe629c63b0eb08aa57de0d434614db3e1b
tree7b4e7578173fff603729c4cef834f0b7be9eac4a
parent8a28e1519baf1a9052f19f4b6a6928c06021d95c
drm/amdgpu/userq: serialize queue map against GPU reset

Creating a user queue can race with a GPU reset. While recovery holds
reset_domain->sem for write, MES is unresponsive, so the ADD_QUEUE from
amdgpu_userq_map_helper() times out (-110) and an otherwise valid queue
create fails:

  amdgpu: MES(0) failed to respond to msg=ADD_QUEUE
  [drm:mes_userq_map [amdgpu]] *ERROR* Failed to map queue in HW, err (-110)
  amdgpu: [drm] *ERROR* ... Failed to map Queue
  amdgpu: [drm] *ERROR* ... Failed to create usermode queue

Take reset_domain->sem for read around the map so it runs only once MES
is back up. This mirrors amdgpu_userq_cleanup() and honors the
userq_mutex -> reset_domain->sem order; the reset path never takes
userq_mutex, so there is no deadlock.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Jesse Zhang <Jesse.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c