From 4683d674b67f973a2d42b4a398db251c5f79dae6 Mon Sep 17 00:00:00 2001 From: SarahW Date: Mon, 9 Nov 2020 19:29:21 +0000 Subject: [PATCH] Implement PIIX SMI gate. Fixes some issues seen on Shuttle HOT-433 when power management disabled in BIOS, which results in the BIOS failing to initialise and relocate the SMI handler but still advertise APM availability. --- src/piix.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/piix.c b/src/piix.c index 35eebe2..4e76b26 100644 --- a/src/piix.c +++ b/src/piix.c @@ -29,9 +29,11 @@ static sff_busmaster_t piix_busmaster[2]; static uint8_t piix_rc = 0; static void (*piix_nb_reset)(); +#define REG_SMICNTL 0xa0 #define REG_SMIEN 0xa2 #define REG_SMIREQ 0xaa +#define SMICNTL_CSMIGATE (1 << 0) #define SMIEN_APMC (1 << 7) #define SMIREQ_RAPMC (1 << 7) @@ -262,7 +264,8 @@ static void piix_apm_write(uint16_t port, uint8_t val, void *p) { card_piix[REG_SMIREQ] |= SMIREQ_RAPMC; // pclog("APMC write causes SMI\n"); - x86_smi_trigger(); + if (card_piix[REG_SMICNTL] & SMICNTL_CSMIGATE) + x86_smi_trigger(); } break;