From: Frederic Weisbecker <frederic@kernel.org>
To: Pingfan Liu <kernelfans@gmail.com>
Cc: rcu@vger.kernel.org, "Paul E. McKenney" <paulmck@kernel.org>,
David Woodhouse <dwmw@amazon.co.uk>,
Neeraj Upadhyay <quic_neeraju@quicinc.com>,
Josh Triplett <josh@joshtriplett.org>,
Steven Rostedt <rostedt@goodmis.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Lai Jiangshan <jiangshanlai@gmail.com>,
Joel Fernandes <joel@joelfernandes.org>,
"Jason A. Donenfeld" <Jason@zx2c4.com>
Subject: Re: [PATCHv2 1/3] rcu: Keep qsmaskinitnext fresh when rcutree_online_cpu()
Date: Mon, 19 Sep 2022 12:51:49 +0200 [thread overview]
Message-ID: <20220919105149.GA58144@lothringen> (raw)
In-Reply-To: <CAFgQCTuB72QZNL4AW95WntkCUqAinzis=6Mjwyfdy_NiMi_pgQ@mail.gmail.com>
On Mon, Sep 19, 2022 at 06:24:21PM +0800, Pingfan Liu wrote:
> On Fri, Sep 16, 2022 at 10:52 PM Frederic Weisbecker
> <frederic@kernel.org> wrote:
> > > diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
> > > index 438ecae6bd7e..ef6d3ae239b9 100644
> > > --- a/kernel/rcu/tree_plugin.h
> > > +++ b/kernel/rcu/tree_plugin.h
> > > @@ -1224,7 +1224,7 @@ static void rcu_spawn_one_boost_kthread(struct rcu_node *rnp)
> > > static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
> > > {
> > > struct task_struct *t = rnp->boost_kthread_task;
> > > - unsigned long mask = rcu_rnp_online_cpus(rnp);
> > > + unsigned long mask;
> > > cpumask_var_t cm;
> > > int cpu;
> > >
> > > @@ -1233,6 +1233,11 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
> > > if (!zalloc_cpumask_var(&cm, GFP_KERNEL))
> > > return;
> > > mutex_lock(&rnp->boost_kthread_mutex);
> > > + /*
> > > + * Relying on the lock to serialize, so when onlining, the latest
> > > + * qsmaskinitnext is for cpus_ptr.
> > > + */
> > > + mask = rcu_rnp_online_cpus(rnp);
> > > for_each_leaf_node_possible_cpu(rnp, cpu)
> > > if ((mask & leaf_node_cpu_bit(rnp, cpu)) &&
> > > cpu != outgoingcpu)
> >
> > Right but you still race against concurrent rcu_report_dead() doing:
> >
> > WRITE_ONCE(rnp->qsmaskinitnext, rnp->qsmaskinitnext & ~mask)
> >
>
> Ah. Indeed, my commit log is not precisely described.
>
> In fact, either speedup smp_init [1] or fast kexec reboot [2] still
> uses the model: one hotplug initiator and several reactors. The
> initiators are still excluded from each other by the pair
> cpu_maps_update_begin()/cpu_maps_update_done(). So there can not be a
> cpu-up and cpu-down event at the same time.
Yes but two downing CPUs may race right?
So isn't it possible to have rcu_report_dead() racing against
rcutree_offline_cpu()?
Thanks.
next prev parent reply other threads:[~2022-09-19 10:56 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-15 5:58 [PATCHv2 0/3] rcu: Enhance the capability to cope with concurrent cpu offlining/onlining Pingfan Liu
2022-09-15 5:58 ` [PATCHv2 1/3] rcu: Keep qsmaskinitnext fresh when rcutree_online_cpu() Pingfan Liu
2022-09-15 6:11 ` Pingfan Liu
2022-09-16 14:52 ` Frederic Weisbecker
2022-09-19 10:24 ` Pingfan Liu
2022-09-19 10:51 ` Frederic Weisbecker [this message]
2022-09-20 3:45 ` Pingfan Liu
2022-09-20 9:23 ` Frederic Weisbecker
2022-10-01 2:26 ` Joel Fernandes
2022-10-02 12:34 ` Pingfan Liu
2022-10-02 15:52 ` Joel Fernandes
2022-09-20 10:31 ` Frederic Weisbecker
2022-09-21 11:56 ` Pingfan Liu
2022-09-15 5:58 ` [PATCHv2 2/3] rcu: Resort to cpu_dying_mask for affinity when offlining Pingfan Liu
2022-09-16 14:23 ` Frederic Weisbecker
2022-09-19 4:33 ` Pingfan Liu
2022-09-19 10:34 ` Frederic Weisbecker
2022-09-20 3:16 ` Pingfan Liu
2022-09-20 9:00 ` Frederic Weisbecker
2022-09-20 9:38 ` Frederic Weisbecker
2022-09-21 11:48 ` Pingfan Liu
2022-09-15 5:58 ` [PATCHv2 3/3] rcu: coordinate tick dependency during concurrent offlining Pingfan Liu
2022-09-16 13:42 ` Frederic Weisbecker
2022-09-20 7:26 ` Pingfan Liu
2022-09-20 9:46 ` Frederic Weisbecker
2022-09-20 19:13 ` Paul E. McKenney
2022-09-22 9:29 ` Pingfan Liu
2022-09-22 13:54 ` Paul E. McKenney
2022-09-23 22:13 ` Frederic Weisbecker
2022-09-26 6:34 ` Pingfan Liu
2022-09-26 22:23 ` Paul E. McKenney
2022-09-27 9:59 ` Pingfan Liu
2022-09-29 8:19 ` Pingfan Liu
2022-09-29 8:20 ` Pingfan Liu
2022-09-30 13:04 ` Joel Fernandes
2022-10-02 14:06 ` Pingfan Liu
2022-10-02 16:11 ` Joel Fernandes
2022-10-02 16:24 ` Paul E. McKenney
2022-10-02 16:30 ` Joel Fernandes
2022-10-02 16:57 ` Paul E. McKenney
2022-10-02 16:59 ` Joel Fernandes
2022-09-30 15:44 ` Paul E. McKenney
2022-10-02 13:29 ` Pingfan Liu
2022-10-02 15:08 ` Frederic Weisbecker
2022-10-02 16:20 ` Paul E. McKenney
2022-10-02 16:20 ` Paul E. McKenney
[not found] ` <CAFgQCTtgLfc0NeYqyWk4Ew-pA9rMREjRjWSnQhYLv-V5117s9Q@mail.gmail.com>
2022-10-27 17:46 ` Paul E. McKenney
2022-10-31 3:24 ` Pingfan Liu
2022-11-03 16:51 ` Paul E. McKenney
2022-11-07 16:07 ` Paul E. McKenney
2022-11-09 18:55 ` Joel Fernandes
2022-11-18 12:08 ` Pingfan Liu
2022-11-18 23:30 ` Paul E. McKenney
2022-11-21 3:48 ` Pingfan Liu
2022-11-21 17:14 ` Paul E. McKenney
2022-11-17 14:39 ` Frederic Weisbecker
2022-11-18 1:45 ` Pingfan Liu
[not found] ` <CAFgQCTtNetv7v_Law=abPtngC8Gv6OGcGz9M_wWMxz_GAEWDUQ@mail.gmail.com>
2022-10-27 18:13 ` Paul E. McKenney
2022-10-31 2:10 ` Pingfan Liu
2022-09-26 16:13 ` Joel Fernandes
2022-09-27 9:42 ` Pingfan Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220919105149.GA58144@lothringen \
--to=frederic@kernel.org \
--cc=Jason@zx2c4.com \
--cc=dwmw@amazon.co.uk \
--cc=jiangshanlai@gmail.com \
--cc=joel@joelfernandes.org \
--cc=josh@joshtriplett.org \
--cc=kernelfans@gmail.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=paulmck@kernel.org \
--cc=quic_neeraju@quicinc.com \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.