Messages in this thread | | | Date | Fri, 10 Nov 2006 17:31:26 +0300 | From | Pavel Emelianov <> | Subject | Re: [RFC] [PATCH] Fix misrouted interrupts deadlocks |
| |
Ingo Molnar wrote: > On Fri, 2006-11-10 at 16:55 +0300, Pavel Emelianov wrote: >> - int ok = misrouted_irq(irq); >> + int ok; >> + >> + spin_unlock(&desc->lock); >> + ok = misrouted_irq(irq); >> + spin_lock(&desc->lock); > > your fix looks reasonable to me - it's a thinko to call misrouted_irq() > with the descriptor lock still held. (btw., how did you find it - > lockdep spinlock debugging or NMI watchdog?)
It was NMI watchdog who reported the deadlock. With lockdep turned on it wouldn't be caught - local_irq_enable_in_hardirq() is nothing but a "do { } while (0)" if CONFIG_LOCKDEP=y :)
The second issue (with 2 cpus involved) was discovered by code examining.
> Acked-by: Ingo Molnar <mingo@redhat.com> > > Ingo > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ >
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |