This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-changelog] [xen-unstable] x86: simplify (and fix) clear_IO_APIC{, _

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86: simplify (and fix) clear_IO_APIC{, _pin}()
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Wed, 17 Aug 2011 16:22:11 +0100
Delivery-date: Wed, 17 Aug 2011 08:22:50 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxxxx>
# Date 1313503555 -3600
# Node ID fc2be6cb89ad49efd90fe1b650f7efaab72f61b2
# Parent  5c1ebc117f9901bc155d2b92ae902a4144767dfb
x86: simplify (and fix) clear_IO_APIC{,_pin}()

These are used during bootup and (emergency) shutdown only, and their
only purpose is to get the actual IO-APIC's RTE(s) cleared.
Consequently, only the "raw" accessors should be used (and the ones
going through interrupt remapping code can be skipped), with the
exception of determining the delivery mode: This one must always go
through the interrupt remapping path, as in the VT-d case the actual
IO-APIC's RTE will have the delivery mode always set to zero (which
before possibly could have resulted in such an entry getting cleared
in the "raw" pass, though I haven't observed this case in practice).

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

diff -r 5c1ebc117f99 -r fc2be6cb89ad xen/arch/x86/io_apic.c
--- a/xen/arch/x86/io_apic.c    Tue Aug 16 15:05:30 2011 +0100
+++ b/xen/arch/x86/io_apic.c    Tue Aug 16 15:05:55 2011 +0100
@@ -372,14 +372,12 @@
     spin_unlock_irqrestore(&ioapic_lock, flags);
-#define clear_IO_APIC_pin(a,p)     __clear_IO_APIC_pin(a,p,0)
-#define clear_IO_APIC_pin_raw(a,p) __clear_IO_APIC_pin(a,p,1)
-static void __clear_IO_APIC_pin(unsigned int apic, unsigned int pin, int raw)
+static void clear_IO_APIC_pin(unsigned int apic, unsigned int pin)
     struct IO_APIC_route_entry entry;
     /* Check delivery_mode to be sure we're not clearing an SMI pin */
-    entry = ioapic_read_entry(apic, pin, raw);
+    entry = __ioapic_read_entry(apic, pin, FALSE);
     if (entry.delivery_mode == dest_SMI)
@@ -388,7 +386,7 @@
     memset(&entry, 0, sizeof(entry));
     entry.mask = 1;
-    ioapic_write_entry(apic, pin, raw, entry);
+    __ioapic_write_entry(apic, pin, TRUE, entry);
 static void clear_IO_APIC (void)
@@ -396,10 +394,8 @@
     int apic, pin;
     for (apic = 0; apic < nr_ioapics; apic++) {
-        for (pin = 0; pin < nr_ioapic_registers[apic]; pin++) {
+        for (pin = 0; pin < nr_ioapic_registers[apic]; pin++)
             clear_IO_APIC_pin(apic, pin);
-            clear_IO_APIC_pin_raw(apic, pin);
-        }

Xen-changelog mailing list

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] x86: simplify (and fix) clear_IO_APIC{, _pin}(), Xen patchbot-unstable <=