Make the irqpoll patch less chatty (rhbz 800520)
Should look at making the frequency of checking dynamic, but this will help the immediate problem.
This commit is contained in:
parent
04412e0aef
commit
25313f2bcf
@ -140,12 +140,12 @@ every time during debugging).
|
|||||||
|
|
||||||
|
|
||||||
Signed-off-by: Jeroen Van den Keybus <jeroen.vandenkeybus@gmail.com>
|
Signed-off-by: Jeroen Van den Keybus <jeroen.vandenkeybus@gmail.com>
|
||||||
|
|
||||||
|
Make it less chatty. Josh Boyer <jwboyer@redhat.com>
|
||||||
======
|
======
|
||||||
|
|
||||||
diff -up linux-3.2-rc4.orig/kernel/irq/spurious.c
|
--- linux-2.6.orig/kernel/irq/spurious.c
|
||||||
linux-3.2-rc4/kernel/irq/spurious.c
|
+++ linux-2.6/kernel/irq/spurious.c
|
||||||
--- linux-3.2-rc4.orig/kernel/irq/spurious.c 2011-12-01 23:56:01.000000000 +0100
|
|
||||||
+++ linux-3.2-rc4/kernel/irq/spurious.c 2011-12-11 16:14:48.188377387 +0100
|
|
||||||
@@ -18,7 +18,7 @@
|
@@ -18,7 +18,7 @@
|
||||||
|
|
||||||
static int irqfixup __read_mostly;
|
static int irqfixup __read_mostly;
|
||||||
@ -173,30 +173,25 @@ linux-3.2-rc4/kernel/irq/spurious.c
|
|||||||
|
|
||||||
if (!i)
|
if (!i)
|
||||||
continue;
|
continue;
|
||||||
@@ -158,15 +159,33 @@ static void poll_spurious_irqs(unsigned
|
@@ -159,14 +160,29 @@ static void poll_spurious_irqs(unsigned
|
||||||
barrier();
|
|
||||||
if (!(state & IRQS_SPURIOUS_DISABLED))
|
if (!(state & IRQS_SPURIOUS_DISABLED))
|
||||||
continue;
|
continue;
|
||||||
-
|
|
||||||
- local_irq_disable();
|
- local_irq_disable();
|
||||||
- try_one_irq(i, desc, true);
|
- try_one_irq(i, desc, true);
|
||||||
- local_irq_enable();
|
- local_irq_enable();
|
||||||
+
|
|
||||||
+ /* We end up here with a disabled spurious interrupt.
|
+ /* We end up here with a disabled spurious interrupt.
|
||||||
+ desc->irqs_unhandled now tracks the number of times
|
+ desc->irqs_unhandled now tracks the number of times
|
||||||
+ the interrupt has been polled */
|
+ the interrupt has been polled */
|
||||||
+
|
+
|
||||||
+ irq = desc->irq_data.irq;
|
+ irq = desc->irq_data.irq;
|
||||||
+ if (desc->irqs_unhandled < 100) { /* 1 second delay with poll frequency 100 Hz */
|
+ if (desc->irqs_unhandled < 100) { /* 1 second delay with poll frequency 100 Hz */
|
||||||
+ if (desc->irqs_unhandled == 0)
|
|
||||||
+ printk("Polling IRQ %d\n", irq);
|
|
||||||
+ local_irq_disable();
|
+ local_irq_disable();
|
||||||
+ try_one_irq(i, desc, true);
|
+ try_one_irq(i, desc, true);
|
||||||
+ local_irq_enable();
|
+ local_irq_enable();
|
||||||
+ desc->irqs_unhandled++;
|
+ desc->irqs_unhandled++;
|
||||||
+ poll_again = 1;
|
+ poll_again = 1;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ printk("Reenabling IRQ %d\n", irq);
|
|
||||||
+ irq_enable(desc); /* Reenable the interrupt line */
|
+ irq_enable(desc); /* Reenable the interrupt line */
|
||||||
+ desc->depth--;
|
+ desc->depth--;
|
||||||
+ desc->istate &= (~IRQS_SPURIOUS_DISABLED);
|
+ desc->istate &= (~IRQS_SPURIOUS_DISABLED);
|
||||||
@ -213,7 +208,7 @@ linux-3.2-rc4/kernel/irq/spurious.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline int bad_action_ret(irqreturn_t action_ret)
|
static inline int bad_action_ret(irqreturn_t action_ret)
|
||||||
@@ -177,11 +196,19 @@ static inline int bad_action_ret(irqretu
|
@@ -177,11 +193,19 @@ static inline int bad_action_ret(irqretu
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -235,7 +230,7 @@ linux-3.2-rc4/kernel/irq/spurious.c
|
|||||||
* functioning device sharing an IRQ with the failing one)
|
* functioning device sharing an IRQ with the failing one)
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
@@ -302,19 +329,19 @@ void note_interrupt(unsigned int irq, st
|
@@ -302,19 +326,19 @@ void note_interrupt(unsigned int irq, st
|
||||||
}
|
}
|
||||||
|
|
||||||
desc->irq_count++;
|
desc->irq_count++;
|
||||||
@ -259,11 +254,3 @@ linux-3.2-rc4/kernel/irq/spurious.c
|
|||||||
desc->istate |= IRQS_SPURIOUS_DISABLED;
|
desc->istate |= IRQS_SPURIOUS_DISABLED;
|
||||||
desc->depth++;
|
desc->depth++;
|
||||||
irq_disable(desc);
|
irq_disable(desc);
|
||||||
|
|
||||||
======
|
|
||||||
--
|
|
||||||
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
|
||||||
the body of a message to majordomo@vger.kernel.org
|
|
||||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
||||||
Please read the FAQ at http://www.tux.org/lkml/
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user