> > Export the RCU point of view as to when a CPU is considered offline > (ie: when does RCU consider that a CPU is sufficiently down in the > hotplug process to not feature any possible read side). > > This will be used by RCU-tasks whose vision of an offline CPU should > reasonably match the one of RCU core. > > Fixes: cff9b2332ab7 ("kernel/sched: Modify initial boot task idle setup") > Signed-off-by: Frederic Weisbecker <frederic@xxxxxxxxxx> > --- > kernel/rcu/rcu.h | 2 ++ > kernel/rcu/tree.c | 7 +++++++ > 2 files changed, 9 insertions(+) > > diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h > index 0d866eaa4cc8..b531c33e9545 100644 > --- a/kernel/rcu/rcu.h > +++ b/kernel/rcu/rcu.h > @@ -500,6 +500,7 @@ static inline void rcu_expedite_gp(void) { } > static inline void rcu_unexpedite_gp(void) { } > static inline void rcu_async_hurry(void) { } > static inline void rcu_async_relax(void) { } > +static inline bool rcu_cpu_online(int cpu) { return true; } > #else /* #ifdef CONFIG_TINY_RCU */ > bool rcu_gp_is_normal(void); /* Internal RCU use. */ > bool rcu_gp_is_expedited(void); /* Internal RCU use. */ > @@ -509,6 +510,7 @@ void rcu_unexpedite_gp(void); > void rcu_async_hurry(void); > void rcu_async_relax(void); > void rcupdate_announce_bootup_oddness(void); > +bool rcu_cpu_online(int cpu); > #ifdef CONFIG_TASKS_RCU_GENERIC > void show_rcu_tasks_gp_kthreads(void); > #else /* #ifdef CONFIG_TASKS_RCU_GENERIC */ > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > index 700524726079..fd21c1506092 100644 > --- a/kernel/rcu/tree.c > +++ b/kernel/rcu/tree.c > @@ -4202,6 +4202,13 @@ static bool rcu_rdp_cpu_online(struct rcu_data *rdp) > return !!(rdp->grpmask & rcu_rnp_online_cpus(rdp->mynode)); > } > > +bool rcu_cpu_online(int cpu) > +{ > + struct rcu_data *rdp = this_cpu_ptr(&rcu_data); > > Should 'struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu)' be used ? Thanks Zqiang > > + > + return rcu_rdp_cpu_online(rdp); > +} > + > #if defined(CONFIG_PROVE_RCU) && defined(CONFIG_HOTPLUG_CPU) > > /* > -- > 2.41.0 >