summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/intel/smm/gen1/smmrelocate.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cpu/intel/smm/gen1/smmrelocate.c b/src/cpu/intel/smm/gen1/smmrelocate.c
index a349594fa6..da43de09fd 100644
--- a/src/cpu/intel/smm/gen1/smmrelocate.c
+++ b/src/cpu/intel/smm/gen1/smmrelocate.c
@@ -55,6 +55,7 @@ struct smm_relocation_params {
/* This gets filled in and used during relocation. */
static struct smm_relocation_params smm_reloc_params;
+static void *default_smm_area = NULL;
static inline void write_smrr(struct smm_relocation_params *relo_params)
{
@@ -156,6 +157,8 @@ static int install_relocation_handler(int *apic_id_map, int num_cpus,
.handler_arg = (void *)relo_params,
};
+ default_smm_area = backup_default_smm_area();
+
if (smm_setup_relocation_handler(&smm_params))
return -1;
int i;
@@ -270,6 +273,11 @@ void smm_init(void)
smm_lock();
}
+void smm_init_completion(void)
+{
+ restore_default_smm_area(default_smm_area);
+}
+
void smm_lock(void)
{
/* LOCK the SMM memory window and enable normal SMM.