Am 27.03.2017 um 03:51 schrieb Zhang, Jerry (Junwei):
On 03/24/2017 06:38 PM, Monk Liu wrote:
for SRIOV we cannot use access register when in IRQ routine
with regular KIQ method

Change-Id: Ifae3164cf12311b851ae131f58175f6ec3174f82
Signed-off-by: Monk Liu <[email protected]>
---
  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 24 ++++++++++++++++--------
  1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 51a1919..88221bb 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -138,20 +138,28 @@ static int gmc_v9_0_process_interrupt(struct amdgpu_device *adev,
      addr = (u64)entry->src_data[0] << 12;
      addr |= ((u64)entry->src_data[1] & 0xf) << 44;

-    if (entry->vm_id_src) {
-        status = RREG32(mmhub->vm_l2_pro_fault_status);
-        WREG32_P(mmhub->vm_l2_pro_fault_cntl, 1, ~1);
-    } else {
-        status = RREG32(gfxhub->vm_l2_pro_fault_status);
-        WREG32_P(gfxhub->vm_l2_pro_fault_cntl, 1, ~1);
-    }
+    if (!amdgpu_sriov_vf(adev)) {
+        if (entry->vm_id_src) {
+            status = RREG32(mmhub->vm_l2_pro_fault_status);
+            WREG32_P(mmhub->vm_l2_pro_fault_cntl, 1, ~1);
+        } else {
+            status = RREG32(gfxhub->vm_l2_pro_fault_status);
+            WREG32_P(gfxhub->vm_l2_pro_fault_cntl, 1, ~1);
+        }

Even though SRIOV don't use status info, is it needed to clear vm L2 fault cntl regs?

Actually it is forbidden to clear that register under SRIOV. So the answer is no we shouldn't clear it.


If not,
Reviewed-by: Junwei Zhang <[email protected]>

Reviewed-by: Christian König <[email protected]> as well.

Regards,
Christian.



- DRM_ERROR("[%s]VMC page fault (src_id:%u ring:%u vm_id:%u pas_id:%u) " + DRM_ERROR("[%s]VMC page fault (src_id:%u ring:%u vm_id:%u pas_id:%u) "
            "at page 0x%016llx from %d\n"
            "VM_L2_PROTECTION_FAULT_STATUS:0x%08X\n",
            entry->vm_id_src ? "mmhub" : "gfxhub",
            entry->src_id, entry->ring_id, entry->vm_id, entry->pas_id,
            addr, entry->client_id, status);
+    } else {
+ DRM_ERROR("[%s]VMC page fault (src_id:%u ring:%u vm_id:%u pas_id:%u) "
+          "at page 0x%016llx from %d\n",
+          entry->vm_id_src ? "mmhub" : "gfxhub",
+          entry->src_id, entry->ring_id, entry->vm_id, entry->pas_id,
+          addr, entry->client_id);
+    }

      return 0;
  }

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to