drm/amdkfd: Fix circular lock in nocpsch path
authorAmber Lin <Amber.Lin@amd.com>
Mon, 7 Jun 2021 18:46:21 +0000 (14:46 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 Jun 2021 21:25:42 +0000 (17:25 -0400)
commita7b2451d31cfa2e8aeccf3b35612ce33f02371fc
treef4d542441346f99960cc2aa98aa03a4b481f1c25
parentd760895d55cd7a2d3814fbd581b7ca29f1f73205
drm/amdkfd: Fix circular lock in nocpsch path

Calling free_mqd inside of destroy_queue_nocpsch_locked can cause a
circular lock. destroy_queue_nocpsch_locked is called under a DQM lock,
which is taken in MMU notifiers, potentially in FS reclaim context.
Taking another lock, which is BO reservation lock from free_mqd, while
causing an FS reclaim inside the DQM lock creates a problematic circular
lock dependency. Therefore move free_mqd out of
destroy_queue_nocpsch_locked and call it after unlocking DQM.

Signed-off-by: Amber Lin <Amber.Lin@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c