From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LveuD-0004aA-GQ for qemu-devel@nongnu.org; Sun, 19 Apr 2009 17:50:29 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LveuA-0004UY-1o for qemu-devel@nongnu.org; Sun, 19 Apr 2009 17:50:29 -0400 Received: from [199.232.76.173] (port=55951 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Lveu9-0004UK-Jw for qemu-devel@nongnu.org; Sun, 19 Apr 2009 17:50:25 -0400 Received: from mail.gmx.net ([213.165.64.20]:40263) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1Lveu8-0003SX-W2 for qemu-devel@nongnu.org; Sun, 19 Apr 2009 17:50:25 -0400 Message-ID: <8A3986ABEBAA4AD7B47A72F93C05F9AC@FSCPC> From: "Sebastian Herbszt" References: <49E49ABE.8050802@us.ibm.com> In-Reply-To: <49E49ABE.8050802@us.ibm.com> Date: Sun, 19 Apr 2009 23:49:03 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH] Fix non-ACPI Timer Interrupt Routing - v2 Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, Beth Kon Cc: bochs-developers@lists.sourceforge.net Beth Kon wrote: > Replicate ACPI irq0->inti2 override in mp table for non-acpi case. > > v1 -> v2 adds comment suggested by Ryan. > > Signed-off-by: Beth Kon > > diff --git a/bios/BIOS-bochs-latest b/bios/BIOS-bochs-latest > index ebec71b..82d7792 100644 > Binary files a/bios/BIOS-bochs-latest and b/bios/BIOS-bochs-latest differ > diff --git a/bios/rombios32.c b/bios/rombios32.c > index 7be4216..dc7b5f3 100644 > --- a/bios/rombios32.c > +++ b/bios/rombios32.c > @@ -1168,6 +1168,12 @@ static void mptable_init(void) > > /* irqs */ > for(i = 0; i < 16; i++) { > +#ifdef BX_QEMU > + /* One entry per ioapic input. Input 2 is covered by > + irq0->inti2 override (i == 0). irq 2 is unused */ Isn't the input 0 or destination 2 covered by the override? We connect irq0 (input) to intin2 (destination). > + if (i == 2) > + continue; This changes the entry count. Currently it's putle16(&q, smp_cpus + 18); /* entry count */ which is smp_cpus processor entries + (bus entry + i/o apic entry + 16 irq entries). This changes the number of irq entries to 15. > +#endif > putb(&q, 3); /* entry type = I/O interrupt */ > putb(&q, 0); /* interrupt type = vectored interrupt */ > putb(&q, 0); /* flags: po=0, el=0 */ > @@ -1175,7 +1181,11 @@ static void mptable_init(void) > putb(&q, 0); /* source bus ID = ISA */ > putb(&q, i); /* source bus IRQ */ > putb(&q, ioapic_id); /* dest I/O APIC ID */ > +#ifdef BX_QEMU > + putb(&q, i == 0 ? 2 : i); /* dest I/O APIC interrupt in */ > +#else > putb(&q, i); /* dest I/O APIC interrupt in */ > +#endif > } > /* patch length */ > len = q - mp_config_table; - Sebastian