aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3686-drm-amdgpu-poll-ras_controller_irq-and-err_event_ath.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3686-drm-amdgpu-poll-ras_controller_irq-and-err_event_ath.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3686-drm-amdgpu-poll-ras_controller_irq-and-err_event_ath.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3686-drm-amdgpu-poll-ras_controller_irq-and-err_event_ath.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3686-drm-amdgpu-poll-ras_controller_irq-and-err_event_ath.patch
new file mode 100644
index 00000000..865d3cca
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3686-drm-amdgpu-poll-ras_controller_irq-and-err_event_ath.patch
@@ -0,0 +1,43 @@
+From 9b0c90f7dc3033925e84fa61b04bd66d177e5678 Mon Sep 17 00:00:00 2001
+From: Hawking Zhang <Hawking.Zhang@amd.com>
+Date: Wed, 5 Jun 2019 14:40:57 +0800
+Subject: [PATCH 3686/4256] drm/amdgpu: poll ras_controller_irq and
+ err_event_athub_irq status
+
+For the hardware that can not enable BIF ring for IH cookies for both
+ras_controller_irq and err_event_athub_irq, the driver has to poll the
+status register in irq handling and ack the hardware properly when there
+is interrupt triggered
+
+Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+index 8175a248cf69..f89c81e66ebb 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+@@ -150,6 +150,18 @@ irqreturn_t amdgpu_irq_handler(int irq, void *arg)
+ ret = amdgpu_ih_process(adev, &adev->irq.ih);
+ if (ret == IRQ_HANDLED)
+ pm_runtime_mark_last_busy(dev->dev);
++
++ /* For the hardware that cannot enable bif ring for both ras_controller_irq
++ * and ras_err_evnet_athub_irq ih cookies, the driver has to poll status
++ * register to check whether the interrupt is triggered or not, and properly
++ * ack the interrupt if it is there
++ */
++ if (adev->nbio.funcs->handle_ras_controller_intr_no_bifring)
++ adev->nbio.funcs->handle_ras_controller_intr_no_bifring(adev);
++
++ if (adev->nbio.funcs->handle_ras_err_event_athub_intr_no_bifring)
++ adev->nbio.funcs->handle_ras_err_event_athub_intr_no_bifring(adev);
++
+ return ret;
+ }
+
+--
+2.17.1
+