diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1572-drm-amdgpu-handle-ras-resume.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1572-drm-amdgpu-handle-ras-resume.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1572-drm-amdgpu-handle-ras-resume.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1572-drm-amdgpu-handle-ras-resume.patch new file mode 100644 index 00000000..835aae02 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1572-drm-amdgpu-handle-ras-resume.patch @@ -0,0 +1,89 @@ +From 838b2edb8e8f0f8c4e091f58cd7cb00663e5a51b Mon Sep 17 00:00:00 2001 +From: xinhui pan <xinhui.pan@amd.com> +Date: Thu, 7 Mar 2019 10:46:54 +0800 +Subject: [PATCH 1572/2940] drm/amdgpu: handle ras resume + +Suspend will put irq, so resume need get irq back. +And in the same time, skip other ras initialization. + +Signed-off-by: xinhui pan <xinhui.pan@amd.com> +Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 5 ++++- + drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 5 ++++- + drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 6 +++++- + 3 files changed, 13 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 fc3399bb9cac..c0e73a27a869 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +@@ -3553,6 +3553,9 @@ static int gfx_v9_0_ecc_late_init(void *handle) + return 0; + } + ++ if (*ras_if) ++ goto resume; ++ + *ras_if = kmalloc(sizeof(**ras_if), GFP_KERNEL); + if (!*ras_if) + return -ENOMEM; +@@ -3577,7 +3580,7 @@ static int gfx_v9_0_ecc_late_init(void *handle) + r = amdgpu_ras_sysfs_create(adev, &fs_info); + if (r) + goto sysfs; +- ++resume: + r = amdgpu_irq_get(adev, &adev->gfx.cp_ecc_error_irq, 0); + if (r) + goto irq; +diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +index a6d35d1faf42..f70081d6ccb5 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +@@ -982,6 +982,9 @@ static int gmc_v9_0_ecc_late_init(void *handle) + amdgpu_ras_feature_enable(adev, &ras_block, 0); + return 0; + } ++ /* handle resume path. */ ++ if (*ras_if) ++ goto resume; + + *ras_if = kmalloc(sizeof(**ras_if), GFP_KERNEL); + if (!*ras_if) +@@ -1007,7 +1010,7 @@ static int gmc_v9_0_ecc_late_init(void *handle) + r = amdgpu_ras_sysfs_create(adev, &fs_info); + if (r) + goto sysfs; +- ++resume: + r = amdgpu_irq_get(adev, &adev->gmc.ecc_irq, 0); + if (r) + goto irq; +diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +index c0e568b68ef6..19b30127c53d 100644 +--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +@@ -1524,6 +1524,10 @@ static int sdma_v4_0_late_init(void *handle) + return 0; + } + ++ /* handle resume path. */ ++ if (*ras_if) ++ goto resume; ++ + *ras_if = kmalloc(sizeof(**ras_if), GFP_KERNEL); + if (!*ras_if) + return -ENOMEM; +@@ -1548,7 +1552,7 @@ static int sdma_v4_0_late_init(void *handle) + r = amdgpu_ras_sysfs_create(adev, &fs_info); + if (r) + goto sysfs; +- ++resume: + r = amdgpu_irq_get(adev, &adev->sdma.ecc_irq, AMDGPU_SDMA_IRQ_ECC0); + if (r) + goto irq; +-- +2.17.1 + |