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