Both hpet and rtc have irq 8 in their ressources, making windows unhappy because of the conflict. Fix this by making rtc check whenever the hpet is present, and claim irq 8 only in case it isn't. So rtc gets irq 8 only in case you start qemu with the -no-hpet switch.
Verified working in both linux (check pnp boot messages) and windows (check rtc ressources in device manager) guests.
Based on patch by: Gerd Hoffmann kraxel@redhat.com Signed-off-by: Kevin O'Connor kevin@koconnor.net --- src/acpi-dsdt-isa.dsl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/acpi-dsdt-isa.dsl b/src/acpi-dsdt-isa.dsl index 23761db..70e1e48 100644 --- a/src/acpi-dsdt-isa.dsl +++ b/src/acpi-dsdt-isa.dsl @@ -3,11 +3,23 @@ Scope(_SB.PCI0.ISA) {
Device(RTC) { Name(_HID, EisaId("PNP0B00")) - Name(_CRS, ResourceTemplate() { + Name(RESI, ResourceTemplate() { IO(Decode16, 0x0070, 0x0070, 0x10, 0x02) IRQNoFlags() { 8 } IO(Decode16, 0x0072, 0x0072, 0x02, 0x06) }) + Name(RESP, ResourceTemplate() { + IO(Decode16, 0x0070, 0x0070, 0x10, 0x02) + IO(Decode16, 0x0072, 0x0072, 0x02, 0x06) + }) + Method(_CRS, 0) { + If (LEqual(_SB.HPET._STA(), 0)) { + /* hpet not present -> give irq 8 to rtc */ + Return (RESI) + } else { + Return (RESP) + } + } }
Device(KBD) {