OSDN Git Service

drm/amdkfd: Fix DQM asserts on Hawaii
authorFelix Kuehling <Felix.Kuehling@amd.com>
Wed, 8 Dec 2021 03:03:52 +0000 (22:03 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 11 Jan 2022 20:44:28 +0000 (15:44 -0500)
start_nocpsch would never set dqm->sched_running on Hawaii due to an
early return statement. This would trigger asserts in other functions
and end up in inconsistent states.

Bug: https://github.com/RadeonOpenCompute/ROCm/issues/1624
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Kent Russell <kent.russell@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

index 19890e3..4b68149 100644 (file)
@@ -1004,14 +1004,17 @@ static void uninitialize(struct device_queue_manager *dqm)
 
 static int start_nocpsch(struct device_queue_manager *dqm)
 {
+       int r = 0;
+
        pr_info("SW scheduler is used");
        init_interrupts(dqm);
        
        if (dqm->dev->adev->asic_type == CHIP_HAWAII)
-               return pm_init(&dqm->packet_mgr, dqm);
-       dqm->sched_running = true;
+               r = pm_init(&dqm->packet_mgr, dqm);
+       if (!r)
+               dqm->sched_running = true;
 
-       return 0;
+       return r;
 }
 
 static int stop_nocpsch(struct device_queue_manager *dqm)