diff options
Diffstat (limited to 'trunk/2.6.18/30062_clear-spurious-irq.patch')
-rw-r--r-- | trunk/2.6.18/30062_clear-spurious-irq.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/trunk/2.6.18/30062_clear-spurious-irq.patch b/trunk/2.6.18/30062_clear-spurious-irq.patch new file mode 100644 index 0000000..6873d8c --- /dev/null +++ b/trunk/2.6.18/30062_clear-spurious-irq.patch @@ -0,0 +1,34 @@ +From: Linus Torvalds <torvalds@woody.linux-foundation.org> +Date: Tue, 23 Jan 2007 22:16:31 +0000 (-0800) +Subject: Clear spurious irq stat information when adding irq handler +X-Git-Tag: v2.6.20-rc6~15 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=8528b0f1de1101c6002036fd53638fb21111d0ea + +Clear spurious irq stat information when adding irq handler + +Any newly added irq handler may obviously make any old spurious irq +status invalid, since the new handler may well be the thing that is +supposed to handle any interrupts that came in. + +So just clear the statistics when adding handlers. + +Pointed-out-by: Alan Cox <alan@lxorguk.ukuu.org.uk> +Acked-by: Thomas Gleixner <tglx@linutronix.de> +Acked-by: Ingo Molnar <mingo@elte.hu> +Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> +--- + +diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c +index b385878..8b961ad 100644 +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -315,6 +315,9 @@ int setup_irq(unsigned int irq, struct irqaction *new) + /* Undo nested disables: */ + desc->depth = 1; + } ++ /* Reset broken irq detection when installing new handler */ ++ desc->irq_count = 0; ++ desc->irqs_unhandled = 0; + spin_unlock_irqrestore(&desc->lock, flags); + + new->irq = irq; |