drm/amdkfd: Call DQM stop during DQM uninitialize
authorMukul Joshi <mukul.joshi@amd.com>
Tue, 10 May 2022 02:34:38 +0000 (22:34 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 13:42:58 +0000 (09:42 -0400)
During DQM tear down, call DQM stop to unitialize HIQ and
associated memory allocated during packet manager init.

Signed-off-by: Mukul Joshi <mukul.joshi@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

index 01ea038..f78c1e7 100644 (file)
@@ -1348,9 +1348,16 @@ static int start_nocpsch(struct device_queue_manager *dqm)
 
 static int stop_nocpsch(struct device_queue_manager *dqm)
 {
+       dqm_lock(dqm);
+       if (!dqm->sched_running) {
+               dqm_unlock(dqm);
+               return 0;
+       }
+
        if (dqm->dev->adev->asic_type == CHIP_HAWAII)
                pm_uninit(&dqm->packet_mgr, false);
        dqm->sched_running = false;
+       dqm_unlock(dqm);
 
        return 0;
 }
@@ -2423,6 +2430,7 @@ static void deallocate_hiq_sdma_mqd(struct kfd_node *dev,
 
 void device_queue_manager_uninit(struct device_queue_manager *dqm)
 {
+       dqm->ops.stop(dqm);
        dqm->ops.uninitialize(dqm);
        if (!dqm->dev->kfd->shared_resources.enable_mes)
                deallocate_hiq_sdma_mqd(dqm->dev, &dqm->hiq_sdma_mqd);