[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Make c/s 21089 work again with c/s 21092
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1271169507 -3600 # Node ID 0bebb5fa4f051df9b4fed4d11a723fae91bc7523 # Parent 859a372efa66e6bcba8e1fd968e521cb16da12ea Make c/s 21089 work again with c/s 21092 Unfortunately the latter c/s' change to mpparse.c yielded the former patch non-functional - Xen's serial port IRQ is not in IQR_DISABLED state, yet must be allowed to get its trigger mode and polarity set up in order for it to be usable. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> --- xen/arch/x86/mpparse.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletion(-) diff -r 859a372efa66 -r 0bebb5fa4f05 xen/arch/x86/mpparse.c --- a/xen/arch/x86/mpparse.c Tue Apr 13 13:40:58 2010 +0100 +++ b/xen/arch/x86/mpparse.c Tue Apr 13 15:38:27 2010 +0100 @@ -1103,6 +1103,8 @@ int mp_register_gsi (u32 gsi, int trigge int ioapic = -1; int ioapic_pin = 0; int idx, bit = 0; + struct irq_desc * desc; + unsigned long flags; /* * Mapping between Global System Interrups, which @@ -1127,8 +1129,13 @@ int mp_register_gsi (u32 gsi, int trigge if (ioapic_renumber_irq) gsi = ioapic_renumber_irq(ioapic, gsi); - if (!(irq_to_desc(gsi)->status & IRQ_DISABLED)) + desc = irq_to_desc(gsi); + spin_lock_irqsave(&desc->lock, flags); + if (!(desc->status & IRQ_DISABLED) && desc->handler != &no_irq_type) { + spin_unlock_irqrestore(&desc->lock, flags); return -EEXIST; + } + spin_unlock_irqrestore(&desc->lock, flags); /* * Avoid pin reprogramming. PRTs typically include entries _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |