aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0568-drm-amdgpu-only-print-meaningful-VM-faults.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0568-drm-amdgpu-only-print-meaningful-VM-faults.patch')
-rw-r--r--meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0568-drm-amdgpu-only-print-meaningful-VM-faults.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0568-drm-amdgpu-only-print-meaningful-VM-faults.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0568-drm-amdgpu-only-print-meaningful-VM-faults.patch
new file mode 100644
index 00000000..be973483
--- /dev/null
+++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0568-drm-amdgpu-only-print-meaningful-VM-faults.patch
@@ -0,0 +1,72 @@
+From 3e4e3805643445b71b7ee1b84892e43d004e24e2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Thu, 10 Sep 2015 15:00:39 +0200
+Subject: [PATCH 0568/1050] drm/amdgpu: only print meaningful VM faults
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Port of radeon commit 9b7d786b900baf7c0d1a7e211570aef1cb27590f.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 8 ++++++--
+ drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 8 ++++++--
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+index 774528a..fab5471 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+@@ -1262,6 +1262,12 @@ static int gmc_v7_0_process_interrupt(struct amdgpu_device *adev,
+ addr = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_ADDR);
+ status = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_STATUS);
+ mc_client = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_MCCLIENT);
++ /* reset addr and status */
++ WREG32_P(mmVM_CONTEXT1_CNTL2, 1, ~1);
++
++ if (!addr && !status)
++ return 0;
++
+ dev_err(adev->dev, "GPU fault detected: %d 0x%08x\n",
+ entry->src_id, entry->src_data);
+ dev_err(adev->dev, " VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x%08X\n",
+@@ -1269,8 +1275,6 @@ static int gmc_v7_0_process_interrupt(struct amdgpu_device *adev,
+ dev_err(adev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n",
+ status);
+ gmc_v7_0_vm_decode_fault(adev, status, addr, mc_client);
+- /* reset addr and status */
+- WREG32_P(mmVM_CONTEXT1_CNTL2, 1, ~1);
+
+ return 0;
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+index 9a07742..7bc9e9f 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+@@ -1262,6 +1262,12 @@ static int gmc_v8_0_process_interrupt(struct amdgpu_device *adev,
+ addr = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_ADDR);
+ status = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_STATUS);
+ mc_client = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_MCCLIENT);
++ /* reset addr and status */
++ WREG32_P(mmVM_CONTEXT1_CNTL2, 1, ~1);
++
++ if (!addr && !status)
++ return 0;
++
+ dev_err(adev->dev, "GPU fault detected: %d 0x%08x\n",
+ entry->src_id, entry->src_data);
+ dev_err(adev->dev, " VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x%08X\n",
+@@ -1269,8 +1275,6 @@ static int gmc_v8_0_process_interrupt(struct amdgpu_device *adev,
+ dev_err(adev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n",
+ status);
+ gmc_v8_0_vm_decode_fault(adev, status, addr, mc_client);
+- /* reset addr and status */
+- WREG32_P(mmVM_CONTEXT1_CNTL2, 1, ~1);
+
+ return 0;
+ }
+--
+1.9.1
+