Ensure a more consistent pt_regs across kprobes, optprobes and KPROBES_ON_FTRACE: - Drop setting trap to 0x700 under optprobes. This is not accurate and is unnecessary. Instead, zero it out for both optprobes and KPROBES_ON_FTRACE. - Save irq soft mask in the ftrace handler, similar to what we do in optprobes and trap-based kprobes. - Drop setting orig_gpr3 and result to zero in optprobes. These are not relevant under kprobes and should not be used by the handlers.
Signed-off-by: Naveen N. Rao <naveen.n....@linux.vnet.ibm.com> --- arch/powerpc/kernel/optprobes_head.S | 5 +---- arch/powerpc/kernel/trace/ftrace_mprofile.S | 6 ++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/kernel/optprobes_head.S b/arch/powerpc/kernel/optprobes_head.S index cd4e7bc32609d3..06df09b4e8b155 100644 --- a/arch/powerpc/kernel/optprobes_head.S +++ b/arch/powerpc/kernel/optprobes_head.S @@ -49,11 +49,8 @@ optprobe_template_entry: /* Save SPRS */ mfmsr r5 PPC_STL r5,_MSR(r1) - li r5,0x700 - PPC_STL r5,_TRAP(r1) li r5,0 - PPC_STL r5,ORIG_GPR3(r1) - PPC_STL r5,RESULT(r1) + PPC_STL r5,_TRAP(r1) mfctr r5 PPC_STL r5,_CTR(r1) mflr r5 diff --git a/arch/powerpc/kernel/trace/ftrace_mprofile.S b/arch/powerpc/kernel/trace/ftrace_mprofile.S index d031093bc43671..f82004089426e6 100644 --- a/arch/powerpc/kernel/trace/ftrace_mprofile.S +++ b/arch/powerpc/kernel/trace/ftrace_mprofile.S @@ -107,6 +107,12 @@ PPC_STL r9, _CTR(r1) PPC_STL r10, _XER(r1) PPC_STL r11, _CCR(r1) +#ifdef CONFIG_PPC64 + lbz r7, PACAIRQSOFTMASK(r13) + std r7, SOFTE(r1) +#endif + li r8, 0 + PPC_STL r8, _TRAP(r1) .endif /* Load &pt_regs in r6 for call below */ -- 2.38.0