All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Eric Dumazet <eric.dumazet@gmail.com>,
	linux-kernel@vger.kernel.org, mingo@elte.hu,
	laijs@cn.fujitsu.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, niv@us.ibm.com, tglx@linutronix.de,
	dhowells@redhat.com, edumazet@google.com, darren@dvhart.com,
	sbw@mit.edu
Subject: Re: [PATCH] rcu: Is it safe to enter an RCU read-side critical section?
Date: Mon, 9 Sep 2013 06:48:57 -0700	[thread overview]
Message-ID: <20130909134857.GQ3966@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130909092917.0c99b71a@gandalf.local.home>

On Mon, Sep 09, 2013 at 09:29:17AM -0400, Steven Rostedt wrote:
> On Mon, 9 Sep 2013 09:21:42 -0400
> Steven Rostedt <rostedt@goodmis.org> wrote:
> 
> 
> > Especially since the function name itself is "rcu_is_cpu_idle()" which
> > tells you it's a cpu state, and not a task state. Why would you care in
> > RCU if CPU 1 is idle if you are on CPU 2? The name should be changed.
> 
> > Actually, preempt_count is more a CPU state than a task state. When
> > preempt_count is set, that CPU can not schedule out the current task.
> > It really has nothing to do with the task itself. It's the CPU that
> > can't do something. Preempt count should never traverse with a task
> > from one CPU to another.
> 
> I'll take this a step further. Here's a simple rule to determine if
> something is a task state or a CPU state.
> 
> If the state migrates with a task from one CPU to another, it's a task
> state.
> 
> If the state never leaves a CPU with a task, then it's a CPU state.
> 
> According to the above rules, rcu_is_cpu_idle() is a task state, and
> really should be in task_struct, and preempt_count is a CPU state, and
> should be a per_cpu variable.

Ahem.  The rcu_dynticks.dynticks field really is per-CPU state: it is
tracking whether or not RCU is paying attention to the corresponding
-CPU-, not to any particular task.  When RCU wants to track tasks, it
does so with the blkd_tasks field of the rcu_node structure.

							Thanx, Paul

> I think the reason preempt_count never was a per cpu variable, is that
> having it in the stack (thread info) made it easier to test in assembly
> than having to grab the per cpu info. But I believe it's easier to grab
> per cpu info in assembly today than it once was, which is why there is
> a push to move preempt_count to per_cpu where it truly belongs.
> 
> -- Steve
> 


  parent reply	other threads:[~2013-09-09 13:49 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-05 19:52 [PATCH] rcu: Is it safe to enter an RCU read-side critical section? Paul E. McKenney
2013-09-05 20:25 ` Steven Rostedt
2013-09-05 20:59   ` Paul E. McKenney
2013-09-05 21:05     ` Paul E. McKenney
2013-09-05 23:40       ` Steven Rostedt
2013-09-06 10:59 ` Frederic Weisbecker
2013-09-06 15:18   ` Paul E. McKenney
2013-09-06 15:33     ` Steven Rostedt
2013-09-06 16:40       ` Frederic Weisbecker
2013-09-06 16:52         ` Steven Rostedt
2013-09-06 16:58           ` Paul E. McKenney
2013-09-06 17:00           ` Frederic Weisbecker
2013-09-06 17:16             ` Steven Rostedt
2013-09-06 17:52               ` Paul E. McKenney
2013-09-06 17:56                 ` Paul E. McKenney
2013-09-06 18:21                 ` Steven Rostedt
2013-09-07  0:49                   ` Paul E. McKenney
2013-09-07  1:19                     ` Mathieu Desnoyers
2013-09-08  1:55                       ` Paul E. McKenney
2013-09-09 10:56                 ` Peter Zijlstra
2013-09-06 17:21     ` Eric Dumazet
2013-09-06 17:41       ` Paul E. McKenney
2013-09-06 18:59         ` Frederic Weisbecker
2013-09-06 20:38           ` Paul E. McKenney
2013-09-09 10:53           ` Peter Zijlstra
2013-09-09 12:13             ` Frederic Weisbecker
2013-09-09 12:39               ` Steven Rostedt
2013-09-09 12:45                 ` Frederic Weisbecker
2013-09-09 12:55                   ` Steven Rostedt
2013-09-09 13:08                     ` Frederic Weisbecker
2013-09-09 13:21                       ` Steven Rostedt
2013-09-09 13:29                         ` Paul E. McKenney
2013-09-09 13:29                         ` Steven Rostedt
2013-09-09 13:37                           ` Peter Zijlstra
2013-09-09 13:48                           ` Paul E. McKenney [this message]
2013-09-09 14:40                           ` Frederic Weisbecker
2013-09-09 15:20                             ` Steven Rostedt
2013-09-09 15:39                               ` Steven Rostedt
2013-09-09 16:03                                 ` Frederic Weisbecker
2013-09-09 16:09                               ` Paul E. McKenney
2013-09-09 16:30                                 ` Steven Rostedt
2013-09-09 16:56                                   ` Paul E. McKenney
2013-09-09 16:21                             ` Peter Zijlstra
2013-09-09 13:45                         ` Frederic Weisbecker
2013-09-09 13:56                           ` Paul E. McKenney
2013-09-09 14:16                             ` Steven Rostedt
2013-09-09 16:17                               ` Paul E. McKenney
2013-09-09 16:34                                 ` Steven Rostedt
2013-09-09 16:58                                   ` Paul E. McKenney
2013-09-09 17:06                                     ` Steven Rostedt
2013-09-09 17:45                                       ` Paul E. McKenney
2013-09-09 17:29                                     ` Mathieu Desnoyers
2013-09-09 17:56                                       ` Paul E. McKenney
2013-09-09 18:36                                         ` Steven Rostedt
2013-09-09 18:50                                           ` Paul E. McKenney
2013-09-09 21:40                                         ` Mathieu Desnoyers
2013-09-09 21:59                                           ` Steven Rostedt
2013-09-09 22:34                                             ` Paul E. McKenney
2013-09-11 14:13                                               ` Paul E. McKenney
2013-09-11 14:26                                                 ` Steven Rostedt
2013-09-11 15:23                                                   ` Paul E. McKenney
2013-09-11 15:49                                                     ` Steven Rostedt
2013-09-11 16:03                                                       ` Paul E. McKenney
2013-09-09 13:14                     ` Peter Zijlstra
2013-09-09 13:29                       ` Frederic Weisbecker
2013-09-09 13:41                         ` Steven Rostedt
2013-09-09 13:49                           ` Frederic Weisbecker
2013-09-09 13:50                           ` Paul E. McKenney
2013-09-09 13:46                       ` Paul E. McKenney
2013-09-09 13:55                         ` Steven Rostedt
2013-09-09 16:22                           ` Paul E. McKenney
2013-09-09 16:40                             ` Steven Rostedt
2013-09-09 17:45                               ` Paul E. McKenney
2013-09-09 13:23             ` Paul E. McKenney
2013-09-09 13:36               ` Peter Zijlstra
2013-09-09 13:53                 ` Paul E. McKenney
2013-09-09 16:18                   ` Peter Zijlstra
2013-09-09 14:49                 ` Christoph Lameter
2013-09-09 15:08                   ` Peter Zijlstra
2013-09-09 15:24                     ` Christoph Lameter
2013-09-09 15:41                       ` Steven Rostedt
2013-09-09 15:47                         ` Steven Rostedt
2013-09-09 16:00                       ` Ingo Molnar
2013-09-09 16:03                         ` Steven Rostedt
2013-09-09 16:11                           ` Ingo Molnar
2013-09-10 21:37                             ` Christoph Lameter
2013-09-12  6:39                               ` Ingo Molnar
2013-09-12 14:20                                 ` Christoph Lameter
2013-09-10 21:28                         ` Christoph Lameter
2013-09-12  6:38                           ` Ingo Molnar
2013-09-12 14:43                             ` Christoph Lameter
2013-09-09 16:15                       ` Peter Zijlstra
2013-09-10  4:07                   ` Mike Galbraith
2013-09-09 13:36               ` Steven Rostedt
2013-09-09 14:21               ` Peter Zijlstra
2013-09-09 16:26                 ` Paul E. McKenney
2013-09-09 16:42                   ` Steven Rostedt
2013-09-09 16:59                     ` Paul E. McKenney

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=20130909134857.GQ3966@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=darren@dvhart.com \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=eric.dumazet@gmail.com \
    --cc=fweisbec@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@elte.hu \
    --cc=niv@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sbw@mit.edu \
    --cc=tglx@linutronix.de \
    /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.