Previously, these messages were only issued when old and new RTE
differed. Make it so again (requiring adjustment of the guest provided
RTE as that no longer holds a real vector).
While at it, also make the "allocated vector for irq" message more
useful and occur when what it says really happened.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
--- 2010-03-02.orig/xen/arch/x86/io_apic.c 2010-03-17 12:02:43.000000000
+0100
+++ 2010-03-02/xen/arch/x86/io_apic.c 2010-03-17 12:08:06.000000000 +0100
@@ -2282,18 +2282,24 @@ int ioapic_guest_write(unsigned long phy
if ( desc->action )
{
- WARN_BOGUS_WRITE("Attempt to modify IO-APIC pin for in-use IRQ!\n");
+ spin_lock_irqsave(&ioapic_lock, flags);
+ ret = io_apic_read(apic, 0x10 + 2 * pin);
+ spin_unlock_irqrestore(&ioapic_lock, flags);
+ rte.vector = cfg->vector;
+ if ( *(u32*)&rte != ret )
+ WARN_BOGUS_WRITE("old_entry=%08x pirq=%d\n%s: "
+ "Attempt to modify IO-APIC pin for in-use IRQ!\n",
+ ret, pirq, __FUNCTION__);
return 0;
}
if ( cfg->vector <= 0 || cfg->vector > LAST_DYNAMIC_VECTOR ) {
-
- printk("allocated vector for irq:%d\n", irq);
-
vector = assign_irq_vector(irq);
if ( vector < 0 )
return vector;
+ printk(XENLOG_INFO "allocated vector %02x for irq %d\n", vector, irq);
+
add_pin_to_irq(irq, apic, pin);
}
spin_lock(&pcidevs_lock);
x86-ioapic-guest-write.patch
Description: Text document
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|