lkml.org 
[lkml]   [2011]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[125/272] genirq: Prevent irq storm on migration
    2.6.37-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Thomas Gleixner <tglx@linutronix.de>

    commit f1a06390d013244e721372b3f9b66e39b6429c71 upstream.

    move_native_irq() masks and unmasks the interrupt line
    unconditionally, but the interrupt line might be masked due to a
    threaded oneshot handler in progress. Unmasking the line in that case
    can lead to interrupt storms. Observed on PREEMPT_RT.

    Originally-from: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    kernel/irq/migration.c | 14 +++++++++++---
    1 file changed, 11 insertions(+), 3 deletions(-)

    --- a/kernel/irq/migration.c
    +++ b/kernel/irq/migration.c
    @@ -56,6 +56,7 @@ void move_masked_irq(int irq)
    void move_native_irq(int irq)
    {
    struct irq_desc *desc = irq_to_desc(irq);
    + bool masked;

    if (likely(!(desc->status & IRQ_MOVE_PENDING)))
    return;
    @@ -63,8 +64,15 @@ void move_native_irq(int irq)
    if (unlikely(desc->status & IRQ_DISABLED))
    return;

    - desc->irq_data.chip->irq_mask(&desc->irq_data);
    + /*
    + * Be careful vs. already masked interrupts. If this is a
    + * threaded interrupt with ONESHOT set, we can end up with an
    + * interrupt storm.
    + */
    + masked = desc->status & IRQ_MASKED;
    + if (!masked)
    + desc->irq_data.chip->irq_mask(&desc->irq_data);
    move_masked_irq(irq);
    - desc->irq_data.chip->irq_unmask(&desc->irq_data);
    + if (!masked)
    + desc->irq_data.chip->irq_unmask(&desc->irq_data);
    }
    -



    \
     
     \ /
      Last update: 2011-02-16 02:33    [W:0.022 / U:33.708 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site