[kernel/f15] Fixup irqpoll patch to really not impact machines without ASM108x bridges (rhbz 800520)
Josh Boyer
jwboyer at fedoraproject.org
Fri Mar 16 16:44:34 UTC 2012
commit e8229fb9d20c05c37a0ab0b6f985d5aa65d602ec
Author: Josh Boyer <jwboyer at redhat.com>
Date: Fri Mar 16 07:58:36 2012 -0400
Fixup irqpoll patch to really not impact machines without ASM108x bridges (rhbz 800520)
WITH FEELING THIS TIME
kernel.spec | 7 +++++--
unhandled-irqs-switch-to-polling.patch | 25 +++++++++++++++++++++----
2 files changed, 26 insertions(+), 6 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 22455d8..915f095 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -42,7 +42,7 @@ Summary: The Linux kernel
# When changing real_sublevel below, reset this by hand to 1
# (or to 0 and then use rpmdev-bumpspec).
#
-%global baserelease 3
+%global baserelease 4
%global fedora_build %{baserelease}
# real_sublevel is the 3.x kernel version we're starting with
@@ -1340,7 +1340,7 @@ ApplyPatch sony-laptop-Enable-keyboard-backlight-by-default.patch
#Disable threading in hibernate compression
ApplyPatch disable-threading-in-compression-for-hibernate.patch
-# ApplyPatch unhandled-irqs-switch-to-polling.patch
+ApplyPatch unhandled-irqs-switch-to-polling.patch
ApplyPatch weird-root-dentry-name-debug.patch
@@ -1996,6 +1996,9 @@ fi
# and build.
%changelog
+* Fri Mar 16 2012 Josh Boyer <jwboyer at redhat.com>
+- Fix irqpoll patch to really only apply for ASM108x machines (rhbz 800520)
+
* Thu Mar 15 2012 Justin M. Forbes <jforbes at redhat.com> - 2.6.42.10-3
- CVE-2012-1179 fix pmd_bad() triggering in code paths holding mmap_sem read mode (rhbz 803809)
diff --git a/unhandled-irqs-switch-to-polling.patch b/unhandled-irqs-switch-to-polling.patch
index 39169ba..2f25cda 100644
--- a/unhandled-irqs-switch-to-polling.patch
+++ b/unhandled-irqs-switch-to-polling.patch
@@ -174,17 +174,34 @@ Josh Boyer <jwboyer at redhat.com>
* functioning device sharing an IRQ with the failing one)
*/
static void
-@@ -302,19 +332,24 @@ void note_interrupt(unsigned int irq, st
+@@ -269,6 +299,8 @@ try_misrouted_irq(unsigned int irq, stru
+ void note_interrupt(unsigned int irq, struct irq_desc *desc,
+ irqreturn_t action_ret)
+ {
++ int unhandled_thresh = 999000;
++
+ if (desc->istate & IRQS_POLL_INPROGRESS)
+ return;
+
+@@ -302,19 +334,31 @@ void note_interrupt(unsigned int irq, st
}
desc->irq_count++;
- if (likely(desc->irq_count < 100000))
-+ if (likely(desc->irq_count < 10))
- return;
+- return;
++ if (!irq_poll_and_retry)
++ if (likely(desc->irq_count < 100000))
++ return;
++ else
++ if (likely(desc->irq_count < 10))
++ return;
desc->irq_count = 0;
- if (unlikely(desc->irqs_unhandled > 99900)) {
-+ if (unlikely(desc->irqs_unhandled >= 9)) {
++ if (irq_poll_and_retry)
++ unhandled_thresh = 9;
++
++ if (unlikely(desc->irqs_unhandled >= unhandled_thresh)) {
/*
- * The interrupt is stuck
+ * The interrupt might be stuck
More information about the scm-commits
mailing list