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

From: Steven Rostedt
Date: Fri May 24 2024 - 10:31:08 EST


On Fri, 24 May 2024 10:37:54 +0900
Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> wrote:
> > >
> > > #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.
>
> But what about rbx and r1*? Only regs->cs should be care for pt_regs?
> Or, did you mean "the ftrace_regs is valid"?

Yeah, on x86_64 ftrace_regs uses regs.cs to denote if it is valid or not:

static __always_inline struct pt_regs *
arch_ftrace_get_regs(struct ftrace_regs *fregs)
{
/* Only when FL_SAVE_REGS is set, cs will be non zero */
if (!fregs->regs.cs)
return NULL;
return &fregs->regs;
}


-- Steve