soc/amd: factor out check_mca to common code
Change-Id: I139d1fe41bad5213da8890c2867f275b6847e3e1 Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/56281 Reviewed-by: Martin Roth <martinroth@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
dc970fc039
commit
1e1d490ff8
|
@ -50,6 +50,7 @@ config SOC_SPECIFIC_OPTIONS
|
|||
select SOC_AMD_COMMON_BLOCK_IOMMU
|
||||
select SOC_AMD_COMMON_BLOCK_LPC
|
||||
select SOC_AMD_COMMON_BLOCK_LPC_SPI_DMA
|
||||
select SOC_AMD_COMMON_BLOCK_MCAX
|
||||
select SOC_AMD_COMMON_BLOCK_NONCAR
|
||||
select SOC_AMD_COMMON_BLOCK_PCI
|
||||
select SOC_AMD_COMMON_BLOCK_PCI_MMCONF
|
||||
|
|
|
@ -1,18 +1,8 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <amdblocks/mca.h>
|
||||
#include <cpu/x86/msr.h>
|
||||
|
||||
static void mca_check_all_banks(void)
|
||||
void mca_check_all_banks(void)
|
||||
{
|
||||
/* TODO: Implement MCAX register checking and BERT table generation. */
|
||||
}
|
||||
|
||||
/* Check the Machine Check Architecture Extension registers */
|
||||
void check_mca(void)
|
||||
{
|
||||
mca_check_all_banks();
|
||||
/* 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();
|
||||
}
|
||||
|
|
|
@ -26,6 +26,26 @@ config MEMLAYOUT_LD_FILE
|
|||
|
||||
endif # SOC_AMD_COMMON_BLOCK_NONCAR
|
||||
|
||||
config SOC_AMD_COMMON_BLOCK_MCA_COMMON
|
||||
bool
|
||||
help
|
||||
Add common machine check architecture support. Do not select this
|
||||
in the SoC's Kconfig; select either SOC_AMD_COMMON_BLOCK_MCA or
|
||||
SOC_AMD_COMMON_BLOCK_MCAX which will select this one.
|
||||
|
||||
config SOC_AMD_COMMON_BLOCK_MCA
|
||||
bool
|
||||
select SOC_AMD_COMMON_BLOCK_MCA_COMMON
|
||||
help
|
||||
Add IA32 machine check architecture (MCA) support for pre-Zen CPUs.
|
||||
|
||||
config SOC_AMD_COMMON_BLOCK_MCAX
|
||||
bool
|
||||
select SOC_AMD_COMMON_BLOCK_MCA_COMMON
|
||||
help
|
||||
Add extended machine check architecture (MCAX) support for AMD family
|
||||
17h, 19h and possibly newer CPUs.
|
||||
|
||||
config SOC_AMD_COMMON_BLOCK_SMM
|
||||
bool
|
||||
help
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
ramstage-$(CONFIG_SOC_AMD_COMMON_BLOCK_MCA_COMMON) += mca_common.c
|
|
@ -0,0 +1,12 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <amdblocks/mca.h>
|
||||
#include <cpu/x86/msr.h>
|
||||
|
||||
void check_mca(void)
|
||||
{
|
||||
mca_check_all_banks();
|
||||
/* mca_clear_status uses the MCA registers which can be used in both the MCA and MCAX
|
||||
case */
|
||||
mca_clear_status();
|
||||
}
|
|
@ -4,5 +4,6 @@
|
|||
#define AMD_BLOCK_MCA_H
|
||||
|
||||
void check_mca(void);
|
||||
void mca_check_all_banks(void);
|
||||
|
||||
#endif /* AMD_BLOCK_MCA_H */
|
||||
|
|
|
@ -41,6 +41,7 @@ config CPU_SPECIFIC_OPTIONS
|
|||
select SOC_AMD_COMMON_BLOCK_I2C
|
||||
select SOC_AMD_COMMON_BLOCK_IOMMU
|
||||
select SOC_AMD_COMMON_BLOCK_LPC
|
||||
select SOC_AMD_COMMON_BLOCK_MCAX
|
||||
select SOC_AMD_COMMON_BLOCK_NONCAR
|
||||
select SOC_AMD_COMMON_BLOCK_PCI
|
||||
select SOC_AMD_COMMON_BLOCK_PCIE_GPP_DRIVER
|
||||
|
|
|
@ -192,7 +192,7 @@ static void mca_print_error(unsigned int bank)
|
|||
printk(BIOS_WARNING, " MC%u_CTL_MASK = %08x_%08x\n", bank, msr.hi, msr.lo);
|
||||
}
|
||||
|
||||
static void mca_check_all_banks(void)
|
||||
void mca_check_all_banks(void)
|
||||
{
|
||||
struct mca_bank_status mci;
|
||||
const unsigned int num_banks = mca_get_bank_count();
|
||||
|
@ -214,12 +214,3 @@ static void mca_check_all_banks(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Check the Machine Check Architecture Extension registers */
|
||||
void check_mca(void)
|
||||
{
|
||||
mca_check_all_banks();
|
||||
/* 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();
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ config CPU_SPECIFIC_OPTIONS
|
|||
select SOC_AMD_COMMON_BLOCK_I2C
|
||||
select SOC_AMD_COMMON_BLOCK_IOMMU
|
||||
select SOC_AMD_COMMON_BLOCK_LPC
|
||||
select SOC_AMD_COMMON_BLOCK_MCA
|
||||
select SOC_AMD_COMMON_BLOCK_PCI
|
||||
select SOC_AMD_COMMON_BLOCK_PI
|
||||
select SOC_AMD_COMMON_BLOCK_PM
|
||||
|
|
|
@ -179,7 +179,7 @@ static void mca_print_error(unsigned int bank)
|
|||
printk(BIOS_WARNING, " MC%u_CTL_MASK = %08x_%08x\n", bank, msr.hi, msr.lo);
|
||||
}
|
||||
|
||||
static void mca_check_all_banks(void)
|
||||
void mca_check_all_banks(void)
|
||||
{
|
||||
struct mca_bank_status mci;
|
||||
const unsigned int num_banks = mca_get_bank_count();
|
||||
|
@ -201,9 +201,3 @@ static void mca_check_all_banks(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void check_mca(void)
|
||||
{
|
||||
mca_check_all_banks();
|
||||
mca_clear_status();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue