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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/62598 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Karthik Ramasubramanian <kramasub@google.com> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
This commit is contained in:
parent
589609c8e7
commit
d59b3dd085
|
@ -7,6 +7,11 @@
|
||||||
#include <cpu/x86/smm.h>
|
#include <cpu/x86/smm.h>
|
||||||
#include <soc/smi.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)
|
static void process_smi_sources(uint32_t reg)
|
||||||
{
|
{
|
||||||
const uint32_t status = smi_read32(reg);
|
const uint32_t status = smi_read32(reg);
|
||||||
|
@ -19,6 +24,8 @@ static void process_smi_sources(uint32_t reg)
|
||||||
source_handler = get_smi_source_handler(i + bit_zero);
|
source_handler = get_smi_source_handler(i + bit_zero);
|
||||||
if (source_handler)
|
if (source_handler)
|
||||||
source_handler();
|
source_handler();
|
||||||
|
else if (reg != SMI_REG_SMISTS0 || (status & GEVENT_MASK) == 0)
|
||||||
|
mainboard_handle_smi(i + bit_zero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,3 +14,5 @@ void *get_smi_source_handler(int source);
|
||||||
void handle_smi_gsmi(void);
|
void handle_smi_gsmi(void);
|
||||||
void handle_smi_store(void);
|
void handle_smi_store(void);
|
||||||
void clear_tvalid(void);
|
void clear_tvalid(void);
|
||||||
|
/* See SMITYPE_* for list possible of events. GEVENTS are handled with mainboard_smi_gpi. */
|
||||||
|
void mainboard_handle_smi(int event);
|
||||||
|
|
Loading…
Reference in New Issue