Raul Rangel has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/62598 )
Change subject: soc/amd/common/block: Add mainboard_handle_smi ......................................................................
soc/amd/common/block: Add mainboard_handle_smi
The current SMM framework only allows the mainboard code to handle GPEs. i.e., Events 0 - 23. This change allows the mainboard code to handle any SMI events not handled by the SoC code. This will allow the mainboard code to handle `SMITYPE_ESPI_SMI`.
BUG=b:222694093 TEST=Build guybrush
Signed-off-by: Raul E Rangel rrangel@chromium.org Change-Id: I81943e8cb31e998f29cc60b565d3ca0a8dfe9cb2 --- M src/soc/amd/common/block/cpu/smm/smi_handler.c M src/soc/amd/common/block/include/amdblocks/smm.h 2 files changed, 9 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/98/62598/1
diff --git a/src/soc/amd/common/block/cpu/smm/smi_handler.c b/src/soc/amd/common/block/cpu/smm/smi_handler.c index e535cb0..f662a75 100644 --- a/src/soc/amd/common/block/cpu/smm/smi_handler.c +++ b/src/soc/amd/common/block/cpu/smm/smi_handler.c @@ -7,6 +7,11 @@ #include <cpu/x86/smm.h> #include <soc/smi.h>
+__weak void mainboard_handle_smi(int event) +{ + printk(BIOS_WARNING, "SMI event %d is missing handler\n", event); +} + static void process_smi_sources(uint32_t reg) { const uint32_t status = smi_read32(reg); @@ -19,6 +24,8 @@ source_handler = get_smi_source_handler(i + bit_zero); if (source_handler) source_handler(); + else + mainboard_handle_smi(i + bit_zero); } }
diff --git a/src/soc/amd/common/block/include/amdblocks/smm.h b/src/soc/amd/common/block/include/amdblocks/smm.h index 187eddf..09d499b 100644 --- a/src/soc/amd/common/block/include/amdblocks/smm.h +++ b/src/soc/amd/common/block/include/amdblocks/smm.h @@ -14,3 +14,5 @@ void handle_smi_gsmi(void); void handle_smi_store(void); void clear_tvalid(void); +/* See SMITYPE_* for list possible of events */ +void mainboard_handle_smi(int event);