--- /dev/null
+From stable-bounces@linux.kernel.org Wed Mar 7 11:26:46 2007
+Message-ID: <45EF114A.0@redhat.com>
+Date: Wed, 07 Mar 2007 14:23:54 -0500
+From: Chuck Ebbert <cebbert@redhat.com>
+To: linux-stable <stable@kernel.org>
+Cc: "Eric W. Biederman" <ebiederm@xmission.com>
+Subject: x86-64: survive having no irq mapping for a vector
+
+From: Eric W. Biederman <ebiederm@xmission.com>
+
+Occasionally the kernel has bugs that result in no irq being found for a
+given cpu vector. If we acknowledge the irq the system has a good chance
+of continuing even though we dropped an irq message. If we continue to
+simply print a message and not acknowledge the irq the system is likely to
+become non-responsive shortly there after.
+
+AK: Fixed compilation for UP kernels
+
+Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
+Signed-off-by: Andi Kleen <ak@suse.de>
+Cc: "Luigi Genoni" <luigi.genoni@pirelli.com>
+Cc: Andi Kleen <ak@suse.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ arch/x86_64/kernel/irq.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+--- linux-2.6.20.1.orig/arch/x86_64/kernel/irq.c
++++ linux-2.6.20.1/arch/x86_64/kernel/irq.c
+@@ -18,6 +18,7 @@
+ #include <asm/uaccess.h>
+ #include <asm/io_apic.h>
+ #include <asm/idle.h>
++#include <asm/smp.h>
+
+ atomic_t irq_err_count;
+
+@@ -120,9 +121,14 @@ asmlinkage unsigned int do_IRQ(struct pt
+
+ if (likely(irq < NR_IRQS))
+ generic_handle_irq(irq);
+- else if (printk_ratelimit())
+- printk(KERN_EMERG "%s: %d.%d No irq handler for vector\n",
+- __func__, smp_processor_id(), vector);
++ else {
++ if (!disable_apic)
++ ack_APIC_irq();
++
++ if (printk_ratelimit())
++ printk(KERN_EMERG "%s: %d.%d No irq handler for vector\n",
++ __func__, smp_processor_id(), vector);
++ }
+
+ irq_exit();
+