aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1572-drm-amdgpu-handle-ras-resume.patch
diff options
context:
space:
mode:
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.patch89
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
+