- x86_64-irq-scream-but-dont-die-if-we-receive-an-unexpected-irq.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled

     x86_64 irq: scream but don't die if we receive an unexpected irq

has been removed from the -mm tree.  Its filename is

     x86_64-irq-scream-but-dont-die-if-we-receive-an-unexpected-irq.patch

This patch was dropped because it was merged into mainline or a subsystem tree

------------------------------------------------------
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
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

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux