[AMD Official Use Only - General]

Reviewed-by: Hawking Zhang <[email protected]>

Regards,
Hawking
-----Original Message-----
From: amd-gfx <[email protected]> On Behalf Of Lijo Lazar
Sent: Monday, May 29, 2023 21:58
To: [email protected]
Cc: Deucher, Alexander <[email protected]>; Joshi, Mukul 
<[email protected]>; Zhang, Hawking <[email protected]>
Subject: [PATCH] drm/amdkfd: Fix MEC pipe interrupt enablement

for_each_inst modifies xcc_mask and therefore the loop doesn't initialize 
properly interrupts on all pipes. Keep looping through xcc as the outer loop to 
fix this issue.

Fixes: 7b04c90a48b1 ("drm/amdkfd: Use xcc mask for identifying xcc")

Signed-off-by: Lijo Lazar <[email protected]>
---
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
index 493b4b66f180..80cddb46657f 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -1274,11 +1274,12 @@ static void init_interrupts(struct device_queue_manager 
*dqm)
        uint32_t xcc_mask = dqm->dev->xcc_mask;
        unsigned int i, xcc_id;

-       for (i = 0 ; i < get_pipes_per_mec(dqm) ; i++) {
-               if (is_pipe_enabled(dqm, 0, i)) {
-                       for_each_inst(xcc_id, xcc_mask)
+       for_each_inst(xcc_id, xcc_mask) {
+               for (i = 0 ; i < get_pipes_per_mec(dqm) ; i++) {
+                       if (is_pipe_enabled(dqm, 0, i)) {
                                dqm->dev->kfd2kgd->init_interrupts(
                                        dqm->dev->adev, i, xcc_id);
+                       }
                }
        }
 }
--
2.25.1

Reply via email to