From: Mukul Joshi <[email protected]>

Add the UTCL2 retry fault interrupt for both GCVM and MMVM for GFX 12.1.

Signed-off-by: Mukul Joshi <[email protected]>
Reviewed-by: Philip Yang <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c        | 19 +++++++++++++++++--
 .../amd/include/ivsrcid/vmc/irqsrcs_vmc_1_0.h |  2 ++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
index efc519112ac45..1b1e2ddbc600a 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
@@ -656,6 +656,7 @@ static int gmc_v12_0_early_init(struct amdgpu_ip_block 
*ip_block)
        adev->gmc.private_aperture_start = 0x1000000000000000ULL;
        adev->gmc.private_aperture_end =
                adev->gmc.private_aperture_start + (4ULL << 30) - 1;
+       adev->gmc.noretry_flags = AMDGPU_VM_NORETRY_FLAGS_TF;
 
        return 0;
 }
@@ -822,14 +823,28 @@ static int gmc_v12_0_sw_init(struct amdgpu_ip_block 
*ip_block)
        if (r)
                return r;
 
-       if (amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 1, 0))
+       if (amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 1, 0)) {
                r = amdgpu_irq_add_id(adev, SOC21_IH_CLIENTID_UTCL2,
                                      UTCL2_1_0__SRCID__FAULT,
                                      &adev->gmc.vm_fault);
-       else
+               if (r)
+                       return r;
+               /* Add GCVM UTCL2 Retry fault */
+               r = amdgpu_irq_add_id(adev, SOC21_IH_CLIENTID_UTCL2,
+                                     UTCL2_1_0__SRCID__RETRY,
+                                     &adev->gmc.vm_fault);
+               if (r)
+                       return r;
+
+               /* Add MMVM UTCL2 Retry fault */
+               r = amdgpu_irq_add_id(adev, SOC21_IH_CLIENTID_VMC,
+                                     VMC_1_0__SRCID__VM_RETRY,
+                                     &adev->gmc.vm_fault);
+       } else {
                r = amdgpu_irq_add_id(adev, SOC21_IH_CLIENTID_GFX,
                                      UTCL2_1_0__SRCID__FAULT,
                                      &adev->gmc.vm_fault);
+       }
        if (r)
                return r;
 
diff --git a/drivers/gpu/drm/amd/include/ivsrcid/vmc/irqsrcs_vmc_1_0.h 
b/drivers/gpu/drm/amd/include/ivsrcid/vmc/irqsrcs_vmc_1_0.h
index d130936c99890..22075805e95c4 100644
--- a/drivers/gpu/drm/amd/include/ivsrcid/vmc/irqsrcs_vmc_1_0.h
+++ b/drivers/gpu/drm/amd/include/ivsrcid/vmc/irqsrcs_vmc_1_0.h
@@ -28,10 +28,12 @@
 
 
 #define VMC_1_0__SRCID__VM_FAULT                            0
+#define VMC_1_0__SRCID__VM_RETRY                            1
 #define VMC_1_0__SRCID__VM_CONTEXT0_ALL                     256
 #define VMC_1_0__SRCID__VM_CONTEXT1_ALL                     257
 
 #define UTCL2_1_0__SRCID__FAULT                             0       /* UTC L2 
has encountered a fault or retry scenario */
+#define UTCL2_1_0__SRCID__RETRY                             1       /* UTC L2 
has encountered a retry scenario (GFX12.1) */
 
 
 #endif /* __IRQSRCS_VMC_1_0_H__ */
-- 
2.51.1

Reply via email to