Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] x86: Remove io_apic fake-vector style of

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86: Remove io_apic fake-vector style of IRQ acknowledgement. Not
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 20 Oct 2007 05:50:20 -0700
Delivery-date: Sat, 20 Oct 2007 05:51:58 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
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/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/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 Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1192789938 -3600
# Node ID bf3514726c1b84c0a284f30a276b8420d700421f
# Parent  e733e6b73d56e014c5b2eba04564e7ee439c2b59
x86: Remove io_apic fake-vector style of IRQ acknowledgement. Not
needed now that pass-through IRQs can use the 'new' ack method.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/x86/io_apic.c |   75 +------------------------------------------------
 1 files changed, 3 insertions(+), 72 deletions(-)

diff -r e733e6b73d56 -r bf3514726c1b xen/arch/x86/io_apic.c
--- a/xen/arch/x86/io_apic.c    Fri Oct 19 11:26:58 2007 +0100
+++ b/xen/arch/x86/io_apic.c    Fri Oct 19 11:32:18 2007 +0100
@@ -182,68 +182,6 @@ static void __modify_IO_APIC_irq (unsign
             break;
         entry = irq_2_pin + entry->next;
     }
-}
-
-static int real_vector[MAX_IRQ_SOURCES];
-static int fake_vector=-1;
-
-/*
- * Following 2 functions are used to workaround spurious interrupt
- * problem related to mask/unmask of interrupts.  Instead we program
- * an unused vector in the IOAPIC before issueing EOI to LAPIC.
- */
-static void write_fake_IO_APIC_vector (unsigned int irq)
-{
-    struct irq_pin_list *entry = irq_2_pin + irq;
-    unsigned int pin, reg;
-    unsigned long flags;
-
-    spin_lock_irqsave(&ioapic_lock, flags);
-    for (;;) {
-        pin = entry->pin;
-        if (pin == -1)
-            break;
-        reg = io_apic_read(entry->apic, 0x10 + pin*2);
-        real_vector[irq] = reg & 0xff;
-        reg &= ~0xff;
-
-        if (fake_vector == -1)
-            fake_vector = assign_irq_vector(MAX_IRQ_SOURCES-1);
-
-        reg |= fake_vector;
-        io_apic_write(entry->apic, 0x10 + pin*2, reg);
-
-        if (!entry->next)
-            break;
-        entry = irq_2_pin + entry->next;
-    }
-    spin_unlock_irqrestore(&ioapic_lock, flags);
-}
-
-static void restore_real_IO_APIC_vector (unsigned int irq)
-{
-    struct irq_pin_list *entry = irq_2_pin + irq;
-    unsigned int pin, reg;
-    unsigned long flags;
-
-    spin_lock_irqsave(&ioapic_lock, flags);
-    for (;;) {
-        pin = entry->pin;
-        if (pin == -1)
-            break;
-
-        reg = io_apic_read(entry->apic, 0x10 + pin*2);
-        reg &= ~0xff;
-        reg |= real_vector[irq];
-        io_apic_write(entry->apic, 0x10 + pin*2, reg);
-        mb();
-        *(IO_APIC_BASE(entry->apic) + 0x10) = reg & 0xff;
-
-        if (!entry->next)
-            break;
-        entry = irq_2_pin + entry->next;
-    }
-    spin_unlock_irqrestore(&ioapic_lock, flags);
 }
 
 /* mask = 1 */
@@ -1418,10 +1356,7 @@ static void mask_and_ack_level_ioapic_ir
     if ( ioapic_ack_new )
         return;
 
-    if ( vtd_enabled )
-        write_fake_IO_APIC_vector(irq);
-    else
-        mask_IO_APIC_irq(irq);
+    mask_IO_APIC_irq(irq);
 
 /*
  * It appears there is an erratum which affects at least version 0x11
@@ -1464,12 +1399,8 @@ static void end_level_ioapic_irq (unsign
 
     if ( !ioapic_ack_new )
     {
-        if ( !(irq_desc[IO_APIC_VECTOR(irq)].status & IRQ_DISABLED) ) {
-            if ( vtd_enabled )
-                restore_real_IO_APIC_vector(irq);
-            else
-                unmask_IO_APIC_irq(irq);
-        }
+        if ( !(irq_desc[IO_APIC_VECTOR(irq)].status & IRQ_DISABLED) )
+            unmask_IO_APIC_irq(irq);
         return;
     }
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] x86: Remove io_apic fake-vector style of IRQ acknowledgement. Not, Xen patchbot-unstable <=