Re: [PATCH v10 03/36] x86: tracing: Add ftrace_regs definition in the header

From: Steven Rostedt
Date: Thu May 23 2024 - 19:14:45 EST


On Tue, 7 May 2024 23:08:35 +0900
"Masami Hiramatsu (Google)" <mhiramat@xxxxxxxxxx> wrote:

> From: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx>
>
> Add ftrace_regs definition for x86_64 in the ftrace header to
> clarify what register will be accessible from ftrace_regs.
>
> Signed-off-by: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx>
> ---
> Changes in v3:
> - Add rip to be saved.
> Changes in v2:
> - Newly added.
> ---
> arch/x86/include/asm/ftrace.h | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/x86/include/asm/ftrace.h b/arch/x86/include/asm/ftrace.h
> index cf88cc8cc74d..c88bf47f46da 100644
> --- a/arch/x86/include/asm/ftrace.h
> +++ b/arch/x86/include/asm/ftrace.h
> @@ -36,6 +36,12 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr)
>
> #ifdef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS
> struct ftrace_regs {
> + /*
> + * On the x86_64, the ftrace_regs saves;
> + * rax, rcx, rdx, rdi, rsi, r8, r9, rbp, rip and rsp.
> + * Also orig_ax is used for passing direct trampoline address.
> + * x86_32 doesn't support ftrace_regs.

Should add a comment that if fregs->regs.cs is set, then all of the pt_regs
is valid. And x86_32 does support ftrace_regs, it just doesn't support
having a subset of it.

-- Steve


> + */
> struct pt_regs regs;
> };
>