[coreboot-gerrit] Patch set updated for coreboot: drivers/intel/fsp2_0: Allow use of MRC cache data in recovery
Andrey Petrov (andrey.petrov@intel.com)
gerrit at coreboot.org
Thu Oct 27 21:03:40 CEST 2016
Andrey Petrov (andrey.petrov at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17165
-gerrit
commit 244f85bfb7aea053092a722a2b2818cf03719408
Author: Andrey Petrov <andrey.petrov at intel.com>
Date: Thu Oct 27 10:12:22 2016 -0700
drivers/intel/fsp2_0: Allow use of MRC cache data in recovery
Add a configuration option to allow using MRC cache in recovery
boot, off by default. This can be overridden by Chrome EC if it
requests retrain.
BUG=chrome-os-partner:56643
BRANCH=none
TEST=invoke power-alt-refresh key combination, notice memory is retrained
in recovery
Change-Id: I31a87afc8a70c17e488c06e42da4acbb2dde3f5d
Signed-off-by: Andrey Petrov <andrey.petrov at intel.com>
---
src/drivers/intel/fsp2_0/Kconfig | 7 +++++++
src/drivers/intel/fsp2_0/memory_init.c | 9 +++++++--
src/soc/intel/apollolake/Kconfig | 1 +
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/drivers/intel/fsp2_0/Kconfig b/src/drivers/intel/fsp2_0/Kconfig
index c653148..75e3901 100644
--- a/src/drivers/intel/fsp2_0/Kconfig
+++ b/src/drivers/intel/fsp2_0/Kconfig
@@ -94,4 +94,11 @@ config RESET_ON_INVALID_RAMSTAGE_CACHE
bool "Reset the system on S3 wake when ramstage cache invalid."
default n
+config FSP_RECOVERY_USE_MRCCACHE
+ bool "Use MRC cache in recovery boot"
+ depends on CACHE_MRC_SETTINGS
+ default n
+ help
+ Select yes if you want recovery boot to use MRC cache.
+
endif
diff --git a/src/drivers/intel/fsp2_0/memory_init.c b/src/drivers/intel/fsp2_0/memory_init.c
index d0a22ce..70379c3 100644
--- a/src/drivers/intel/fsp2_0/memory_init.c
+++ b/src/drivers/intel/fsp2_0/memory_init.c
@@ -113,12 +113,17 @@ static void fsp_fill_mrc_cache(FSPM_ARCH_UPD *arch_upd, bool s3wake,
if (!IS_ENABLED(CONFIG_CACHE_MRC_SETTINGS))
return;
- /* Don't use saved training data when recovery mode is enabled. */
- if (vboot_recovery_mode_enabled()) {
+ if (!IS_ENABLED(CONFIG_FSP_RECOVERY_USE_MRCCACHE)) {
printk(BIOS_SPEW, "Recovery mode. Not using MRC cache.\n");
return;
}
+ /* If recovery with full retrain is requested do not load cache */
+ if (vboot_recovery_mode_memory_retrain()) {
+ printk(BIOS_SPEW, "Recovery with forced memory retrain.\n");
+ return;
+ }
+
if (mrc_cache_get_current_with_version(&mrc_cache, fsp_version)) {
printk(BIOS_SPEW, "MRC cache was not found\n");
return;
diff --git a/src/soc/intel/apollolake/Kconfig b/src/soc/intel/apollolake/Kconfig
index 187214a..39cab36 100644
--- a/src/soc/intel/apollolake/Kconfig
+++ b/src/soc/intel/apollolake/Kconfig
@@ -74,6 +74,7 @@ config CHROMEOS
select VBOOT_VBNV_CMOS
select VBOOT_VBNV_CMOS_BACKUP_TO_FLASH
select VIRTUAL_DEV_SWITCH
+ select FSP_RECOVERY_USE_MRCCACHE
config TPM_ON_FAST_SPI
bool
More information about the coreboot-gerrit
mailing list