From 93a4e0135c41c1d90498a221b1e20e1b211376c1 Mon Sep 17 00:00:00 2001 From: Marc Jones Date: Mon, 22 Mar 2021 19:40:30 -0600 Subject: [PATCH] cpu/x86/smm: Fix SMM start address passing This fixes an issue introduced in commit ad0116c0327f575f0af184a2f4861848a49a0e2a cpu/x86/smm_loaderv2: Remove unused variables It removed one variable that was needed to set the SMM start address that is used to set the SMM stack location. Change-Id: Iddf9f204db54f0d97a90bb423b65db2f7625217f Signed-off-by: Marc Jones Reviewed-on: https://review.coreboot.org/c/coreboot/+/51721 Reviewed-by: Jay Talbott Reviewed-by: Arthur Heymans Tested-by: build bot (Jenkins) --- src/cpu/x86/smm/smm_module_loaderv2.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/cpu/x86/smm/smm_module_loaderv2.c b/src/cpu/x86/smm/smm_module_loaderv2.c index 5c45fcc017..26be00734d 100644 --- a/src/cpu/x86/smm/smm_module_loaderv2.c +++ b/src/cpu/x86/smm/smm_module_loaderv2.c @@ -312,7 +312,8 @@ static int smm_stub_place_staggered_entry_points(char *base, */ static int smm_module_setup_stub(void *const smbase, const size_t smm_size, struct smm_loader_params *params, - void *const fxsave_area) + void *const fxsave_area, + void *const smram_start) { size_t total_save_state_size; size_t smm_stub_size; @@ -381,7 +382,7 @@ static int smm_module_setup_stub(void *const smbase, const size_t smm_size, * for default handler, but for relocated handler it lives at the beginning * of SMRAM which is TSEG base */ - stacks_top = smm_stub_place_stacks(smbase, params); + stacks_top = smm_stub_place_stacks(smram_start, params); if (stacks_top == NULL) { printk(BIOS_ERR, "%s: error assigning stacks\n", __func__); return -1; @@ -456,7 +457,7 @@ int smm_setup_relocation_handler(struct smm_loader_params *params) params->num_concurrent_stacks = CONFIG_MAX_CPUS; return smm_module_setup_stub(smram, SMM_DEFAULT_SIZE, - params, fxsave_area_relocation); + params, fxsave_area_relocation, smram); printk(BIOS_SPEW, "%s: exit\n", __func__); } @@ -498,7 +499,7 @@ int smm_load_module(void *smram, size_t size, struct smm_loader_params *params) void *fxsave_area; size_t total_size = 0; char *base; - + void *smram_start = smram; if (size <= SMM_DEFAULT_SIZE) return -1; @@ -620,5 +621,5 @@ int smm_load_module(void *smram, size_t size, struct smm_loader_params *params) cpus[i].ss_start + params->per_cpu_save_state_size; } - return smm_module_setup_stub(base, size, params, fxsave_area); + return smm_module_setup_stub(base, size, params, fxsave_area, smram_start); }