summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cpu/x86/smm/smm_module_handler.c7
-rw-r--r--src/include/cpu/x86/smm.h3
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[];