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.
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- src/acpi-dsdt-isa.dsl | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/acpi-dsdt-isa.dsl b/src/acpi-dsdt-isa.dsl index 23761db..15dc181 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(RESP, ResourceTemplate() { IO(Decode16, 0x0070, 0x0070, 0x10, 0x02) - IRQNoFlags() { 8 } IO(Decode16, 0x0072, 0x0072, 0x02, 0x06) }) + Name(RESI, ResourceTemplate() { + IRQNoFlags() { 8 } + }) + Method(_CRS, 0) { + Store(_SB.HPET._STA(), Local0) + If (LEqual(Local0, 0)) { + /* hpet not present -> give irq 8 to rtc */ + ConcatenateResTemplate(RESP, RESI, Local1) + Return (Local1) + } else { + Return (RESP) + } + } }
Device(KBD) {