[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] Fix timer interrupt routing for non-ACPI guest

From: Ed Swierk
Subject: [Qemu-devel] [PATCH] Fix timer interrupt routing for non-ACPI guest
Date: Fri, 10 Apr 2009 20:08:38 -0700

Qemu 0.10.2 is unable to boot a non-ACPI kernel due to a BIOS bug:

..TIMER: vector=0x31 apic1=0 pin1=0 apic2=-1 pin2=-1 
..MP-BIOS bug: 8254 timer not connected to IO-APIC 
...trying to set up timer (IRQ0) through the 8259A ... 
..... (found apic 0 pin 0) ... 
....... failed. 
...trying to set up timer as Virtual Wire IRQ... 

The interrupt routing table in the MPTABLE needs to route the timer
interrupt (IRQ 0) to IOAPIC pin 2.

A similar bug was recently fixed in the ACPI table code.  This patch
fixes the problem for non-ACPI guests.

Signed-off-by: Ed Swierk <address@hidden>

diff --git a/bios/rombios32.c b/bios/rombios32.c
index 7be4216..13d5435 100644
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -1173,7 +1173,7 @@ static void mptable_init(void)
         putb(&q, 0); /* flags: po=0, el=0 */
         putb(&q, 0);
         putb(&q, 0); /* source bus ID = ISA */
-        putb(&q, i); /* source bus IRQ */
+        putb(&q, i == 2 ? 0 : i); /* source bus IRQ */
         putb(&q, ioapic_id); /* dest I/O APIC ID */
         putb(&q, i); /* dest I/O APIC interrupt in */

reply via email to

[Prev in Thread] Current Thread [Next in Thread]