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