WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

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 <=