From 1b8e65dee16c083849a0cf0dc61b0e6ecf64c118 Mon Sep 17 00:00:00 2001 From: Angel Pons Date: Fri, 19 Feb 2021 18:29:58 +0100 Subject: soc/intel/{skl,cnl}: Move smm_lock() to cpu.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Looks like smmrelocate.c is nearly identical across multiple platforms. This is done to be able to deduplicate smmrelocate.c in the follow-ups. Change-Id: I2edc64c9eabc3815b12a2e3cffb03cba2228eea0 Signed-off-by: Angel Pons Reviewed-on: https://review.coreboot.org/c/coreboot/+/50933 Reviewed-by: Michael Niewöhner Reviewed-by: Arthur Heymans Tested-by: build bot (Jenkins) --- src/soc/intel/cannonlake/cpu.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/soc/intel/cannonlake/cpu.c') diff --git a/src/soc/intel/cannonlake/cpu.c b/src/soc/intel/cannonlake/cpu.c index 2520559cdc..5b39156292 100644 --- a/src/soc/intel/cannonlake/cpu.c +++ b/src/soc/intel/cannonlake/cpu.c @@ -134,6 +134,18 @@ static void per_cpu_smm_trigger(void) smm_relocate(); } +void smm_lock(void) +{ + struct device *sa_dev = pcidev_path_on_root(SA_DEVFN_ROOT); + /* + * LOCK the SMM memory window and enable normal SMM. + * After running this function, only a full reset can + * make the SMM registers writable again. + */ + printk(BIOS_DEBUG, "Locking SMM.\n"); + pci_write_config8(sa_dev, SMRAM, D_LCK | G_SMRAME | C_BASE_SEG); +} + static void post_mp_init(void) { /* Set Max Ratio */ -- cgit v1.2.3