ACPI SCI IRQ handler not being called
Posted: Fri Jul 29, 2016 3:11 am
Hi.
In my OS, I detect ACPI, locate the FADT and enable ACPI mode by writing the value in acpi_enable to I/O port sci_command and this works. ACPI shutdown also works. In VirtualBox, the ACPI shutdown menu item also becomes valid. As I know, this should emulate a power button press to the guest OS, and it should send an IRQ to the OS. This IRQ should be specified by sci_interrupt in the FADT. My IRQ handler reads the pm1a_event_block and checks if the power button has been pressed. If yes, it shuts down the PC. This works on two real PCs. But in QEMU and VirtualBox, when I send a shutdown event to the OS, nothing happens. No IRQ arrives at all; I know because my IRQ handler writes some text to the serial console before taking any action.
Isn't it odd it works on real HW but not in VMs? Is there something I'm missing here?
Thanks in advance!
In my OS, I detect ACPI, locate the FADT and enable ACPI mode by writing the value in acpi_enable to I/O port sci_command and this works. ACPI shutdown also works. In VirtualBox, the ACPI shutdown menu item also becomes valid. As I know, this should emulate a power button press to the guest OS, and it should send an IRQ to the OS. This IRQ should be specified by sci_interrupt in the FADT. My IRQ handler reads the pm1a_event_block and checks if the power button has been pressed. If yes, it shuts down the PC. This works on two real PCs. But in QEMU and VirtualBox, when I send a shutdown event to the OS, nothing happens. No IRQ arrives at all; I know because my IRQ handler writes some text to the serial console before taking any action.
Isn't it odd it works on real HW but not in VMs? Is there something I'm missing here?
Thanks in advance!