Marshall Dawson has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/38471 )
Change subject: soc/amd/picasso: Add SMMSTORE support ......................................................................
soc/amd/picasso: Add SMMSTORE support
Add SMMSTORE support for saving EFI NVRAM variables in conjuction with Tianocore payload.
Test: none, as this duplicates tested functionality in amd/stoneyridge.
Signed-off-by: Marshall Dawson marshalldawson3rd@gmail.com Change-Id: Id05b33edf949611c3f9eac94e7b63a4266c6c4d0 --- M src/soc/amd/picasso/smihandler.c 1 file changed, 24 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/71/38471/1
diff --git a/src/soc/amd/picasso/smihandler.c b/src/soc/amd/picasso/smihandler.c index 39c2dfd..d987a50 100644 --- a/src/soc/amd/picasso/smihandler.c +++ b/src/soc/amd/picasso/smihandler.c @@ -23,6 +23,7 @@ #include <arch/acpi.h> #include <arch/hlt.h> #include <device/pci_def.h> +#include <smmstore.h> #include <soc/smi.h> #include <soc/southbridge.h> #include <amdblocks/acpimmio.h> @@ -88,6 +89,25 @@ io_smi->rax = gsmi_exec(sub_command, ®_ebx); }
+static void southbridge_smi_store(void) +{ + u8 sub_command; + amd64_smm_state_save_area_t *io_smi; + u32 reg_ebx; + + io_smi = find_save_state(APM_CNT_SMMSTORE); + if (!io_smi) + return; + /* Command and return value in EAX */ + sub_command = (io_smi->rax >> 8) & 0xff; + + /* Parameter buffer in EBX */ + reg_ebx = io_smi->rbx; + + /* drivers/smmstore/smi.c */ + io_smi->rax = smmstore_exec(sub_command, (void *)reg_ebx); +} + static void sb_apmc_smi_handler(void) { const uint8_t cmd = inb(pm_acpi_smi_cmd_port()); @@ -103,6 +123,10 @@ if (CONFIG(ELOG_GSMI)) southbridge_smi_gsmi(); break; + case APM_CNT_SMMSTORE: + if (CONFIG(SMMSTORE)) + southbridge_smi_store(); + break; }
mainboard_smi_apmc(cmd);