aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1738-drm-amdgpu-Add-a-check-to-avoid-panic-because-of-une.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1738-drm-amdgpu-Add-a-check-to-avoid-panic-because-of-une.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1738-drm-amdgpu-Add-a-check-to-avoid-panic-because-of-une.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1738-drm-amdgpu-Add-a-check-to-avoid-panic-because-of-une.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1738-drm-amdgpu-Add-a-check-to-avoid-panic-because-of-une.patch
new file mode 100644
index 00000000..6cb544f7
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1738-drm-amdgpu-Add-a-check-to-avoid-panic-because-of-une.patch
@@ -0,0 +1,87 @@
+From ec3f714e0c5acf684b8c3d983a37f90c024bd2b7 Mon Sep 17 00:00:00 2001
+From: xinhui pan <xinhui.pan@amd.com>
+Date: Tue, 9 Apr 2019 16:53:08 +0800
+Subject: [PATCH 1738/2940] drm/amdgpu: Add a check to avoid panic because of
+ unexpected irqs
+
+IP initialize ras in late_init, because of the BUGs of PSP or any
+other components, driver receives unexpected irqs. It is ok to add such
+check anyway.
+
+Signed-off-by: xinhui pan <xinhui.pan@amd.com>
+Reviewed-by: Evan Quan <evan.quan@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 8 +++++++-
+ drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 8 +++++++-
+ drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 8 +++++++-
+ 3 files changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+index 6e208cc04e70..c05754e19beb 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+@@ -4841,10 +4841,16 @@ static int gfx_v9_0_cp_ecc_error_irq(struct amdgpu_device *adev,
+ struct amdgpu_irq_src *source,
+ struct amdgpu_iv_entry *entry)
+ {
++ struct ras_common_if *ras_if = adev->gfx.ras_if;
+ struct ras_dispatch_if ih_data = {
+- .head = *adev->gfx.ras_if,
+ .entry = entry,
+ };
++
++ if (!ras_if)
++ return 0;
++
++ ih_data.head = *ras_if;
++
+ DRM_ERROR("CP ECC ERROR IRQ\n");
+ amdgpu_ras_interrupt_dispatch(adev, &ih_data);
+ return 0;
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+index 841b47b54dde..3927fbb11c0d 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+@@ -247,10 +247,16 @@ static int gmc_v9_0_process_ecc_irq(struct amdgpu_device *adev,
+ struct amdgpu_irq_src *source,
+ struct amdgpu_iv_entry *entry)
+ {
++ struct ras_common_if *ras_if = adev->gmc.ras_if;
+ struct ras_dispatch_if ih_data = {
+- .head = *adev->gmc.ras_if,
+ .entry = entry,
+ };
++
++ if (!ras_if)
++ return 0;
++
++ ih_data.head = *ras_if;
++
+ amdgpu_ras_interrupt_dispatch(adev, &ih_data);
+ return 0;
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+index 55ca603a3511..279e09f610a6 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+@@ -1865,10 +1865,16 @@ static int sdma_v4_0_process_ecc_irq(struct amdgpu_device *adev,
+ struct amdgpu_irq_src *source,
+ struct amdgpu_iv_entry *entry)
+ {
++ struct ras_common_if *ras_if = adev->sdma.ras_if;
+ struct ras_dispatch_if ih_data = {
+- .head = *adev->sdma.ras_if,
+ .entry = entry,
+ };
++
++ if (!ras_if)
++ return 0;
++
++ ih_data.head = *ras_if;
++
+ amdgpu_ras_interrupt_dispatch(adev, &ih_data);
+ return 0;
+ }
+--
+2.17.1
+