From 2d1dd5943d12a6ef46ab6d3d580545e89622e47d Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Wed, 16 Aug 2017 16:42:46 +0530 Subject: soc/intel/common: Move update_mrc_cache after BS_DEV_ENUMERATE This patch ensures that MRC cache data is already written into SPI chip before SPI protected regions are getting locked during BS_DEV_RESOURCES-BS_ON_EXIT. This requirements are intended to support platform security guideline where all required chipset registers are expected to be in lock down stage before launching any 3rd party code as in option rom etc. coreboot has to change its execution order to meet those requirements. Hence storing mrc cache data into SPI has been moved right after pci enumeration is done, so that SPI registers can be lock down before calling post pci enumeration FSP NotifyPhase() API which is targeted to be done in BS_DEV_ENABLE-BS_ON_ENTRY. TEST=Ensure MRC training data is stored into SPI chip and power_ Resume autotest is passing. Change-Id: I8ee26b5cc70433438cf4e45e707b8a54f89cf9b0 Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/21028 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/soc/intel/common/mrc_cache.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/soc/intel/common/mrc_cache.c b/src/soc/intel/common/mrc_cache.c index 3ad4cb0d6e..a4f3d3201b 100644 --- a/src/soc/intel/common/mrc_cache.c +++ b/src/soc/intel/common/mrc_cache.c @@ -531,4 +531,9 @@ static void update_mrc_cache(void *unused) protect_mrc_region(); } -BOOT_STATE_INIT_ENTRY(BS_WRITE_TABLES, BS_ON_ENTRY, update_mrc_cache, NULL); +/* + * Ensures MRC training data is stored into SPI after PCI enumeration is done + * during BS_DEV_ENUMERATE-BS_ON_EXIT and lock down SPI protected ranges + * during BS_DEV_RESOURCES-BS_ON_EXIT. + */ +BOOT_STATE_INIT_ENTRY(BS_DEV_ENUMERATE, BS_ON_EXIT, update_mrc_cache, NULL); -- cgit v1.2.3