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

[Xen-devel] [PATCH] x86: suppress warning messages on IO-APIC-less systems

  • To: "xen-devel" <xen-devel@xxxxxxxxxxxxx>
  • From: "Jan Beulich" <JBeulich@xxxxxxxx>
  • Date: Tue, 17 Apr 2012 13:58:35 +0100
  • Delivery-date: Tue, 17 Apr 2012 12:58:58 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>

Each call to mp_register_gsi() so far produced two warnings (about not
being able to find the corresponding IO-APIC pin).

However, we should use the provided information for setting the ELCR
correctly (we might want to even do this when there is an IO-APIC, if
was absolutely certain that all machines really have this register
[and specifically not some other device at the two I/O ports in
question]). It is in any case questionable that we allow Dom0 to set
this register - it could particularly be the interrupt of a plug-in
serial port card that might not work due to this. The problem is that
all Dom0 kernels to date do so, hence we can't simply #GP on such an
access (which would be the result if we disallowed access to the port
as we should have done from the beginning).

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -1034,6 +1034,21 @@ int mp_register_gsi (u32 gsi, int trigge
                return gsi;
+       if (!nr_ioapics) {
+               unsigned int port = 0x4d0 + (gsi >> 3);
+               u8 val;
+               if (!platform_legacy_irq(gsi))
+                       return -EINVAL;
+               val = inb(port);
+               if (triggering)
+                       val |= 1 << (gsi & 7);
+               else
+                       val &= ~(1 << (gsi & 7));
+               outb(val, port);
+               return 0;
+       }
        ioapic = mp_find_ioapic(gsi);
        if (ioapic < 0) {
                printk(KERN_WARNING "No IOAPIC for GSI %u\n", gsi);

Attachment: x86-no-ioapic.patch
Description: Text document

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.