diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1934-drm-amdgpu-gfx-handle-ras-resume.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1934-drm-amdgpu-gfx-handle-ras-resume.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1934-drm-amdgpu-gfx-handle-ras-resume.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1934-drm-amdgpu-gfx-handle-ras-resume.patch new file mode 100644 index 00000000..0ceca2b7 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1934-drm-amdgpu-gfx-handle-ras-resume.patch @@ -0,0 +1,51 @@ +From 6406924c7b198dd53859bccb968b0475d808fefd Mon Sep 17 00:00:00 2001 +From: xinhui pan <xinhui.pan@amd.com> +Date: Thu, 9 May 2019 08:58:56 +0800 +Subject: [PATCH 1934/2940] drm/amdgpu: gfx handle ras resume + +During S3/S4 bootloader will re-init ras state behind us. +Resume might fail or raise a gpu reset. + +Signed-off-by: xinhui pan <xinhui.pan@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: James Zhu <James.Zhu@amd.com> +Tested-by: James Zhu <James.Zhu@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +index 09b82ee99342..58c1d883c913 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +@@ -3817,8 +3817,26 @@ static int gfx_v9_0_ecc_late_init(void *handle) + if (r) + return r; + +- if (*ras_if) ++ /* handle resume path. */ ++ if (*ras_if) { ++ /* resend ras TA enable cmd during resume. ++ * prepare to handle failure. ++ */ ++ ih_info.head = **ras_if; ++ r = amdgpu_ras_feature_enable_on_boot(adev, *ras_if, 1); ++ if (r) { ++ if (r == -EAGAIN) { ++ /* request a gpu reset. will run again. */ ++ amdgpu_ras_request_reset_on_boot(adev, ++ AMDGPU_RAS_BLOCK__GFX); ++ return 0; ++ } ++ /* fail to enable ras, cleanup all. */ ++ goto irq; ++ } ++ /* enable successfully. continue. */ + goto resume; ++ } + + *ras_if = kmalloc(sizeof(**ras_if), GFP_KERNEL); + if (!*ras_if) +-- +2.17.1 + |