aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3202-drm-amdgpu-querry-umc-error-count.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3202-drm-amdgpu-querry-umc-error-count.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3202-drm-amdgpu-querry-umc-error-count.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3202-drm-amdgpu-querry-umc-error-count.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3202-drm-amdgpu-querry-umc-error-count.patch
new file mode 100644
index 00000000..85278b11
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3202-drm-amdgpu-querry-umc-error-count.patch
@@ -0,0 +1,66 @@
+From c7ba5637701bc3b4cc193988913c5528a80dc392 Mon Sep 17 00:00:00 2001
+From: Hawking Zhang <Hawking.Zhang@amd.com>
+Date: Wed, 17 Jul 2019 21:49:53 +0800
+Subject: [PATCH 3202/4256] drm/amdgpu: querry umc error count
+
+check umc error count in both ras querry function and
+ras interrupt handler
+
+Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Reviewed-by: Dennis Li <dennis.li@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 11 ++++++++++-
+ drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 3 +++
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+index 3be306bf1603..845e75f35b19 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+@@ -586,11 +586,19 @@ int amdgpu_ras_error_query(struct amdgpu_device *adev,
+ struct ras_query_if *info)
+ {
+ struct ras_manager *obj = amdgpu_ras_find_obj(adev, &info->head);
++ struct ras_err_data err_data = {0, 0};
+
+ if (!obj)
+ return -EINVAL;
+- /* TODO might read the register to read the count */
+
++ switch (info->head.block) {
++ case AMDGPU_RAS_BLOCK__UMC:
++ if (adev->umc_funcs->query_ras_error_count)
++ adev->umc_funcs->query_ras_error_count(adev, &err_data);
++ break;
++ default:
++ break;
++ }
+ info->ue_count = obj->err_data.ue_count;
+ info->ce_count = obj->err_data.ce_count;
+
+@@ -984,6 +992,7 @@ static void amdgpu_ras_interrupt_handler(struct ras_manager *obj)
+ struct ras_ih_data *data = &obj->ih_data;
+ struct amdgpu_iv_entry entry;
+ int ret;
++ struct ras_err_data err_data = {0, 0};
+
+ while (data->rptr != data->wptr) {
+ rmb();
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+index ac5a6bf477cb..fe22eb40d384 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+@@ -241,7 +241,10 @@ static int gmc_v9_0_ecc_interrupt_state(struct amdgpu_device *adev,
+ static int gmc_v9_0_process_ras_data_cb(struct amdgpu_device *adev,
+ struct amdgpu_iv_entry *entry)
+ {
++ struct ras_err_data err_data = {0, 0};
+ kgd2kfd_set_sram_ecc_flag(adev->kfd.dev);
++ if (adev->umc_funcs->query_ras_error_count)
++ adev->umc_funcs->query_ras_error_count(adev, &err_data);
+ amdgpu_ras_reset_gpu(adev, 0);
+ return AMDGPU_RAS_UE;
+ }
+--
+2.17.1
+