From: Beth Kon <eak@us.ibm.com>
To: qemu-devel <qemu-devel@nongnu.org>,
bochs-developers@lists.sourceforge.net
Subject: [Qemu-devel] [PATCH] Fix non-ACPI Timer Interrupt Routing - v3
Date: Tue, 21 Apr 2009 22:43:11 -0400 [thread overview]
Message-ID: <49EE843F.3080505@us.ibm.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 315 bytes --]
Replicate ACPI irq0->inti2 override in mp table for non-acpi case.
v1 -> v2 adds comment suggested by Ryan.
v2 -> v3 clarifies comment and corrects entry count for non-ACPI case
Anthony, the old version of this patch needs to be removed and replaced
with this version.
Signed-off-by: Beth Kon <eak@us.ibm.com>
[-- Attachment #2: non_acpi_irqrouting.patch --]
[-- Type: text/x-diff, Size: 1670 bytes --]
diff --git a/bios/BIOS-bochs-latest b/bios/BIOS-bochs-latest
index ebec71b..56b17f5 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..e0e2a95 100644
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -1126,7 +1126,11 @@ static void mptable_init(void)
putstr(&q, "0.1 "); /* vendor id */
putle32(&q, 0); /* OEM table ptr */
putle16(&q, 0); /* OEM table size */
+#ifdef BX_QEMU
+ putle16(&q, smp_cpus + 17); /* entry count */
+#else
putle16(&q, smp_cpus + 18); /* entry count */
+#endif
putle32(&q, 0xfee00000); /* local APIC addr */
putle16(&q, 0); /* ext table length */
putb(&q, 0); /* ext table checksum */
@@ -1168,6 +1172,12 @@ static void mptable_init(void)
/* irqs */
for(i = 0; i < 16; i++) {
+#ifdef BX_QEMU
+ /* One entry per ioapic interrupt destination. Destination 2 is covered
+ by irq0->inti2 override (i == 0). Source IRQ 2 is unused */
+ if (i == 2)
+ continue;
+#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 +1185,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;
reply other threads:[~2009-04-22 2:43 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49EE843F.3080505@us.ibm.com \
--to=eak@us.ibm.com \
--cc=bochs-developers@lists.sourceforge.net \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.