From: Ryan Oliveira <[email protected]>

This patch consolidates vm_fault_interrupt_state handling logic found
in gmc_v10_0.c and gmc_v12_0.c into a shared helper function inside
amdgpu_gmc.c

Since the v10 and v12_0 implementations are identical copies, moving
this to amdgpu_gmc simplifies maintenance and reduces code duplication.

Signed-off-by: Ryan Oliveira <[email protected]>
Co-developed-by: Kaiky Cintra <[email protected]>
Signed-off-by: Kaiky Cintra <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 37 +++++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h |  3 ++
 drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c  | 39 +------------------------
 drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c  | 38 +-----------------------
 4 files changed, 42 insertions(+), 75 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
index 13bec8461cde..eebf5c17efb4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
@@ -590,6 +590,43 @@ int amdgpu_gmc_handle_retry_fault(struct amdgpu_device 
*adev,
        return 0;
 }
 
+int amdgpu_gmc_vm_fault_interrupt_state(struct amdgpu_device *adev,
+                                  struct amdgpu_irq_src *src, unsigned int 
type,
+                                  enum amdgpu_interrupt_state state)
+{
+       switch (state) {
+       case AMDGPU_IRQ_STATE_DISABLE:
+               /* MM HUB */
+               amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_MMHUB0(0), false);
+               /* GFX HUB */
+               /* This works because this interrupt is only
+                * enabled at init/resume and disabled in
+                * fini/suspend, so the overall state doesn't
+                * change over the course of suspend/resume.
+                */
+               if (!adev->in_s0ix)
+                       amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_GFXHUB(0), 
false);
+               break;
+       case AMDGPU_IRQ_STATE_ENABLE:
+               /* MM HUB */
+               amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_MMHUB0(0), true);
+               /* GFX HUB */
+               /* This works because this interrupt is only
+                * enabled at init/resume and disabled in
+                * fini/suspend, so the overall state doesn't
+                * change over the course of suspend/resume.
+                */
+               if (!adev->in_s0ix)
+                       amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_GFXHUB(0), 
true);
+               break;
+       default:
+               break;
+       }
+
+       return 0;
+}
+
+
 int amdgpu_gmc_ras_sw_init(struct amdgpu_device *adev)
 {
        int r;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
index 676e3aaa1f27..386e5f292c4e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
@@ -437,6 +437,9 @@ int amdgpu_gmc_handle_retry_fault(struct amdgpu_device 
*adev,
                                  u32 cam_index,
                                  u32 node_id,
                                  bool write_fault);
+int amdgpu_gmc_vm_fault_interrupt_state(struct amdgpu_device *adev,
+                                  struct amdgpu_irq_src *src, unsigned int 
type,
+                                  enum amdgpu_interrupt_state state);
 int amdgpu_gmc_ras_sw_init(struct amdgpu_device *adev);
 int amdgpu_gmc_ras_late_init(struct amdgpu_device *adev);
 void amdgpu_gmc_ras_fini(struct amdgpu_device *adev);
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
index 8523833a74fb..4aaa3c65e186 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
@@ -59,43 +59,6 @@ static int gmc_v10_0_ecc_interrupt_state(struct 
amdgpu_device *adev,
        return 0;
 }
 
-static int
-gmc_v10_0_vm_fault_interrupt_state(struct amdgpu_device *adev,
-                                  struct amdgpu_irq_src *src, unsigned int 
type,
-                                  enum amdgpu_interrupt_state state)
-{
-       switch (state) {
-       case AMDGPU_IRQ_STATE_DISABLE:
-               /* MM HUB */
-               amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_MMHUB0(0), false);
-               /* GFX HUB */
-               /* This works because this interrupt is only
-                * enabled at init/resume and disabled in
-                * fini/suspend, so the overall state doesn't
-                * change over the course of suspend/resume.
-                */
-               if (!adev->in_s0ix)
-                       amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_GFXHUB(0), 
false);
-               break;
-       case AMDGPU_IRQ_STATE_ENABLE:
-               /* MM HUB */
-               amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_MMHUB0(0), true);
-               /* GFX HUB */
-               /* This works because this interrupt is only
-                * enabled at init/resume and disabled in
-                * fini/suspend, so the overall state doesn't
-                * change over the course of suspend/resume.
-                */
-               if (!adev->in_s0ix)
-                       amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_GFXHUB(0), 
true);
-               break;
-       default:
-               break;
-       }
-
-       return 0;
-}
-
 static int gmc_v10_0_process_interrupt(struct amdgpu_device *adev,
                                       struct amdgpu_irq_src *source,
                                       struct amdgpu_iv_entry *entry)
@@ -168,7 +131,7 @@ static int gmc_v10_0_process_interrupt(struct amdgpu_device 
*adev,
 }
 
 static const struct amdgpu_irq_src_funcs gmc_v10_0_irq_funcs = {
-       .set = gmc_v10_0_vm_fault_interrupt_state,
+       .set = amdgpu_gmc_vm_fault_interrupt_state,
        .process = gmc_v10_0_process_interrupt,
 };
 
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
index 586703ec0dfa..d3eabe3b6dff 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
@@ -53,42 +53,6 @@ static int gmc_v12_0_ecc_interrupt_state(struct 
amdgpu_device *adev,
        return 0;
 }
 
-static int gmc_v12_0_vm_fault_interrupt_state(struct amdgpu_device *adev,
-                                             struct amdgpu_irq_src *src, 
unsigned type,
-                                             enum amdgpu_interrupt_state state)
-{
-       switch (state) {
-       case AMDGPU_IRQ_STATE_DISABLE:
-               /* MM HUB */
-               amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_MMHUB0(0), false);
-               /* GFX HUB */
-               /* This works because this interrupt is only
-                * enabled at init/resume and disabled in
-                * fini/suspend, so the overall state doesn't
-                * change over the course of suspend/resume.
-                */
-               if (!adev->in_s0ix)
-                       amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_GFXHUB(0), 
false);
-               break;
-       case AMDGPU_IRQ_STATE_ENABLE:
-               /* MM HUB */
-               amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_MMHUB0(0), true);
-               /* GFX HUB */
-               /* This works because this interrupt is only
-                * enabled at init/resume and disabled in
-                * fini/suspend, so the overall state doesn't
-                * change over the course of suspend/resume.
-                */
-               if (!adev->in_s0ix)
-                       amdgpu_gmc_set_vm_fault_masks(adev, AMDGPU_GFXHUB(0), 
true);
-               break;
-       default:
-               break;
-       }
-
-       return 0;
-}
-
 static int gmc_v12_0_process_interrupt(struct amdgpu_device *adev,
                                       struct amdgpu_irq_src *source,
                                       struct amdgpu_iv_entry *entry)
@@ -160,7 +124,7 @@ static int gmc_v12_0_process_interrupt(struct amdgpu_device 
*adev,
 }
 
 static const struct amdgpu_irq_src_funcs gmc_v12_0_irq_funcs = {
-       .set = gmc_v12_0_vm_fault_interrupt_state,
+       .set = amdgpu_gmc_vm_fault_interrupt_state,
        .process = gmc_v12_0_process_interrupt,
 };
 
-- 
2.54.0

Reply via email to