From: Chris Wright Date: Wed, 7 Mar 2007 22:20:14 +0000 (-0800) Subject: Add Eric Biederman's x86_64 irq fix fwd again from Chuck. X-Git-Tag: v2.6.20.2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7c0a7c8340ddecb67cb3818743b81a7247a79814;p=thirdparty%2Fkernel%2Fstable-queue.git Add Eric Biederman's x86_64 irq fix fwd again from Chuck. --- diff --git a/review-2.6.20/series b/review-2.6.20/series index 7ee492e3877..bacf85c4e85 100644 --- a/review-2.6.20/series +++ b/review-2.6.20/series @@ -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 index 00000000000..f528c10f20a --- /dev/null +++ b/review-2.6.20/x86-64-survive-having-no-irq-mapping-for-a-vector.patch @@ -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 +To: linux-stable +Cc: "Eric W. Biederman" +Subject: x86-64: survive having no irq mapping for a vector + +From: Eric W. Biederman + +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 +Signed-off-by: Andi Kleen +Cc: "Luigi Genoni" +Cc: Andi Kleen +Signed-off-by: Andrew Morton +Signed-off-by: Chris Wright +--- + 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 + #include + #include ++#include + + 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(); +