diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/drivers/intel/fsp2_0/Kconfig | 21 | ||||
-rw-r--r-- | src/drivers/intel/fsp2_0/save_mrc_data.c | 2 | ||||
-rw-r--r-- | src/soc/intel/xeon_sp/spr/Kconfig | 2 |
3 files changed, 19 insertions, 6 deletions
diff --git a/src/drivers/intel/fsp2_0/Kconfig b/src/drivers/intel/fsp2_0/Kconfig index f5399ea92c..ca17bc7c60 100644 --- a/src/drivers/intel/fsp2_0/Kconfig +++ b/src/drivers/intel/fsp2_0/Kconfig @@ -410,13 +410,26 @@ config FSP_ENABLE_SERIAL_DEBUG coreboot native debug driver when coreboot has integrated the debug FSP binaries. coreboot disables serial messages when this config is not enabled. -config SAVE_MRC_AFTER_FSPS +config FSP_NVS_DATA_POST_SILICON_INIT bool default n - depends on XEON_SP_COMMON_BASE help - Save MRC training data after FSP-S. Select this on platforms that generate MRC - cache HOB data as part of FSP-S rather than FSP-M. + Select this config to enable the workaround for Intel SoC platforms that + do not adhere to the FSP 2.x specification requirement, where the FSP + Silicon Init API produces Non-Volatile Storage (NVS) data instead of the + FSP-Memory Init API. + + According to the FSP 2.x specification (section 11.3), the FSP populates the + NVS data using the FSP_NON_VOLATILE_STORAGE_HOB and expects the boot firmware + to parse the FSP_NON_VOLATILE_STORAGE_HOB after the FspMemoryInit() API in API + mode. + + However, not all Intel SoC platforms that support the FSP 2.x specification + adhere to this requirement. For example, the FSP binary for XEON SP platform + produces NVS data (aka FSP_NON_VOLATILE_STORAGE_HOB) after the FspSiliconInit() + API. Therefore, attempting to locate NVS data after the FspMemoryInit() API on + these platforms would result in an error. Use this config to find the NVS data + and store it in Non-Volatile Storage after the FspSiliconInit() API. config FSP_MULTIPHASE_SI_INIT_RETURN_BROKEN bool diff --git a/src/drivers/intel/fsp2_0/save_mrc_data.c b/src/drivers/intel/fsp2_0/save_mrc_data.c index 19e8a52cff..1d682b99c2 100644 --- a/src/drivers/intel/fsp2_0/save_mrc_data.c +++ b/src/drivers/intel/fsp2_0/save_mrc_data.c @@ -46,7 +46,7 @@ static void save_mrc_data(void *unused) * Should be done before ramstage_cse_fw_sync() to avoid traning memory twice on * a cold boot after a full firmware update. */ -#if CONFIG(SAVE_MRC_AFTER_FSPS) +#if CONFIG(FSP_NVS_DATA_POST_SILICON_INIT) BOOT_STATE_INIT_ENTRY(BS_DEV_INIT_CHIPS, BS_ON_EXIT, save_mrc_data, NULL); #else BOOT_STATE_INIT_ENTRY(BS_PRE_DEVICE, BS_ON_ENTRY, save_mrc_data, NULL); diff --git a/src/soc/intel/xeon_sp/spr/Kconfig b/src/soc/intel/xeon_sp/spr/Kconfig index 9c19f3b1cc..dac093f9d2 100644 --- a/src/soc/intel/xeon_sp/spr/Kconfig +++ b/src/soc/intel/xeon_sp/spr/Kconfig @@ -2,8 +2,8 @@ config SOC_INTEL_SAPPHIRERAPIDS_SP bool + select FSP_NVS_DATA_POST_SILICON_INIT select MICROCODE_BLOB_NOT_HOOKED_UP - select SAVE_MRC_AFTER_FSPS select SOC_INTEL_MEM_MAPPED_PM_CONFIGURATION select DISABLE_ACPI_HIBERNATE select DEFAULT_X2APIC_RUNTIME |