[SeaBIOS] [PATCH] acpi: fix irq 8 ressource conflict

Gerd Hoffmann kraxel at redhat.com
Wed Dec 5 10:13:57 CET 2012


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 at 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) {
-- 
1.7.1




More information about the SeaBIOS mailing list