On Tue, Jul 8, 2025 at 2:52 AM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > > On Fri, 4 Jul 2025 09:54:52 +0800 > Menglong Dong <menglong8.dong@xxxxxxxxx> wrote: > > > > What exactly do you mean by "reset"? > > > > It means to reset the filter hash of the ftrace_ops to ips. In > > the origin logic, the filter hash of a direct ftrace_ops will not > > be changed. However, in the tracing-multi case, there are > > multi functions in the filter hash and can change. This function > > is used to change the filter hash of a direct ftrace_ops. > > The above still doesn't make sense to me. > > Can you explain more what exactly you are doing at a higher level? To > me "reset" means to set back to what it originally was (which usually > is zero or nothing). Yeah, with pleasure. When we need to update the functions to filter for a ftrace_ops, we can use ftrace_set_filter_ips(), which is able to add, remove and reset the functions to filter. However, we don't have a function to do similar things for a direct ftrace_ops. What reset_ftrace_direct_ips() do is the same as ftrace_set_filter_ips() when the "reset" argument of it is 1, and that's why I call it "reset". Or we can name it something else, such as "update"? The use case is for the global trampoline. BPF global trampoline has a direct ftrace_ops. When we attach new tracing-multi progs to the new kernel functions, we need to add these functions to the ftrace_ops of the bpf global trampoline. The "reset_ftrace_direct_ips" can do both adding and removing things for the direct ftrace_ops. We will get all the functions for the global trampoline, and "reset" the functions to filter of the ftrace_ops to them. Hoping I expressed it clearly :/ Thanks! Menglong Dong > > -- Steve