]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdkfd: fix redundant MQD iterations in GFX v12.1
authorAlex Sierra <alex.sierra@amd.com>
Tue, 7 Apr 2026 22:22:44 +0000 (17:22 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 17 Apr 2026 19:41:14 +0000 (15:41 -0400)
The init_mqd_v12_1 function and its sub-call update_mqd_v12_1 both independently
iterate over XCC-specific MQDs. This nested iteration is redundant and can cause
MQDs in different queues to be overwritten. This patch removes the duplicate
loop logic to prevent queue corruption.

Fixes: 01bbc4a4b947 ("drm/amdkfd: Add MQD manager for GFX 12.1.0")
Signed-off-by: Alex Sierra <alex.sierra@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_mqd_manager_v12_1.c

index c90c0d99b1e3f38b9a5a385dff801b37a94fc46c..475589b924e90a2b92f0a5823aa79aa330be418a 100644 (file)
 #include "amdgpu_amdkfd.h"
 #include "kfd_device_queue_manager.h"
 
+static void update_mqd(struct mqd_manager *mm, void *mqd,
+                      struct queue_properties *q,
+                      struct mqd_update_info *minfo);
+
 static inline struct v12_1_compute_mqd *get_mqd(void *mqd)
 {
        return (struct v12_1_compute_mqd *)mqd;
@@ -215,7 +219,7 @@ static void init_mqd(struct mqd_manager *mm, void **mqd,
        *mqd = m;
        if (gart_addr)
                *gart_addr = addr;
-       mm->update_mqd(mm, m, q, NULL);
+       update_mqd(mm, m, q, NULL);
 }
 
 static int load_mqd(struct mqd_manager *mm, void *mqd,