Messages in this thread Patch in this message | | | Date | Tue, 09 Aug 2022 11:55:42 +0530 | From | "Naveen N. Rao" <> | Subject | Re: [PATCH v3 11/25] powerpc/ftrace: Make __ftrace_make_{nop/call}() common to PPC32 and PPC64 |
| |
Nick Desaulniers wrote: > Christ...that's not what I meant to send; sorry, mutt is giving me > bizarro errors today so I can't insert myself into threads using the > usual incantation I have in the past. What I meant to send was: > > Christophe, > Ondrej reported a regression with ftrace when building w/ clang > bisected to this commit. Can you PTAL? > https://github.com/ClangBuiltLinux/linux/issues/1682
Thanks for the report. That was my doing - I tend to miss the fact that clang doesn't support -mprofile-kernel. Can you check if the below patch fixes it for you?
- Naveen
--- diff --git a/arch/powerpc/kernel/trace/ftrace.c b/arch/powerpc/kernel/trace/ftrace.c index cb158c32b50b99..7b85c3b460a3c0 100644 --- a/arch/powerpc/kernel/trace/ftrace.c +++ b/arch/powerpc/kernel/trace/ftrace.c @@ -393,11 +393,11 @@ int ftrace_make_nop(struct module *mod, */ static bool expected_nop_sequence(void *ip, ppc_inst_t op0, ppc_inst_t op1) { - if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V1)) + if (IS_ENABLED(CONFIG_DYNAMIC_FTRACE_WITH_REGS)) + return ppc_inst_equal(op0, ppc_inst(PPC_RAW_NOP())); + else return ppc_inst_equal(op0, ppc_inst(PPC_RAW_BRANCH(8))) && ppc_inst_equal(op1, ppc_inst(PPC_INST_LD_TOC)); - else - return ppc_inst_equal(op0, ppc_inst(PPC_RAW_NOP())); } static int @@ -412,7 +412,7 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) if (copy_inst_from_kernel_nofault(op, ip)) return -EFAULT; - if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V1) && + if (!IS_ENABLED(CONFIG_DYNAMIC_FTRACE_WITH_REGS) && copy_inst_from_kernel_nofault(op + 1, ip + 4)) return -EFAULT;
| |