All of lore.kernel.org
 help / color / mirror / Atom feed
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.