From c6322e1f823028003da10a0e21048d674a0933cb Mon Sep 17 00:00:00 2001 From: Felix Held Date: Fri, 5 Jan 2024 17:04:34 +0100 Subject: [PATCH] arch/x86/include/smm_call: improve documentation of call_smm Since the inline assembly code in call_smm doesn't make it exactly obvious how this function to call the APMC SMI handler works in detail, add a more detailed explanation as comment. Signed-off-by: Felix Held Change-Id: I3566af191492ce00a3033335ff80e01c33e98e63 Reviewed-on: https://review.coreboot.org/c/coreboot/+/79834 Tested-by: build bot (Jenkins) Reviewed-by: Matt DeVillier --- src/arch/x86/include/smm_call.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/arch/x86/include/smm_call.h b/src/arch/x86/include/smm_call.h index 66925c4a06..dc780399e0 100644 --- a/src/arch/x86/include/smm_call.h +++ b/src/arch/x86/include/smm_call.h @@ -4,7 +4,10 @@ #include /* - * calls into SMM with the given cmd and subcmd in eax, and arg in ebx + * Call the APMC SMI handler that resides in SMM. First, the command and sub-command are stored + * in eax, and the argument pointer is stored in ebx, then the command byte is written to the + * APMC IO port to trigger the SMI. The APMC SMI handler then reads the command from the APMC + * IO port and the contents of eax and ebx from the SMM state save area. * * static inline because the resulting assembly is often smaller than * the call sequence due to constant folding.