Re: [tip: core/rcu] rcu/tree: Mark the idle relevant functions noinstr

From: Peter Zijlstra
Date: Tue Sep 29 2020 - 10:53:29 EST


On Tue, Sep 29, 2020 at 10:34:54AM -0400, Steven Rostedt wrote:
> Anyway, you bring up a good point. I should have this:

Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>

> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index 84f32dbc7be8..2d76eaaad4a7 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -6993,16 +6993,14 @@ static void ftrace_ops_assist_func(unsigned long ip, unsigned long parent_ip,
> {
> int bit;
>
> - if ((op->flags & FTRACE_OPS_FL_RCU) && !rcu_is_watching())
> - return;
> -
> bit = trace_test_and_set_recursion(TRACE_LIST_START, TRACE_LIST_MAX);
> if (bit < 0)
> return;
>
> preempt_disable_notrace();
>
> - op->func(ip, parent_ip, op, regs);
> + if (!(op->flags & FTRACE_OPS_FL_RCU) || rcu_is_watching())
> + op->func(ip, parent_ip, op, regs);
>
> preempt_enable_notrace();
> trace_clear_recursion(bit);
>
>
>
> -- Steve