diff options
author | Hawking Zhang <Hawking.Zhang@amd.com> | 2019-07-17 21:49:53 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-07-31 14:49:28 -0500 |
commit | 939e2258ce4c2e9f5bc3a4f42ca7290a015306c2 (patch) | |
tree | f4b9d0c1dbf5f78f1cf0d344af7de0ac9f5a391a /drivers | |
parent | 5b6b35aaacca95616873db25ad521c6bb5ad39f6 (diff) | |
download | talos-op-linux-939e2258ce4c2e9f5bc3a4f42ca7290a015306c2.tar.gz talos-op-linux-939e2258ce4c2e9f5bc3a4f42ca7290a015306c2.zip |
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>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 3 |
2 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index ff695ceb35bd..3d39d624e9c6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -588,11 +588,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; @@ -986,6 +994,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 19f3d715e2c8..5282c9489c70 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c @@ -245,7 +245,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; } |