1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <amdblocks/mca.h> 4 #include <cper.h> 5 #include <types.h> 6 #include "mca_common_defs.h" 7 error_to_chktype(struct mca_bank_status * mci)8enum cper_x86_check_type error_to_chktype(struct mca_bank_status *mci) 9 { 10 int error = mca_err_type(mci->sts); 11 12 if (error == MCA_ERRTYPE_BUS) 13 return X86_PROCESSOR_BUS_CHK; 14 if (error == MCA_ERRTYPE_INT) 15 return X86_PROCESSOR_MS_CHK; 16 if (error == MCA_ERRTYPE_MEM) 17 return X86_PROCESSOR_CACHE_CHK; 18 if (error == MCA_ERRTYPE_TLB) 19 return X86_PROCESSOR_TLB_CHK; 20 21 return X86_PROCESSOR_MS_CHK; /* unrecognized */ 22 } 23 24 /* Fill additional information in the Generic Processor Error Section. */ fill_generic_section(cper_proc_generic_error_section_t * sec,struct mca_bank_status * mci)25void fill_generic_section(cper_proc_generic_error_section_t *sec, 26 struct mca_bank_status *mci) 27 { 28 int type = mca_err_type(mci->sts); 29 30 if (type == MCA_ERRTYPE_BUS) /* try to map MCA errors to CPER types */ 31 sec->error_type = GENPROC_ERRTYPE_BUS; 32 else if (type == MCA_ERRTYPE_INT) 33 sec->error_type = GENPROC_ERRTYPE_UARCH; 34 else if (type == MCA_ERRTYPE_MEM) 35 sec->error_type = GENPROC_ERRTYPE_CACHE; 36 else if (type == MCA_ERRTYPE_TLB) 37 sec->error_type = GENPROC_ERRTYPE_TLB; 38 else 39 sec->error_type = GENPROC_ERRTYPE_UNKNOWN; 40 sec->validation |= GENPROC_VALID_PROC_ERR_TYPE; 41 } 42