lkml.org 
[lkml]   [2018]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.15 113/128] powerpc/64: Dont trace irqs-off at interrupt return to soft-disabled context
    Date
    4.15-stable review patch.  If anyone has any objections, please let me know.

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

    From: Nicholas Piggin <npiggin@gmail.com>


    [ Upstream commit acb1feab320e38588fccc568e3767761f494976f ]

    When an interrupt is returning to a soft-disabled context (which can
    happen for non-maskable interrupts or synchronous interrupts), it goes
    through the motions of soft-disabling again, including calling
    TRACE_DISABLE_INTS (i.e., trace_hardirqs_off()).

    This is not necessary, because we must already be soft-disabled in the
    interrupt context, it also may be causing crashes in the irq tracing
    code to re-enter as an nmi. Replace it with a warning to ensure that
    soft-interrupts are still disabled.

    Fixes: 7c0482e3d055 ("powerpc/irq: Fix another case of lazy IRQ state getting out of sync")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/powerpc/kernel/entry_64.S | 10 +++++++---
    1 file changed, 7 insertions(+), 3 deletions(-)

    --- a/arch/powerpc/kernel/entry_64.S
    +++ b/arch/powerpc/kernel/entry_64.S
    @@ -939,9 +939,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
    beq 1f
    rlwinm r7,r7,0,~PACA_IRQ_HARD_DIS
    stb r7,PACAIRQHAPPENED(r13)
    -1: li r0,0
    - stb r0,PACASOFTIRQEN(r13);
    - TRACE_DISABLE_INTS
    +1:
    +#if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_BUG)
    + /* The interrupt should not have soft enabled. */
    + lbz r7,PACASOFTIRQEN(r13)
    +1: tdnei r7,0
    + EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,BUGFLAG_WARNING
    +#endif
    b .Ldo_restore

    /*

    \
     
     \ /
      Last update: 2018-03-16 16:52    [W:4.142 / U:0.748 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site