x86: Continue to allocate vectors across LAPIC priority levels, since
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 8 Oct 2008 10:59:01 +0000 (11:59 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 8 Oct 2008 10:59:01 +0000 (11:59 +0100)
it's easy to do. It's not really necessary for modern non-buggy APICs
though.

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/io_apic.c

index 979addedb546f919514ab85012f03cded5cbd201..aa21f18104c52c023cc8357499c4a5046186a351 100644 (file)
@@ -697,8 +697,9 @@ int assign_irq_vector(int irq)
 
     vector = current_vector;
     while (vector_irq[vector] != FREE_TO_ASSIGN) {
-        if (++vector > LAST_DYNAMIC_VECTOR)
-            vector = FIRST_DYNAMIC_VECTOR;
+        vector += 8;
+        if (vector > LAST_DYNAMIC_VECTOR)
+            vector = FIRST_DYNAMIC_VECTOR + ((vector + 1) & 7);
 
         if (vector == current_vector) {
             spin_unlock(&vector_lock);