Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: Parse all deferred errors with UMC aca handle

We should only increase the deferred errors in UMC block.

Signed-off-by: Xiang Liu <xiang.liu@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Xiang Liu and committed by
Alex Deucher
aedc92be cc11dffc

+14 -19
+4
drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c
··· 195 195 { 196 196 const struct aca_bank_ops *bank_ops = handle->bank_ops; 197 197 198 + /* Parse all deferred errors with UMC aca handle */ 199 + if (ACA_BANK_ERR_IS_DEFFERED(bank)) 200 + return handle->hwip == ACA_HWIP_TYPE_UMC; 201 + 198 202 if (!aca_bank_hwip_is_matched(bank, handle->hwip)) 199 203 return false; 200 204
-8
drivers/gpu/drm/amd/amdgpu/amdgpu_aca.h
··· 80 80 (ACA_REG__STATUS__POISON((bank)->regs[ACA_REG_IDX_STATUS]) || \ 81 81 ACA_REG__STATUS__DEFERRED((bank)->regs[ACA_REG_IDX_STATUS])) 82 82 83 - #define ACA_BANK_ERR_CE_DE_DECODE(bank) \ 84 - (ACA_BANK_ERR_IS_DEFFERED(bank) ? ACA_ERROR_TYPE_DEFERRED : \ 85 - ACA_ERROR_TYPE_CE) 86 - 87 - #define ACA_BANK_ERR_UE_DE_DECODE(bank) \ 88 - (ACA_BANK_ERR_IS_DEFFERED(bank) ? ACA_ERROR_TYPE_DEFERRED : \ 89 - ACA_ERROR_TYPE_UE) 90 - 91 83 enum aca_reg_idx { 92 84 ACA_REG_IDX_CTL = 0, 93 85 ACA_REG_IDX_STATUS = 1,
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
··· 1172 1172 break; 1173 1173 case ACA_SMU_TYPE_CE: 1174 1174 count = ext_error_code == 6 ? count : 0ULL; 1175 - bank->aca_err_type = ACA_BANK_ERR_CE_DE_DECODE(bank); 1175 + bank->aca_err_type = ACA_ERROR_TYPE_CE; 1176 1176 ret = aca_error_cache_log_bank_error(handle, &info, bank->aca_err_type, count); 1177 1177 break; 1178 1178 default:
+3 -5
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c
··· 867 867 868 868 switch (type) { 869 869 case ACA_SMU_TYPE_UE: 870 - bank->aca_err_type = ACA_BANK_ERR_UE_DE_DECODE(bank); 870 + bank->aca_err_type = ACA_ERROR_TYPE_UE; 871 871 ret = aca_error_cache_log_bank_error(handle, &info, bank->aca_err_type, 1ULL); 872 872 break; 873 873 case ACA_SMU_TYPE_CE: 874 - bank->aca_err_type = ACA_BANK_ERR_CE_DE_DECODE(bank); 874 + bank->aca_err_type = ACA_ERROR_TYPE_CE; 875 875 ret = aca_error_cache_log_bank_error(handle, &info, bank->aca_err_type, 876 - (bank->aca_err_type == ACA_ERROR_TYPE_CE) ? 877 - ACA_REG__MISC0__ERRCNT(misc0) : 878 - 1); 876 + ACA_REG__MISC0__ERRCNT(misc0)); 879 877 break; 880 878 default: 881 879 return -EINVAL;
+1 -1
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c
··· 1328 1328 1ULL); 1329 1329 break; 1330 1330 case ACA_SMU_TYPE_CE: 1331 - bank->aca_err_type = ACA_BANK_ERR_CE_DE_DECODE(bank); 1331 + bank->aca_err_type = ACA_ERROR_TYPE_CE; 1332 1332 ret = aca_error_cache_log_bank_error(handle, &info, bank->aca_err_type, 1333 1333 ACA_REG__MISC0__ERRCNT(misc0)); 1334 1334 break;
+1 -1
drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.c
··· 751 751 1ULL); 752 752 break; 753 753 case ACA_SMU_TYPE_CE: 754 - bank->aca_err_type = ACA_BANK_ERR_CE_DE_DECODE(bank); 754 + bank->aca_err_type = ACA_ERROR_TYPE_CE; 755 755 ret = aca_error_cache_log_bank_error(handle, &info, bank->aca_err_type, 756 756 ACA_REG__MISC0__ERRCNT(misc0)); 757 757 break;
+1 -1
drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
··· 2595 2595 1ULL); 2596 2596 break; 2597 2597 case ACA_SMU_TYPE_CE: 2598 - bank->aca_err_type = ACA_BANK_ERR_CE_DE_DECODE(bank); 2598 + bank->aca_err_type = ACA_ERROR_TYPE_CE; 2599 2599 ret = aca_error_cache_log_bank_error(handle, &info, bank->aca_err_type, 2600 2600 ACA_REG__MISC0__ERRCNT(misc0)); 2601 2601 break;
+2 -1
drivers/gpu/drm/amd/amdgpu/umc_v12_0.c
··· 85 85 86 86 return (amdgpu_ras_is_poison_mode_supported(adev) && 87 87 (REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, Val) == 1) && 88 - (REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, Deferred) == 1)); 88 + ((REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, Deferred) == 1) || 89 + (REG_GET_FIELD(mc_umc_status, MCA_UMC_UMC0_MCUMC_STATUST0, Poison) == 1))); 89 90 } 90 91 91 92 bool umc_v12_0_is_uncorrectable_error(struct amdgpu_device *adev, uint64_t mc_umc_status)
+1 -1
drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c
··· 1965 1965 1ULL); 1966 1966 break; 1967 1967 case ACA_SMU_TYPE_CE: 1968 - bank->aca_err_type = ACA_BANK_ERR_CE_DE_DECODE(bank); 1968 + bank->aca_err_type = ACA_ERROR_TYPE_CE; 1969 1969 ret = aca_error_cache_log_bank_error(handle, &info, bank->aca_err_type, 1970 1970 ACA_REG__MISC0__ERRCNT(misc0)); 1971 1971 break;