diff options
-rw-r--r-- | src/soc/amd/cezanne/Makefile.inc | 1 | ||||
-rw-r--r-- | src/soc/amd/cezanne/cpu.c | 1 | ||||
-rw-r--r-- | src/soc/amd/cezanne/include/soc/cpu.h | 2 | ||||
-rw-r--r-- | src/soc/amd/cezanne/mca.c | 14 |
4 files changed, 18 insertions, 0 deletions
diff --git a/src/soc/amd/cezanne/Makefile.inc b/src/soc/amd/cezanne/Makefile.inc index fa38cc3785..d68a6b6290 100644 --- a/src/soc/amd/cezanne/Makefile.inc +++ b/src/soc/amd/cezanne/Makefile.inc @@ -39,6 +39,7 @@ ramstage-y += data_fabric.c ramstage-y += fch.c ramstage-y += fsp_s_params.c ramstage-y += gpio.c +ramstage-y += mca.c ramstage-y += reset.c ramstage-y += root_complex.c ramstage-y += uart.c diff --git a/src/soc/amd/cezanne/cpu.c b/src/soc/amd/cezanne/cpu.c index ddc49a957c..5f0a5a1a2a 100644 --- a/src/soc/amd/cezanne/cpu.c +++ b/src/soc/amd/cezanne/cpu.c @@ -59,6 +59,7 @@ void mp_init_cpus(struct bus *cpu_bus) static void zen_2_3_init(struct device *dev) { + check_mca(); setup_lapic(); set_cstate_io_addr(); diff --git a/src/soc/amd/cezanne/include/soc/cpu.h b/src/soc/amd/cezanne/include/soc/cpu.h index 27647adbd1..ec83349a11 100644 --- a/src/soc/amd/cezanne/include/soc/cpu.h +++ b/src/soc/amd/cezanne/include/soc/cpu.h @@ -5,4 +5,6 @@ #define CEZANNE_A0_CPUID 0x00a50f00 +void check_mca(void); + #endif /* AMD_CEZANNE_CPU_H */ diff --git a/src/soc/amd/cezanne/mca.c b/src/soc/amd/cezanne/mca.c new file mode 100644 index 0000000000..7160256539 --- /dev/null +++ b/src/soc/amd/cezanne/mca.c @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include <cpu/x86/msr.h> +#include <soc/cpu.h> + +/* Check the Machine Check Architecture Extension registers */ +void check_mca(void) +{ + /* TODO: Implement MCAX register checking and BERT table generation. */ + + /* mca_clear_status uses the MCA registers and not the MCAX ones. Since they are + aliases, we can use either set of registers. */ + mca_clear_status(); +} |