lkml.org 
[lkml]   [2018]   [Mar]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.15 040/146] MIPS: BMIPS: Do not mask IPIs during suspend
    Date
    4.15-stable review patch.  If anyone has any objections, please let me know.

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

    From: Justin Chen <justinpopo6@gmail.com>

    commit 06a3f0c9f2725f5d7c63c4203839373c9bd00c28 upstream.

    Commit a3e6c1eff548 ("MIPS: IRQ: Fix disable_irq on CPU IRQs") fixes an
    issue where disable_irq did not actually disable the irq. The bug caused
    our IPIs to not be disabled, which actually is the correct behavior.

    With the addition of commit a3e6c1eff548 ("MIPS: IRQ: Fix disable_irq on
    CPU IRQs"), the IPIs were getting disabled going into suspend, thus
    schedule_ipi() was not being called. This caused deadlocks where
    schedulable task were not being scheduled and other cpus were waiting
    for them to do something.

    Add the IRQF_NO_SUSPEND flag so an irq_disable will not be called on the
    IPIs during suspend.

    Signed-off-by: Justin Chen <justinpopo6@gmail.com>
    Fixes: a3e6c1eff548 ("MIPS: IRQ: Fix disabled_irq on CPU IRQs")
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: linux-mips@linux-mips.org
    Cc: stable@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17385/
    [jhogan@kernel.org: checkpatch: wrap long lines and fix commit refs]
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/mips/kernel/smp-bmips.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    --- a/arch/mips/kernel/smp-bmips.c
    +++ b/arch/mips/kernel/smp-bmips.c
    @@ -168,11 +168,11 @@ static void bmips_prepare_cpus(unsigned
    return;
    }

    - if (request_irq(IPI0_IRQ, bmips_ipi_interrupt, IRQF_PERCPU,
    - "smp_ipi0", NULL))
    + if (request_irq(IPI0_IRQ, bmips_ipi_interrupt,
    + IRQF_PERCPU | IRQF_NO_SUSPEND, "smp_ipi0", NULL))
    panic("Can't request IPI0 interrupt");
    - if (request_irq(IPI1_IRQ, bmips_ipi_interrupt, IRQF_PERCPU,
    - "smp_ipi1", NULL))
    + if (request_irq(IPI1_IRQ, bmips_ipi_interrupt,
    + IRQF_PERCPU | IRQF_NO_SUSPEND, "smp_ipi1", NULL))
    panic("Can't request IPI1 interrupt");
    }


    \
     
     \ /
      Last update: 2018-03-13 18:02    [W:4.051 / U:0.376 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site