diff mbox series

powerpc/trace: Add support for HAVE_FUNCTION_ARG_ACCESS_API

Message ID 20230614085926.2176641-1-naveen@kernel.org (mailing list archive)
State Accepted
Commit f01b0edd562ef5a05bae31fe3a296721f89af7d9
Headers show
Series powerpc/trace: Add support for HAVE_FUNCTION_ARG_ACCESS_API | expand

Checks

Context Check Description
snowpatch_ozlabs/github-powerpc_ppctests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_selftests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_sparse success Successfully ran 4 jobs.
snowpatch_ozlabs/github-powerpc_clang success Successfully ran 6 jobs.
snowpatch_ozlabs/github-powerpc_kernel_qemu success Successfully ran 24 jobs.

Commit Message

Naveen N Rao June 14, 2023, 8:59 a.m. UTC
When creating a kprobe on function entry through tracefs, enable
arguments to be recorded to be specified using $argN syntax.

Signed-off-by: Naveen N Rao <naveen@kernel.org>
---
 arch/powerpc/Kconfig              |  1 +
 arch/powerpc/include/asm/ptrace.h | 17 +++++++++++++++++
 2 files changed, 18 insertions(+)


base-commit: bd517a8442b6c6646a136421cd4c1b95bf4ce32b

Comments

Michael Ellerman Oct. 27, 2023, 9:59 a.m. UTC | #1
On Wed, 14 Jun 2023 14:29:26 +0530, Naveen N Rao wrote:
> When creating a kprobe on function entry through tracefs, enable
> arguments to be recorded to be specified using $argN syntax.
> 
> 

Applied to powerpc/next.

[1/1] powerpc/trace: Add support for HAVE_FUNCTION_ARG_ACCESS_API
      https://git.kernel.org/powerpc/c/f01b0edd562ef5a05bae31fe3a296721f89af7d9

cheers
diff mbox series

Patch

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index bff5820b7cda14..bd76ae95146b42 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -233,6 +233,7 @@  config PPC
 	select HAVE_EFFICIENT_UNALIGNED_ACCESS
 	select HAVE_FAST_GUP
 	select HAVE_FTRACE_MCOUNT_RECORD
+	select HAVE_FUNCTION_ARG_ACCESS_API
 	select HAVE_FUNCTION_DESCRIPTORS	if PPC64_ELF_ABI_V1
 	select HAVE_FUNCTION_ERROR_INJECTION
 	select HAVE_FUNCTION_GRAPH_TRACER
diff --git a/arch/powerpc/include/asm/ptrace.h b/arch/powerpc/include/asm/ptrace.h
index 0eb90a01334666..68ce2381b18ae1 100644
--- a/arch/powerpc/include/asm/ptrace.h
+++ b/arch/powerpc/include/asm/ptrace.h
@@ -397,6 +397,23 @@  static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs,
 		return 0;
 }
 
+/**
+ * regs_get_kernel_argument() - get Nth function argument in kernel
+ * @regs:	pt_regs of that context
+ * @n:		function argument number (start from 0)
+ *
+ * We support up to 8 arguments and assume they are sent in through the GPRs.
+ * This will fail for fp/vector arguments, but those aren't usually found in
+ * kernel code. This is expected to be called from kprobes or ftrace with regs.
+ */
+static inline unsigned long regs_get_kernel_argument(struct pt_regs *regs, unsigned int n)
+{
+#define NR_REG_ARGUMENTS 8
+	if (n < NR_REG_ARGUMENTS)
+		return regs_get_register(regs, offsetof(struct pt_regs, gpr[3 + n]));
+	return 0;
+}
+
 #endif /* __ASSEMBLY__ */
 
 #ifndef __powerpc64__