Message ID | 5ad23690185a90a887514d702ecb45783090d7c0.1527596631.git.naveen.n.rao@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | error-injection: simplify code and powerpc support | expand |
"Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> writes: > ... A change log is always nice even if it's short :) > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> > --- > arch/powerpc/Kconfig | 1 + > arch/powerpc/include/asm/error-injection.h | 9 +++++++++ > arch/powerpc/include/asm/ptrace.h | 5 +++++ > 3 files changed, 15 insertions(+) > create mode 100644 arch/powerpc/include/asm/error-injection.h This looks fine to me, it's probably easiest if it goes in via tip along with patch 1. Acked-by: Michael Ellerman <mpe@ellerman.id.au> cheers > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 23247fa551e7..ed1ab693f945 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -194,6 +194,7 @@ config PPC > select HAVE_EBPF_JIT if PPC64 > select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU) > select HAVE_FTRACE_MCOUNT_RECORD > + select HAVE_FUNCTION_ERROR_INJECTION > select HAVE_FUNCTION_GRAPH_TRACER > select HAVE_FUNCTION_TRACER > select HAVE_GCC_PLUGINS > diff --git a/arch/powerpc/include/asm/error-injection.h b/arch/powerpc/include/asm/error-injection.h > new file mode 100644 > index 000000000000..b596eca04ef9 > --- /dev/null > +++ b/arch/powerpc/include/asm/error-injection.h > @@ -0,0 +1,9 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef _ASM_ERROR_INJECTION_H > +#define _ASM_ERROR_INJECTION_H > + > +#include <asm-generic/error-injection.h> > + > +#define ARCH_FUNC_RET "blr" > + > +#endif /* _ASM_ERROR_INJECTION_H */ > diff --git a/arch/powerpc/include/asm/ptrace.h b/arch/powerpc/include/asm/ptrace.h > index e4923686e43a..c0705296c2f0 100644 > --- a/arch/powerpc/include/asm/ptrace.h > +++ b/arch/powerpc/include/asm/ptrace.h > @@ -101,6 +101,11 @@ static inline long regs_return_value(struct pt_regs *regs) > return -regs->gpr[3]; > } > > +static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc) > +{ > + regs->gpr[3] = rc; > +} > + > #ifdef __powerpc64__ > #define user_mode(regs) ((((regs)->msr) >> MSR_PR_LG) & 0x1) > #else > -- > 2.17.0
Michael Ellerman wrote: > "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> writes: >> ... > > A change log is always nice even if it's short :) I tried, but really couldn't come up with anything more to write. I'll try harder for v2 :) > >> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> >> --- >> arch/powerpc/Kconfig | 1 + >> arch/powerpc/include/asm/error-injection.h | 9 +++++++++ >> arch/powerpc/include/asm/ptrace.h | 5 +++++ >> 3 files changed, 15 insertions(+) >> create mode 100644 arch/powerpc/include/asm/error-injection.h > > This looks fine to me, it's probably easiest if it goes in via tip along > with patch 1. > > Acked-by: Michael Ellerman <mpe@ellerman.id.au> Thanks for the review. I'll base v2 on -tip - Naveen
"Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> writes: > Michael Ellerman wrote: >> "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> writes: >>> ... >> >> A change log is always nice even if it's short :) > > I tried, but really couldn't come up with anything more to write. I'll > try harder for v2 :) Yeah true. You could just say "All that's required is to define x and y and select the Kconfig symbol". >> This looks fine to me, it's probably easiest if it goes in via tip along >> with patch 1. >> >> Acked-by: Michael Ellerman <mpe@ellerman.id.au> > > Thanks for the review. I'll base v2 on -tip I guess if it doesn't already apply to tip you should rebase it. You've probably missed 4.18 anyway. cheers
Michael Ellerman wrote: > "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> writes: > >> Michael Ellerman wrote: >>> "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> writes: >>>> ... >>> >>> A change log is always nice even if it's short :) >> >> I tried, but really couldn't come up with anything more to write. I'll >> try harder for v2 :) > > Yeah true. > > You could just say "All that's required is to define x and y and select > the Kconfig symbol". Ok, sure. > >>> This looks fine to me, it's probably easiest if it goes in via tip along >>> with patch 1. >>> >>> Acked-by: Michael Ellerman <mpe@ellerman.id.au> >> >> Thanks for the review. I'll base v2 on -tip > > I guess if it doesn't already apply to tip you should rebase it. You've > probably missed 4.18 anyway. Oh ok. I just tried and it seems to apply just fine. I'll post v2 after giving this a quick test. - Naveen
Naveen N. Rao wrote: > Michael Ellerman wrote: >> >> I guess if it doesn't already apply to tip you should rebase it. You've >> probably missed 4.18 anyway. > > Oh ok. I just tried and it seems to apply just fine. I'll post v2 after > giving this a quick test. I didn't post a v2 since I have decided against using this approach. The reason for that is Masami's series to remove jprobes. The discussion there reminded me that we can't easily override functions with kprobes on powerpc. Though it works for this particular scenario, we would just be setting a bad example. As such, I won't be changing generic code, but will simply make the necessary changes in powerpc code. Sorry for the noise. - Naveen
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 23247fa551e7..ed1ab693f945 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -194,6 +194,7 @@ config PPC select HAVE_EBPF_JIT if PPC64 select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU) select HAVE_FTRACE_MCOUNT_RECORD + select HAVE_FUNCTION_ERROR_INJECTION select HAVE_FUNCTION_GRAPH_TRACER select HAVE_FUNCTION_TRACER select HAVE_GCC_PLUGINS diff --git a/arch/powerpc/include/asm/error-injection.h b/arch/powerpc/include/asm/error-injection.h new file mode 100644 index 000000000000..b596eca04ef9 --- /dev/null +++ b/arch/powerpc/include/asm/error-injection.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_ERROR_INJECTION_H +#define _ASM_ERROR_INJECTION_H + +#include <asm-generic/error-injection.h> + +#define ARCH_FUNC_RET "blr" + +#endif /* _ASM_ERROR_INJECTION_H */ diff --git a/arch/powerpc/include/asm/ptrace.h b/arch/powerpc/include/asm/ptrace.h index e4923686e43a..c0705296c2f0 100644 --- a/arch/powerpc/include/asm/ptrace.h +++ b/arch/powerpc/include/asm/ptrace.h @@ -101,6 +101,11 @@ static inline long regs_return_value(struct pt_regs *regs) return -regs->gpr[3]; } +static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc) +{ + regs->gpr[3] = rc; +} + #ifdef __powerpc64__ #define user_mode(regs) ((((regs)->msr) >> MSR_PR_LG) & 0x1) #else
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/error-injection.h | 9 +++++++++ arch/powerpc/include/asm/ptrace.h | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 arch/powerpc/include/asm/error-injection.h