lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 122/879] xtensa: move trace_hardirqs_off call back to entry.S
    Date
    From: Max Filippov <jcmvbkbc@gmail.com>

    [ Upstream commit de4415d0bac91192ee9c74e849bc61429efa9b42 ]

    Context tracking call must be done after hardirq tracking call,
    otherwise lockdep_assert_irqs_disabled called from rcu_eqs_exit gives
    a warning. To avoid context tracking logic duplication for IRQ/exception
    entry paths move trace_hardirqs_off call back to common entry code.

    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/xtensa/kernel/entry.S | 19 +++++++++++++------
    arch/xtensa/kernel/traps.c | 11 ++---------
    2 files changed, 15 insertions(+), 15 deletions(-)

    diff --git a/arch/xtensa/kernel/entry.S b/arch/xtensa/kernel/entry.S
    index 6b6eff658795..07d683d94e17 100644
    --- a/arch/xtensa/kernel/entry.S
    +++ b/arch/xtensa/kernel/entry.S
    @@ -442,7 +442,6 @@ KABI_W or a3, a3, a0
    moveqz a3, a0, a2 # a3 = LOCKLEVEL iff interrupt
    KABI_W movi a2, PS_WOE_MASK
    KABI_W or a3, a3, a2
    - rsr a2, exccause
    #endif

    /* restore return address (or 0 if return to userspace) */
    @@ -469,19 +468,27 @@ KABI_W or a3, a3, a2

    save_xtregs_opt a1 a3 a4 a5 a6 a7 PT_XTREGS_OPT

    +#ifdef CONFIG_TRACE_IRQFLAGS
    + rsr abi_tmp0, ps
    + extui abi_tmp0, abi_tmp0, PS_INTLEVEL_SHIFT, PS_INTLEVEL_WIDTH
    + beqz abi_tmp0, 1f
    + abi_call trace_hardirqs_off
    +1:
    +#endif
    +
    /* Go to second-level dispatcher. Set up parameters to pass to the
    * exception handler and call the exception handler.
    */

    - rsr a4, excsave1
    - addx4 a4, a2, a4
    - l32i a4, a4, EXC_TABLE_DEFAULT # load handler
    - mov abi_arg1, a2 # pass EXCCAUSE
    + l32i abi_arg1, a1, PT_EXCCAUSE # pass EXCCAUSE
    + rsr abi_tmp0, excsave1
    + addx4 abi_tmp0, abi_arg1, abi_tmp0
    + l32i abi_tmp0, abi_tmp0, EXC_TABLE_DEFAULT # load handler
    mov abi_arg0, a1 # pass stack frame

    /* Call the second-level handler */

    - abi_callx a4
    + abi_callx abi_tmp0

    /* Jump here for exception exit */
    .global common_exception_return
    diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c
    index 9345007d474d..5f86208c67c8 100644
    --- a/arch/xtensa/kernel/traps.c
    +++ b/arch/xtensa/kernel/traps.c
    @@ -242,12 +242,8 @@ DEFINE_PER_CPU(unsigned long, nmi_count);

    void do_nmi(struct pt_regs *regs)
    {
    - struct pt_regs *old_regs;
    + struct pt_regs *old_regs = set_irq_regs(regs);

    - if ((regs->ps & PS_INTLEVEL_MASK) < LOCKLEVEL)
    - trace_hardirqs_off();
    -
    - old_regs = set_irq_regs(regs);
    nmi_enter();
    ++*this_cpu_ptr(&nmi_count);
    check_valid_nmi();
    @@ -269,12 +265,9 @@ void do_interrupt(struct pt_regs *regs)
    XCHAL_INTLEVEL6_MASK,
    XCHAL_INTLEVEL7_MASK,
    };
    - struct pt_regs *old_regs;
    + struct pt_regs *old_regs = set_irq_regs(regs);
    unsigned unhandled = ~0u;

    - trace_hardirqs_off();
    -
    - old_regs = set_irq_regs(regs);
    irq_enter();

    for (;;) {
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-08 00:12    [W:2.525 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site