diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/x86/smm/smm_module_handler.c | 7 | ||||
-rw-r--r-- | src/include/cpu/x86/smm.h | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/cpu/x86/smm/smm_module_handler.c b/src/cpu/x86/smm/smm_module_handler.c index bd4149a797..e18a26a250 100644 --- a/src/cpu/x86/smm/smm_module_handler.c +++ b/src/cpu/x86/smm/smm_module_handler.c @@ -157,6 +157,8 @@ asmlinkage void smm_handler_start(void *arg) smi_backup_pci_address(); + smm_soc_early_init(); + console_init(); printk(BIOS_SPEW, "\nSMI# #%d\n", cpu); @@ -186,6 +188,8 @@ asmlinkage void smm_handler_start(void *arg) die("SMM Handler caused a stack overflow\n"); } + smm_soc_exit(); + smi_release_lock(); /* De-assert SMI# signal to allow another SMI */ @@ -206,3 +210,6 @@ void __weak mainboard_smi_gpi(u32 gpi_sts) {} int __weak mainboard_smi_apmc(u8 data) { return 0; } void __weak mainboard_smi_sleep(u8 slp_typ) {} void __weak mainboard_smi_finalize(void) {} + +void __weak smm_soc_early_init(void) {} +void __weak smm_soc_exit(void) {} diff --git a/src/include/cpu/x86/smm.h b/src/include/cpu/x86/smm.h index 28d95e11a5..03b9c39903 100644 --- a/src/include/cpu/x86/smm.h +++ b/src/include/cpu/x86/smm.h @@ -51,6 +51,9 @@ int mainboard_smi_apmc(u8 data); void mainboard_smi_sleep(u8 slp_typ); void mainboard_smi_finalize(void); +void smm_soc_early_init(void); +void smm_soc_exit(void); + /* This is the SMM handler. */ extern unsigned char _binary_smm_start[]; extern unsigned char _binary_smm_end[]; |