Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: genirq: Force MSI irq handlers to run with interrupts disabled
This commit is contained in:
Коммит
94c4fcec01
|
@ -757,6 +757,16 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
|
|||
if (new->flags & IRQF_ONESHOT)
|
||||
desc->status |= IRQ_ONESHOT;
|
||||
|
||||
/*
|
||||
* Force MSI interrupts to run with interrupts
|
||||
* disabled. The multi vector cards can cause stack
|
||||
* overflows due to nested interrupts when enough of
|
||||
* them are directed to a core and fire at the same
|
||||
* time.
|
||||
*/
|
||||
if (desc->msi_desc)
|
||||
new->flags |= IRQF_DISABLED;
|
||||
|
||||
if (!(desc->status & IRQ_NOAUTOEN)) {
|
||||
desc->depth = 0;
|
||||
desc->status &= ~IRQ_DISABLED;
|
||||
|
|
Загрузка…
Ссылка в новой задаче