diff options
author | Yang Wang <kevinyang.wang@amd.com> | 2024-02-21 14:36:13 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2024-03-20 13:38:15 -0400 |
commit | b93d759f540a3d3145b985bbbdbeb98b22862df0 (patch) | |
tree | a8912a1ec966e2cae2658a04e29fe06505014b37 /drivers/gpu/drm/amd/amdgpu/umc_v12_0.c | |
parent | 865d3397630b806f2df156e2143cdfa416db1e01 (diff) |
drm/amdgpu: add umc v12.0.0 deferred error support
add umc v12.0.0 deferred error support.
Signed-off-by: Yang Wang <kevinyang.wang@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/umc_v12_0.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/umc_v12_0.c | 37 |
1 files changed, 13 insertions, 24 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/umc_v12_0.c b/drivers/gpu/drm/amd/amdgpu/umc_v12_0.c index e2e18ccbbc62..d29ea2fde025 100644 --- a/drivers/gpu/drm/amd/amdgpu/umc_v12_0.c +++ b/drivers/gpu/drm/amd/amdgpu/umc_v12_0.c @@ -509,36 +509,25 @@ static int umc_v12_0_aca_bank_parser(struct aca_handle *handle, struct aca_bank { struct amdgpu_device *adev = handle->adev; struct aca_bank_info info; + enum aca_error_type err_type; u64 status; int ret; + status = bank->regs[ACA_REG_IDX_STATUS]; + if (umc_v12_0_is_deferred_error(adev, status)) + err_type = ACA_ERROR_TYPE_DEFERRED; + else if (umc_v12_0_is_uncorrectable_error(adev, status)) + err_type = ACA_ERROR_TYPE_UE; + else if (umc_v12_0_is_correctable_error(adev, status)) + err_type = ACA_ERROR_TYPE_CE; + else + return 0; + ret = aca_bank_info_decode(bank, &info); if (ret) return ret; - status = bank->regs[ACA_REG_IDX_STATUS]; - switch (type) { - case ACA_SMU_TYPE_UE: - if (umc_v12_0_is_uncorrectable_error(adev, status)) { - ret = aca_error_cache_log_bank_error(handle, &info, ACA_ERROR_TYPE_UE, - 1ULL); - if (ret) - return ret; - } - break; - case ACA_SMU_TYPE_CE: - if (umc_v12_0_is_correctable_error(adev, status)) { - ret = aca_error_cache_log_bank_error(handle, &info, ACA_ERROR_TYPE_UE, - 1ULL); - if (ret) - return ret; - } - break; - default: - return -EINVAL; - } - - return 0; + return aca_error_cache_log_bank_error(handle, &info, err_type, 1ULL); } static const struct aca_bank_ops umc_v12_0_aca_bank_ops = { @@ -547,7 +536,7 @@ static const struct aca_bank_ops umc_v12_0_aca_bank_ops = { const struct aca_info umc_v12_0_aca_info = { .hwip = ACA_HWIP_TYPE_UMC, - .mask = ACA_ERROR_UE_MASK | ACA_ERROR_CE_MASK, + .mask = ACA_ERROR_UE_MASK | ACA_ERROR_CE_MASK | ACA_ERROR_DEFERRED_MASK, .bank_ops = &umc_v12_0_aca_bank_ops, }; |