drm/amdkfd: Remove GWS from process during uninit
authorJoseph Greathouse <Joseph.Greathouse@amd.com>
Wed, 17 Jul 2019 14:47:58 +0000 (09:47 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 17 Jul 2019 18:34:31 +0000 (13:34 -0500)
If we shut down a process without having destroyed its GWS-using
queues, it is possible that GWS BO will still be in the process
BO list during the gpuvm destruction. This list should be empty
at that time, so we should remove the GWS allocation at the
process uninit point if it is still around.

Signed-off-by: Joseph Greathouse <Joseph.Greathouse@amd.com>
Acked-by: Alex Deucher <alexander.deucher@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_process_queue_manager.c

index da09586258617914a7fc8a7683feb57651d9f98f..7e6c3ee82f5b233ef3730b78896f10e8c2a92166 100644 (file)
@@ -150,6 +150,9 @@ void pqm_uninit(struct process_queue_manager *pqm)
        struct process_queue_node *pqn, *next;
 
        list_for_each_entry_safe(pqn, next, &pqm->queues, process_queue_list) {
+               if (pqn->q && pqn->q->gws)
+                       amdgpu_amdkfd_remove_gws_from_process(pqm->process->kgd_process_info,
+                               pqn->q->gws);
                uninit_queue(pqn->q);
                list_del(&pqn->process_queue_list);
                kfree(pqn);