drm/amdkfd: Disable MQD queue priority
authorAndrew Martin <andrew.martin@amd.com>
Mon, 2 Feb 2026 10:42:44 +0000 (05:42 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 19 Feb 2026 17:16:11 +0000 (12:16 -0500)
This solves a priority inversion issue, caused by the language
runtime making high-priority queues wait for activity on
lower-priority queues.

Signed-off-by: Andrew Martin <andrew.martin@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_cik.c
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v11.c
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12.c
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12_1.c
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c

index 90ac3a3..76483d9 100644 (file)
@@ -70,7 +70,7 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
 static void set_priority(struct cik_mqd *m, struct queue_properties *q)
 {
        m->cp_hqd_pipe_priority = pipe_priority_map[q->priority];
-       m->cp_hqd_queue_priority = q->priority;
+       /* m->cp_hqd_queue_priority = q->priority; */
 }
 
 static struct kfd_mem_obj *allocate_mqd(struct mqd_manager *mm,
index 97055f8..0186b3d 100644 (file)
@@ -70,7 +70,7 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
 static void set_priority(struct v10_compute_mqd *m, struct queue_properties *q)
 {
        m->cp_hqd_pipe_priority = pipe_priority_map[q->priority];
-       m->cp_hqd_queue_priority = q->priority;
+       /* m->cp_hqd_queue_priority = q->priority; */
 }
 
 static struct kfd_mem_obj *allocate_mqd(struct mqd_manager *mm,
index 7e5a7ab..c9e3973 100644 (file)
@@ -96,7 +96,7 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
 static void set_priority(struct v11_compute_mqd *m, struct queue_properties *q)
 {
        m->cp_hqd_pipe_priority = pipe_priority_map[q->priority];
-       m->cp_hqd_queue_priority = q->priority;
+       /* m->cp_hqd_queue_priority = q->priority; */
 }
 
 static struct kfd_mem_obj *allocate_mqd(struct mqd_manager *mm,
index a51f217..3bbc264 100644 (file)
@@ -77,7 +77,7 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
 static void set_priority(struct v12_compute_mqd *m, struct queue_properties *q)
 {
        m->cp_hqd_pipe_priority = pipe_priority_map[q->priority];
-       m->cp_hqd_queue_priority = q->priority;
+       /* m->cp_hqd_queue_priority = q->priority; */
 }
 
 static struct kfd_mem_obj *allocate_mqd(struct mqd_manager *mm,
index d0776ba..0d6b601 100644 (file)
@@ -131,7 +131,7 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
 static void set_priority(struct v12_1_compute_mqd *m, struct queue_properties *q)
 {
        m->cp_hqd_pipe_priority = pipe_priority_map[q->priority];
-       m->cp_hqd_queue_priority = q->priority;
+       /* m->cp_hqd_queue_priority = q->priority; */
 }
 
 static struct kfd_mem_obj *allocate_mqd(struct mqd_manager *mm,
index 5578c24..3622d83 100644 (file)
@@ -106,7 +106,7 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
 static void set_priority(struct v9_mqd *m, struct queue_properties *q)
 {
        m->cp_hqd_pipe_priority = pipe_priority_map[q->priority];
-       m->cp_hqd_queue_priority = q->priority;
+       /* m->cp_hqd_queue_priority = q->priority; */
 }
 
 static bool mqd_on_vram(struct amdgpu_device *adev)
index 09483f0..e63ef64 100644 (file)
@@ -73,7 +73,7 @@ static void update_cu_mask(struct mqd_manager *mm, void *mqd,
 static void set_priority(struct vi_mqd *m, struct queue_properties *q)
 {
        m->cp_hqd_pipe_priority = pipe_priority_map[q->priority];
-       m->cp_hqd_queue_priority = q->priority;
+       /* m->cp_hqd_queue_priority = q->priority; */
 }
 
 static struct kfd_mem_obj *allocate_mqd(struct mqd_manager *mm,