From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Alessio Igor Bogani <abogani@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Chris Metcalf <cmetcalf@tilera.com>,
Christoph Lameter <cl@linux.com>,
Geoff Levand <geoff@infradead.org>,
Gilad Ben Yossef <gilad@benyossef.com>,
Hakan Akkan <hakanakkan@gmail.com>,
Ingo Molnar <mingo@kernel.org>,
Li Zhong <zhong@linux.vnet.ibm.com>,
Namhyung Kim <namhyung.kim@lge.com>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Peter Zijlstra <peterz@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 26/33] rcu: Don't keep the tick for RCU while in userspace
Date: Mon, 7 Jan 2013 20:06:26 -0800 [thread overview]
Message-ID: <20130108040625.GH2525@linux.vnet.ibm.com> (raw)
In-Reply-To: <1357610913-1080-27-git-send-email-fweisbec@gmail.com>
On Tue, Jan 08, 2013 at 03:08:26AM +0100, Frederic Weisbecker wrote:
> If we are interrupting userspace, we don't need to keep
> the tick for RCU: quiescent states don't need to be reported
> because we soon run in userspace and local callbacks are handled
> by the nocb threads.
>
> CHECKME: Do the nocb threads actually handle the global
> grace period completion for local callbacks?
First answering this for the nocb stuff in mainline: In this case,
the grace-period startup is handled by the CPU that is not a nocb
CPU, and there has to be at least one. The grace-period completion
is handled by the grace-period kthreads. The nocbs CPU need do
nothing, at least assuming that it gets back into dyntick-idle
(or adaptive tickless) state reasonably quickly.
Second for the version in -rcu: In this case, the nocb kthreads
register the need for a grace period using a new mechanism that
pushes the need up the rcu_node tree. The grace-period completion
is again handled by the grace-period kthreads. This allows all
CPUs to be nocbs CPUs.
So, in either case, yes, the below code should be safe as long as
the CPU gets into an RCU-idle state quickly (as in within a few
milliseconds or so).
Thanx, Paul
> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Alessio Igor Bogani <abogani@kernel.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Chris Metcalf <cmetcalf@tilera.com>
> Cc: Christoph Lameter <cl@linux.com>
> Cc: Geoff Levand <geoff@infradead.org>
> Cc: Gilad Ben Yossef <gilad@benyossef.com>
> Cc: Hakan Akkan <hakanakkan@gmail.com>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: Li Zhong <zhong@linux.vnet.ibm.com>
> Cc: Namhyung Kim <namhyung.kim@lge.com>
> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> ---
> kernel/time/tick-sched.c | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
> index 1cd93a9..ecba8b7 100644
> --- a/kernel/time/tick-sched.c
> +++ b/kernel/time/tick-sched.c
> @@ -22,6 +22,7 @@
> #include <linux/module.h>
> #include <linux/irq_work.h>
> #include <linux/posix-timers.h>
> +#include <linux/context_tracking.h>
>
> #include <asm/irq_regs.h>
>
> @@ -604,10 +605,9 @@ static bool can_stop_full_tick(int cpu)
>
> /*
> * Keep the tick if we are asked to report a quiescent state.
> - * This must be further optimized (avoid checks for local callbacks,
> - * ignore RCU in userspace, etc...
> + * This must be further optimized (avoid checks for local callbacks)
> */
> - if (rcu_pending(cpu)) {
> + if (!context_tracking_in_user() && rcu_pending(cpu)) {
> trace_printk("Can't stop: RCU pending\n");
> return false;
> }
> --
> 1.7.5.4
>
next prev parent reply other threads:[~2013-01-08 4:06 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-08 2:08 [ANNOUNCE] 3.8-rc2-nohz2 Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 01/33] context_tracking: Add comments on interface and internals Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 02/33] context_tracking: Export context state for generic vtime Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 03/33] cputime: Generic on-demand virtual cputime accounting Frederic Weisbecker
2013-01-08 20:23 ` Steven Rostedt
2013-01-08 20:26 ` Steven Rostedt
2013-01-08 21:00 ` Paul E. McKenney
2013-01-08 20:45 ` Steven Rostedt
2013-01-09 13:46 ` Steven Rostedt
2013-01-09 13:50 ` Steven Rostedt
2013-01-08 2:08 ` [PATCH 04/33] cputime: Allow dynamic switch between tick/virtual based " Frederic Weisbecker
2013-01-08 21:20 ` Steven Rostedt
2013-01-08 23:22 ` Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 05/33] cputime: Use accessors to read task cputime stats Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 06/33] cputime: Safely read cputime of full dynticks CPUs Frederic Weisbecker
2013-01-09 14:54 ` Steven Rostedt
2013-01-09 18:35 ` Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 07/33] nohz: Basic full dynticks interface Frederic Weisbecker
2013-02-11 14:35 ` Borislav Petkov
2013-02-20 16:32 ` Borislav Petkov
2013-03-07 23:41 ` Frederic Weisbecker
2013-03-07 23:35 ` Frederic Weisbecker
2013-03-08 10:17 ` Borislav Petkov
2013-03-08 13:45 ` Frederic Weisbecker
2013-03-08 14:32 ` Borislav Petkov
2013-03-08 16:55 ` Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 08/33] nohz: Assign timekeeping duty to a non-full-nohz CPU Frederic Weisbecker
2013-02-15 11:57 ` Borislav Petkov
2013-02-20 15:57 ` Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 09/33] nohz: Trace timekeeping update Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 10/33] nohz: Wake up full dynticks CPUs when a timer gets enqueued Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 11/33] rcu: Restart the tick on non-responding full dynticks CPUs Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 12/33] sched: Comment on rq->clock correctness in ttwu_do_wakeup() in nohz Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 13/33] sched: Update rq clock on nohz CPU before migrating tasks Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 14/33] sched: Update rq clock on nohz CPU before setting fair group shares Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 15/33] sched: Update rq clock on tickless CPUs before calling check_preempt_curr() Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 16/33] sched: Update rq clock earlier in unthrottle_cfs_rq Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 17/33] sched: Update clock of nohz busiest rq before balancing Frederic Weisbecker
2013-01-08 10:20 ` Li Zhong
2013-03-07 23:51 ` Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 18/33] sched: Update rq clock before idle balancing Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 19/33] sched: Update nohz rq clock before searching busiest group on load balancing Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 20/33] nohz: Move nohz load balancer selection into idle logic Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 21/33] nohz: Full dynticks mode Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 22/33] nohz: Only stop the tick on RCU nocb CPUs Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 23/33] nohz: Don't turn off the tick if rcu needs it Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 24/33] nohz: Don't stop the tick if posix cpu timers are running Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 25/33] nohz: Add some tracing Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 26/33] rcu: Don't keep the tick for RCU while in userspace Frederic Weisbecker
2013-01-08 4:06 ` Paul E. McKenney [this message]
2013-01-08 2:08 ` [PATCH 27/33] profiling: Remove unused timer hook Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 28/33] timer: Don't run non-pinned timer to full dynticks CPUs Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 29/33] sched: Use an accessor to read rq clock Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 30/33] sched: Debug nohz " Frederic Weisbecker
2013-03-20 23:23 ` Kevin Hilman
2013-04-11 16:47 ` Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 31/33] sched: Remove broken check for skip clock update Frederic Weisbecker
2013-01-08 2:11 ` Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 32/33] sched: Update rq clock before rt sched average scale Frederic Weisbecker
2013-01-08 2:08 ` [PATCH 33/33] sched: Disable lb_bias feature for full dynticks Frederic Weisbecker
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=20130108040625.GH2525@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=abogani@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=cmetcalf@tilera.com \
--cc=fweisbec@gmail.com \
--cc=geoff@infradead.org \
--cc=gilad@benyossef.com \
--cc=hakanakkan@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung.kim@lge.com \
--cc=paul.gortmaker@windriver.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=zhong@linux.vnet.ibm.com \
/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.