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

[Xen-devel] [PATCH] x86: clean up __io_apic_eoi()



Irrespective of the IO-APIC vector sharing suppression patch just sent
the logic in this function needs to iterate over all RTEs, since
multiple pins within an IO-APIC may still use the same vector. This is
due to the irq_2_pin[] mapping not necessarily being 1:1.

Consequently we should remove the commented out code as well as the
respective comments provisioned for the point in time when vector
sharing between unrelated RTEs would be disabled.

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

--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -281,36 +281,15 @@ static void __io_apic_eoi(unsigned int a
         /* If pin is unknown, search for it */
         if ( pin == -1 )
         {
-            unsigned int p;
-            for ( p = 0; p < nr_ioapic_entries[apic]; ++p )
+            for ( pin = 0; pin < nr_ioapic_entries[apic]; ++pin )
             {
-                entry = __ioapic_read_entry(apic, p, TRUE);
+                entry = __ioapic_read_entry(apic, pin, TRUE);
                 if ( entry.vector == vector )
-                {
-                    pin = p;
-                    /* break; */
-
-                    /* Here should be a break out of the loop, but at the 
-                     * Xen code doesn't actually prevent multiple IO-APIC
-                     * entries being assigned the same vector, so EOI all
-                     * pins which have the correct vector.
-                     *
-                     * Remove the following code when the above assertion
-                     * is fulfilled. */
-                    __io_apic_eoi(apic, vector, p);
-                }
+                    __io_apic_eoi(apic, vector, pin);
             }
             
             /* If search fails, nothing to do */
 
-            /* if ( pin == -1 ) */
-
-            /* Because the loop wasn't broken out of (see comment above),
-             * all relevant pins have been EOI, so we can always return.
-             * 
-             * Re-instate the if statement above when the Xen logic has been
-             * fixed.*/
-
             return;
         }
 



Attachment: x86-ioapic-EOI-cleanup.patch
Description: Text document

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

 


Rackspace

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