Re: RCU-Task[-Trace] VS EQS (was Re: [PATCH v3 13/25] context_tracking, rcu: Rename rcu_dynticks_task*() into rcu_task*())
From: Frederic Weisbecker
Date: Mon Aug 05 2024 - 08:18:49 EST
Le Mon, Aug 05, 2024 at 11:01:22AM +0200, Peter Zijlstra a écrit :
> On Fri, Aug 02, 2024 at 09:32:08PM -0700, Paul E. McKenney wrote:
>
> > Huh. One reason for the current smp_call_function_single() in
> > cpuhp_report_idle_dead() was some ARM32 CPUs that shut down caching on
> > their way out. this made it impossible to use shared-variable-based
> > CPU-dead notification. I wonder if Arnd's deprecation schedule
> > for ARM32-based platforms will allow us to go back to shared-memory
> > notification, which might make this sort of thing easier.
>
> All those idle paths should be doing ct_cpuidle_enter(), which includes
> telling RCU the CPU is going idle, no?
>
> I cleaned all that up a while back.
On every architectures? That would be a good news, as we could then remove
the CONFIG_TASKS_TRACE_RCU_READ_MB dance.
There is still some vulnerable path on CPU hotplug down path once
cpuhp_complete_idle_dead() is executed. The dead CPU may still call a bunch
of general purpose functions (the exit path of smp_call_function_single()
and the exit of cpuhp_report_idle_dead()). And this will become worse once
we remove TASK-RUDE and rely only on rcutree_report_cpu_dead().
Thanks.