On Tue, 1 Aug 2023 11:20:36 -0400 Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > The solution was to come up with ftrace_regs, which just means it has all > the registers to extract the arguments of a function and nothing more. Most This isn't 100% true. The ftrace_regs may hold a fully filled pt_regs. As the FTRACE_WITH_REGS callbacks still get passed a ftrace_regs pointer. They will do: void callback(..., struct ftrace_regs *fregs) { struct pt_regs *regs = ftrace_get_regs(fregs); Where ftrace_get_regs() will return the pt_regs only if it is fully filled. If it is not, then it returns NULL. This was what the x86 maintainers agreed with. -- Steve > implementations just have a partially filled pt_regs within it, but an API > needs to be used to get to the argument values.