Le Mon, Apr 15, 2024 at 06:36:31PM +0200, Valentin Schneider a écrit : > On 10/04/24 12:19, Paul E. McKenney wrote: > > On Wed, Apr 10, 2024 at 12:30:55PM +0200, Frederic Weisbecker wrote: > >> Le Tue, Apr 09, 2024 at 12:53:03PM -0700, Paul E. McKenney a écrit : > >> > I am having a hard time getting too excited about the name. I could > >> > suggest CT_RCU_WATCHING_IDX, but that isn't exactly the shortest > >> > possible name. > >> > >> I really like CT_RCU_WATCHING. It says everything. The _IDX isn't even > >> needed after all. What do you think? > > > > Works for me! > > > > Sounds good to me too, thanks for the suggestion :) > > Now, what about ct_dynticks() & friends? I was about to do: > > -static __always_inline int ct_dynticks(void) > +static __always_inline int ct_rcu_watching(void) > { > - return atomic_read(this_cpu_ptr(&context_tracking.state)) & CT_DYNTICKS_MASK; > + return atomic_read(this_cpu_ptr(&context_tracking.state)) & CT_RCU_WATCHING_MASK; > } Yup! > > ... but then realised that there's more siblings to the rcu_dynticks*() > family; Ouch right, sorry I forgot there is so much of this namespace. But in case you're willing to clean that up: > > AFAICT dynticks_nesting could also get the rcu_watching prefix treatment, > `rcu_dynticks_task_exit() -> rcu_watching_task_exit` doesn't sound as rcu_tasks_exit() ? But Paul, is there a reason why check_holdout_task() doesn't check ct_dynticks_cpu(task_cpu(t)) instead of maintaining this separate counter? > obvious though. The rcu_dyntick event probably can't be renamed either. I think we can rename trace_rcu_dyntick() to trace_rcu_watching() > > I'm not sure how far to take the renaming; seeing things like: > > notrace bool rcu_is_watching(void) > { > bool ret; > > preempt_disable_notrace(); > ret = !rcu_dynticks_curr_cpu_in_eqs(); > preempt_enable_notrace(); > return ret; > } > EXPORT_SYMBOL_GPL(rcu_is_watching); > > makes me think most of the rcu_*dynticks / rcu_*eqs stuff could get an > rcu_watching facelift? The eqs part can stay as-is. But the *dynticks* needs an update. > > Here are my current considerations for identifiers used in context_tracking > in decreasing order of confidence: > > | Old | New | > |---------------------------------------+---------------------------------------------------------------| > | RCU_DYNTICKS_IDX | CT_RCU_WATCHING | > | RCU_DYNTICKS_MASK | CT_RCU_WATCHING_MASK | > | context_tracking.dynticks_nesting | context_tracking.rcu_watching_nesting | This can be context_tracking.nesting (and yes one day we might need to lock up context_tracking.nesting and context_tracking.recursion together in a room and see who wins after a day or two). > | context_tracking.dynticks_nmi_nesting | context_tracking.rcu_watching_nmi_nesting [bit of a mouthful] | context_tracking.nmi_nesting > | rcu_dynticks_curr_cpu_in_eqs() | rcu_watching_curr_cpu() [with an added negation] | Nice! > |---------------------------------------+---------------------------------------------------------------| > | TRACE_EVENT_RCU(rcu_dyntick, | [Can't change?] | It can change. Officially trace events aren't ABI. Unoficially I wouldn't dare changing the sched switch trace event but this one is fine. > |---------------------------------------+---------------------------------------------------------------| > | rcu_dynticks_task_enter() | rcu_watching_task_enter()> | | rcu_tasks_enter() ? > | rcu_dynticks_task_exit() | rcu_watching_task_exit() | rcu_tasks_exit() ? > | rcu_dynticks_task_trace_enter() | rcu_watching_task_trace_enter() | rcu_tasks_trace_enter()? > | rcu_dynticks_task_trace_exit() | rcu_watching_task_trace_exit() | rcu_tasks_trace_exit() ? Thanks. > > Thoughts? >