• Palmer Dabbelt's avatar
    Merge patch series "riscv: Optimize function trace" · ec631191
    Palmer Dabbelt authored
    guoren@kernel.org <guoren@kernel.org> says:
    
    From: Guo Ren <guoren@linux.alibaba.com>
    
    The previous ftrace detour implementation fc76b8b8011 ("riscv: Using
    PATCHABLE_FUNCTION_ENTRY instead of MCOUNT") contain three problems.
    
     - The most horrible bug is preemption panic which found by Andy [1].
       Let's disable preemption for ftrace first, and Andy could continue
       the ftrace preemption work.
     - The "-fpatchable-function-entry= CFLAG" wasted code size
       !RISCV_ISA_C.
     - The ftrace detour implementation wasted code size.
     - When livepatching, the trampoline (ftrace_regs_caller) would not
       return to <func_prolog+12> but would rather jump to the new function.
       So, "REG_L ra, -SZREG(sp)" would not run and the original return
       address would not be restored. The kernel is likely to hang or crash
       as a result. (Found by Evgenii Shatokhin [4])
    
    [Palmer: The first three patches in this series are pretty concrete
    fixes, so I'm pulling them ahead of the rest of the series.]
    
    * b4-shazam-merge:
      riscv: ftrace: Reduce the detour code size to half
      riscv: ftrace: Remove wasted nops for !RISCV_ISA_C
      riscv: ftrace: Fixup panic by disabling preemption
    
    Link: https://lore.kernel.org/r/20230112090603.1295340-1-guoren@kernel.orgSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    ec631191
Makefile 4.95 KB