The patch titled x86_64 irq: scream but don't die if we receive an unexpected irq has been added to the -mm tree. Its filename is x86_64-irq-scream-but-dont-die-if-we-receive-an-unexpected-irq.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: x86_64 irq: scream but don't die if we receive an unexpected irq From: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> Due to code bugs or misbehaving hardware it is possible that we can receive an interrupt that we have not mapped into a linux irq. Calling BUG when that happens is very rude, and if the problem is mild enough prevents anything else from getting done. So instead of calling BUG just scream loudly about the problem and continue running. We don't have enough knowledge to know which interrupt triggered this behavior so we don't acknowledge it. This will likely prevent a recurrence of the problem by jamming up the works with an unacknowledged interrupt. If the interrupt was something important it is quite possible that nothing productive will happen past this point. But it is now at least possible to keep working if the kernel can survive without the interrupt we dropped on the floor. Solutions like irqpoll should generally make dropped irqs non-fatal. Signed-off-by: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> Cc: Andi Kleen <ak@xxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- arch/x86_64/kernel/irq.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff -puN arch/x86_64/kernel/irq.c~x86_64-irq-scream-but-dont-die-if-we-receive-an-unexpected-irq arch/x86_64/kernel/irq.c --- a/arch/x86_64/kernel/irq.c~x86_64-irq-scream-but-dont-die-if-we-receive-an-unexpected-irq +++ a/arch/x86_64/kernel/irq.c @@ -114,16 +114,16 @@ asmlinkage unsigned int do_IRQ(struct pt irq_enter(); irq = __get_cpu_var(vector_irq)[vector]; - if (unlikely(irq >= NR_IRQS)) { - printk(KERN_EMERG "%s: cannot handle IRQ %d\n", - __FUNCTION__, irq); - BUG(); - } - #ifdef CONFIG_DEBUG_STACKOVERFLOW stack_overflow_check(regs); #endif - generic_handle_irq(irq); + + if (likely(irq < NR_IRQS)) + generic_handle_irq(irq); + else + printk(KERN_EMERG "%s: %d.%d No irq handler for vector\n", + __func__, smp_processor_id(), vector); + irq_exit(); set_irq_regs(old_regs); _ Patches currently in -mm which might be from ebiederm@xxxxxxxxxxxx are origin.patch x86_64-overlapping-program-headers-in-physical-addr-space-fix.patch insert-local-and-io-apics-into-resource-map.patch x86_64-irq-scream-but-dont-die-if-we-receive-an-unexpected-irq.patch i386-distinguish-absolute-symbols.patch i386-distinguish-absolute-symbols-fix.patch i386-define-__pa_symbol-2.patch i386-setupc-reserve-kernel-memory-starting-from-_text.patch i386-config_physical_start-cleanup.patch make-linux-elfh-safe-to-be-included-in-assembly-files.patch elf-add-elfosabi_standalone-to-elfh.patch kallsyms-generate-relocatable-symbols.patch i386-relocatable-kernel-support.patch i386-boot-add-an-elf-header-to-bzimage.patch i386-boot-add-an-elf-header-to-bzimage-fix.patch i386-boot-add-an-elf-header-to-bzimage-update-2.patch i386-boot-add-an-elf-header-to-bzimage-fix-fix.patch i386-boot-add-an-elf-header-to-bzimage-fix-fix-fix.patch i386-boot-add-an-elf-header-to-bzimage-fix-fix-fix-fix.patch ht_irq-must-depend-on-pci.patch pidhash-temporary-debug-checks.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html