Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=971e5b35fb02c5088d49e6c024aab73582a35b71
Commit:     971e5b35fb02c5088d49e6c024aab73582a35b71
Parent:     213fde71024223abcdd7d9e5349d1ea2679227b5
Author:     Steven Rostedt <[EMAIL PROTECTED]>
AuthorDate: Tue Dec 18 18:05:58 2007 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Tue Dec 18 18:05:58 2007 +0100

    genirq: revert lazy irq disable for simple irqs
    
    In commit 76d2160147f43f982dfe881404cfde9fd0a9da21 lazy irq disabling
    was implemented, and the simple irq handler had a masking set to it.
    
    Remy Bohmer discovered that some devices in the ARM architecture
    would trigger the mask, but never unmask it. His patch to do the
    unmasking was questioned by Russell King about masking simple irqs
    to begin with. Looking further, it was discovered that the problems
    Remy was seeing was due to improper use of the simple handler by
    devices, and he later submitted patches to fix those. But the issue
    that was uncovered was that the simple handler should never mask.
    
    This patch reverts the masking in the simple handler.
    
    Signed-off-by: Steven Rostedt <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
    Acked-by: Russell King <[EMAIL PROTECTED]>
---
 kernel/irq/chip.c |    9 ++-------
 1 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 9b5dff6..44019ce 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -297,18 +297,13 @@ handle_simple_irq(unsigned int irq, struct irq_desc *desc)
 
        if (unlikely(desc->status & IRQ_INPROGRESS))
                goto out_unlock;
+       desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
        kstat_cpu(cpu).irqs[irq]++;
 
        action = desc->action;
-       if (unlikely(!action || (desc->status & IRQ_DISABLED))) {
-               if (desc->chip->mask)
-                       desc->chip->mask(irq);
-               desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
-               desc->status |= IRQ_PENDING;
+       if (unlikely(!action || (desc->status & IRQ_DISABLED)))
                goto out_unlock;
-       }
 
-       desc->status &= ~(IRQ_REPLAY | IRQ_WAITING | IRQ_PENDING);
        desc->status |= IRQ_INPROGRESS;
        spin_unlock(&desc->lock);
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to