diff options
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.patch | 72 |
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 + |