]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Add Eric Biederman's x86_64 irq fix fwd again from Chuck.
authorChris Wright <chrisw@sous-sol.org>
Wed, 7 Mar 2007 22:20:14 +0000 (14:20 -0800)
committerChris Wright <chrisw@sous-sol.org>
Wed, 7 Mar 2007 22:20:14 +0000 (14:20 -0800)
review-2.6.20/series
review-2.6.20/x86-64-survive-having-no-irq-mapping-for-a-vector.patch [new file with mode: 0644]

index 7ee492e3877e091a2d3479aec6578bf324140644..bacf85c4e858168b4d0cf07ca440cc1dda74b7fb 100644 (file)
@@ -101,3 +101,4 @@ ata-convert-gsi-to-irq-on-ia64.patch
 gfs2-fix-locking-mistake.patch
 tcp-fix-minisock-tcp_create_openreq_child-typo.patch
 fix-buffer-overflow-in-omnikey-cardman-4040-driver.patch
+x86-64-survive-having-no-irq-mapping-for-a-vector.patch
diff --git a/review-2.6.20/x86-64-survive-having-no-irq-mapping-for-a-vector.patch b/review-2.6.20/x86-64-survive-having-no-irq-mapping-for-a-vector.patch
new file mode 100644 (file)
index 0000000..f528c10
--- /dev/null
@@ -0,0 +1,56 @@
+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();