]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
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 90ac3a30e81d2f36eea7a388f8675074087b672a..76483d91af98b31d9186245d12fa4ee8373b76cc 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 97055f808d4a1f0e77a47d002a4c6a512075e7ae..0186b3de67c0073e0d16c69e3e1253d1ace851c0 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 7e5a7ab6d0c01f1679fe68afac4c1bf2115be929..c9e3973667824b9bdfd2ee4025c72fed5ad21b40 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 a51f217329db0c5b265c27713fe441f45d83a8df..3bbc2648f51d065569ad49d083bebdfb5f9e3cb6 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 d0776ba2cc999a4f022f62d36678c05c126dc240..0d6b601962eb95ba4c67a01a462d63c88e2ebeb2 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 5578c241b7d0a7ec86145767d1c783e34e67c42f..3622d8392cb327f13354861411d457618d676f6f 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 09483f0862d41beaf32cdd9ea0cabcb69e071fa3..e63ef6442b3588c6df67c2fb9578afc28d5a742f 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,