summaryrefslogtreecommitdiff
path: root/src/cpu/x86/smm
diff options
context:
space:
mode:
authorEugene D. Myers <edmyers@cyberpackventures.com>2023-11-02 13:34:56 -0700
committerFelix Held <felix-coreboot@felixheld.de>2023-11-10 15:27:13 +0000
commitd205cf7e4ef6ebec49d45ec97f501f7de843ac94 (patch)
tree0445ffa9161c2aba05caf2e92fbeb6eb2fcacd00 /src/cpu/x86/smm
parent42f1fef5a620e98e7ece6a60744992265cc409d7 (diff)
cpu/x86/smm: Fix get_save_state calculation
When the SMI transfer monitor (STM) is configured, get_save_state returns an incorrect pointer to the cpu save state because the size (rounded up to 0x100) of the processor System Management Mode (SMM) descriptor needs to be subtracted out in this case. This patch addresses the issue identified in CB:76601, which means that SMMSTOREv2 now works with the STM. Thanks to Jeremy Compostella for suggesting this version of the patch. Resolves: https://ticket.coreboot.org/issues/511 Change-Id: I0233c6d13bdffb3853845ac6ef25c066deaab747 Signed-off-by: Eugene D. Myers <edmyers@cyberpackventures.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/78889 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Diffstat (limited to 'src/cpu/x86/smm')
-rw-r--r--src/cpu/x86/smm/smm_module_handler.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/cpu/x86/smm/smm_module_handler.c b/src/cpu/x86/smm/smm_module_handler.c
index 3415b02842..0daae00ebb 100644
--- a/src/cpu/x86/smm/smm_module_handler.c
+++ b/src/cpu/x86/smm/smm_module_handler.c
@@ -9,6 +9,7 @@
#include <cpu/x86/smm.h>
#include <rmodule.h>
#include <types.h>
+#include <security/intel/stm/SmmStm.h>
#if CONFIG(SPI_FLASH_SMM)
#include <spi-generic.h>
@@ -103,7 +104,8 @@ void *smm_get_save_state(int cpu)
if (cpu > smm_runtime.num_cpus)
return NULL;
- return (void *)(smm_runtime.save_state_top[cpu] - smm_runtime.save_state_size);
+ return (void *)(smm_runtime.save_state_top[cpu] -
+ (smm_runtime.save_state_size - STM_PSD_SIZE));
}
uint32_t smm_revision(void)