mirror of https://github.com/xemu-project/xemu.git
tco: do not generate an NMI
This behavior is not indicated in the datasheet and can confuse the OS. The TCO can trap NMIs from SERR# or IOCHK# and convert them to SMIs; but any other TCO event is either delivered as an SMI or completely disabled. Reviewed-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
87cc4c6102
commit
8c9f42f3cf
|
@ -75,8 +75,6 @@ static void tco_timer_expired(void *opaque)
|
||||||
|
|
||||||
if (pm->smi_en & ICH9_PMIO_SMI_EN_TCO_EN) {
|
if (pm->smi_en & ICH9_PMIO_SMI_EN_TCO_EN) {
|
||||||
ich9_generate_smi();
|
ich9_generate_smi();
|
||||||
} else {
|
|
||||||
ich9_generate_nmi();
|
|
||||||
}
|
}
|
||||||
tr->tco.rld = tr->tco.tmr;
|
tr->tco.rld = tr->tco.tmr;
|
||||||
tco_timer_reload(tr);
|
tco_timer_reload(tr);
|
||||||
|
|
|
@ -312,11 +312,6 @@ void ich9_generate_smi(void)
|
||||||
cpu_interrupt(first_cpu, CPU_INTERRUPT_SMI);
|
cpu_interrupt(first_cpu, CPU_INTERRUPT_SMI);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ich9_generate_nmi(void)
|
|
||||||
{
|
|
||||||
cpu_interrupt(first_cpu, CPU_INTERRUPT_NMI);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ich9_lpc_sci_irq(ICH9LPCState *lpc)
|
static int ich9_lpc_sci_irq(ICH9LPCState *lpc)
|
||||||
{
|
{
|
||||||
switch (lpc->d.config[ICH9_LPC_ACPI_CTRL] &
|
switch (lpc->d.config[ICH9_LPC_ACPI_CTRL] &
|
||||||
|
|
|
@ -21,7 +21,6 @@ void ich9_lpc_pm_init(PCIDevice *pci_lpc, bool smm_enabled);
|
||||||
I2CBus *ich9_smb_init(PCIBus *bus, int devfn, uint32_t smb_io_base);
|
I2CBus *ich9_smb_init(PCIBus *bus, int devfn, uint32_t smb_io_base);
|
||||||
|
|
||||||
void ich9_generate_smi(void);
|
void ich9_generate_smi(void);
|
||||||
void ich9_generate_nmi(void);
|
|
||||||
|
|
||||||
#define ICH9_CC_SIZE (16 * 1024) /* 16KB. Chipset configuration registers */
|
#define ICH9_CC_SIZE (16 * 1024) /* 16KB. Chipset configuration registers */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue