From: Dario Faggioli <dario.faggioli@citrix.com>
To: Tim Deegan <tim@xen.org>
Cc: xen-devel@lists.xenproject.org,
Julien Grall <julien.grall@arm.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Jan Beulich <jbeulich@suse.com>,
Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 3/5] xen: RCU/x86/ARM: discount CPUs that were idle when grace period started.
Date: Mon, 14 Aug 2017 15:24:39 +0200 [thread overview]
Message-ID: <1502717079.5719.39.camel@citrix.com> (raw)
In-Reply-To: <20170814103927.GA68284@deinos.phlegethon.org>
[-- Attachment #1.1: Type: text/plain, Size: 1676 bytes --]
On Mon, 2017-08-14 at 11:39 +0100, Tim Deegan wrote:
> Hi,
>
Hey,
> At 11:19 +0200 on 14 Aug (1502709563), Dario Faggioli wrote:
> > Therefore, it looks to me that the race can be avoided by making
> > sure
> > that there is at least one check of rcu_pending(), after a CPU has
> > called rcu_enter_idle(). This basically means moving
> > rcu_idle_enter()
> > up.
>
> Sounds plausible.
>
Great to hear you think that! :-D
> > 3) CPU2 is not in idle_cpumask, and so it will not be in the
> > sampled
> > mask, but the first check of rcu_pending() will lead acknowledge
> > quiescence, and calling of cpu_quiet();
>
> Yep. And because it's not yet in idle_cpumask, it _will_ check
> rcu_pending() before idling. I think that needs an smp_mb() between
> setting the idle_cpumask and checking rcp->cur, and likewise between
> rcp->cur++ and cpumask_andnot() in rcu_start_batch().
>
So, the latter, I'm putting it there already, by importing Linux's
c3f59023, "Fix RCU race in access of nohz_cpu_mask" (in this ver
patch).
About the former... I'm not sure which check of rcp->cur you're
referring to. I think it's the one in rcu_check_quiescent_state(), but
then, I'm not sure where to actually put the barrier...
I'll keep looking, but any advice is welcome. Even after all these
years, barriers still gives me headache. :-P
Thanks for looking at the patches,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 127 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-08-14 13:24 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-27 8:01 [PATCH 0/5] xen: RCU: x86/ARM: Add support of rcu_idle_{enter, exit} Dario Faggioli
2017-07-27 8:01 ` [PATCH 1/5] xen: in do_softirq() sample smp_processor_id() once and for all Dario Faggioli
2017-07-27 8:01 ` [PATCH 2/5] xen: ARM: suspend the tick (if in use) when going idle Dario Faggioli
2017-07-31 20:59 ` Stefano Stabellini
2017-08-01 8:53 ` Julien Grall
2017-08-01 9:26 ` Dario Faggioli
2017-07-27 8:01 ` [PATCH 3/5] xen: RCU/x86/ARM: discount CPUs that were idle when grace period started Dario Faggioli
2017-07-31 21:17 ` Stefano Stabellini
2017-08-07 8:35 ` Jan Beulich
2017-08-09 8:48 ` Dario Faggioli
2017-08-09 8:57 ` Jan Beulich
2017-08-09 9:20 ` Dario Faggioli
2017-08-09 9:26 ` Jan Beulich
2017-08-09 11:38 ` Tim Deegan
2017-08-11 17:25 ` Dario Faggioli
2017-08-14 10:39 ` Tim Deegan
2017-08-14 13:24 ` Dario Faggioli [this message]
2017-08-14 13:54 ` Tim Deegan
2017-08-14 16:21 ` Dario Faggioli
2017-08-14 16:47 ` Tim Deegan
2017-08-14 9:19 ` Dario Faggioli
2017-07-27 8:01 ` [PATCH 4/5] xen: RCU: don't let a CPU with a callback go idle Dario Faggioli
2017-08-07 8:38 ` Jan Beulich
2017-07-27 8:01 ` [PATCH 5/5] xen: RCU: avoid busy waiting until the end of grace period Dario Faggioli
2017-07-31 21:20 ` Stefano Stabellini
2017-07-31 22:03 ` Dario Faggioli
2017-07-31 23:58 ` Stefano Stabellini
2017-08-01 0:47 ` Dario Faggioli
2017-08-01 19:13 ` Stefano Stabellini
2017-08-02 10:14 ` Dario Faggioli
2017-08-01 8:45 ` Julien Grall
2017-08-01 8:54 ` Julien Grall
2017-08-01 9:17 ` Dario Faggioli
2017-08-01 10:22 ` Julien Grall
2017-08-01 10:33 ` Dario Faggioli
2017-08-07 8:54 ` Jan Beulich
2017-08-09 17:34 ` Dario Faggioli
2017-08-10 13:55 ` Dario Faggioli
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=1502717079.5719.39.camel@citrix.com \
--to=dario.faggioli@citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=jbeulich@suse.com \
--cc=julien.grall@arm.com \
--cc=sstabellini@kernel.org \
--cc=tim@xen.org \
--cc=xen-devel@lists.xenproject.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).