public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH tip/core/rcu 0/4] Additional RCU commits for 3.4
@ 2012-02-21 17:58 Paul E. McKenney
  2012-02-21 17:58 ` [PATCH tip/core/rcu 1/4] rcu: Eliminate softirq-mediated RCU_FAST_NO_HZ idle-entry loop Paul E. McKenney
  0 siblings, 1 reply; 10+ messages in thread
From: Paul E. McKenney @ 2012-02-21 17:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, Valdis.Kletnieks, dhowells, eric.dumazet, darren,
	fweisbec, patches

Hello!

This series contains an additional four commits for 3.4.  They are all
small fixes.  This series is in addition to the set posted earlier at
https://lkml.org/lkml/2012/2/3/459, and there is some possibility that
the direct-drive SRCU at https://lkml.org/lkml/2012/2/12/117 will also
make it.  The four new patches are as follows:

1.	Fix RCU_FAST_NO_HZ to avoid continually retrying dyntick-idle
	entry if softirqs are pending.
2.	Fix RCU_FAST_NO_HZ to avoid retrying dyntick-idle entry when
	idle is re-entered after a timer was posted.  For both #1 and
	#2, the philosophy is that it is better to take a scheduling-clock
	interrupt than to burn lots of CPU in a futile attempt to process
	RCU callbacks.
3.	Eliminate spurious warnings from synchronize_sched_expedited(),
	courtesy of Hugh Dickens.
4.	Apply several fixes to rcutorture based on initial inspection.

For a testing-only version of this patchset from git, please see the
following subject-to-rebase branch:

git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/next

							Thanx, Paul

------------------------------------------------------------------------

 b/kernel/rcutorture.c     |   19 ++++++++++++++++---
 b/kernel/rcutree.c        |    2 +-
 b/kernel/rcutree_plugin.h |    3 ++-
 kernel/rcutree.c          |    2 +-
 kernel/rcutree_plugin.h   |    2 +-
 5 files changed, 21 insertions(+), 7 deletions(-)


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH tip/core/rcu 1/4] rcu: Eliminate softirq-mediated RCU_FAST_NO_HZ idle-entry loop
  2012-02-21 17:58 [PATCH tip/core/rcu 0/4] Additional RCU commits for 3.4 Paul E. McKenney
@ 2012-02-21 17:58 ` Paul E. McKenney
  2012-02-21 17:58   ` [PATCH tip/core/rcu 2/4] rcu: Hold off RCU_FAST_NO_HZ after timer posted Paul E. McKenney
                     ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Paul E. McKenney @ 2012-02-21 17:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, Valdis.Kletnieks, dhowells, eric.dumazet, darren,
	fweisbec, patches, Paul E. McKenney, Paul E. McKenney

From: "Paul E. McKenney" <paul.mckenney@linaro.org>

If a softirq is pending, the current CPU has RCU callbacks pending,
and RCU does not immediately need anything from this CPU, then the
current code resets the RCU_FAST_NO_HZ state machine.  This means that
upon exit from the subsequent softirq handler, RCU_FAST_NO_HZ will
try really hard to force RCU into dyntick-idle mode.  And if the same
conditions hold after a few tries (determined by RCU_IDLE_OPT_FLUSHES),
the same situation can repeat, possibly endlessly.  This scenario is
not particularly good for battery lifetime.

This commit therefore suppresses the early exit from the RCU_FAST_NO_HZ
state machine in the case where there is a softirq pending.  This change
forces the state machine to retain its memory, and to enter holdoff if
this condition persists.

Reported-by: "Abou Gazala, Neven M" <neven.m.abou.gazala@intel.com>
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 kernel/rcutree_plugin.h |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index f7ceadf..392a651 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -2133,7 +2133,8 @@ static void rcu_prepare_for_idle(int cpu)
 		/* First time through, initialize the counter. */
 		per_cpu(rcu_dyntick_drain, cpu) = RCU_IDLE_FLUSHES;
 	} else if (per_cpu(rcu_dyntick_drain, cpu) <= RCU_IDLE_OPT_FLUSHES &&
-		   !rcu_pending(cpu)) {
+		   !rcu_pending(cpu) &&
+		   !local_softirq_pending()) {
 		/* Can we go dyntick-idle despite still having callbacks? */
 		trace_rcu_prep_idle("Dyntick with callbacks");
 		per_cpu(rcu_dyntick_drain, cpu) = 0;
-- 
1.7.8


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH tip/core/rcu 2/4] rcu: Hold off RCU_FAST_NO_HZ after timer posted
  2012-02-21 17:58 ` [PATCH tip/core/rcu 1/4] rcu: Eliminate softirq-mediated RCU_FAST_NO_HZ idle-entry loop Paul E. McKenney
@ 2012-02-21 17:58   ` Paul E. McKenney
  2012-02-21 17:58   ` [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited Paul E. McKenney
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Paul E. McKenney @ 2012-02-21 17:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, Valdis.Kletnieks, dhowells, eric.dumazet, darren,
	fweisbec, patches, Paul E. McKenney, Paul E. McKenney

From: "Paul E. McKenney" <paul.mckenney@linaro.org>

This commit handles workloads that transition quickly between idle and
non-idle, and where the CPU's callbacks cannot be invoked, but where
RCU does not have anything immediate for the CPU to do.  Without this
patch, the RCU_FAST_NO_HZ code can be invoked repeatedly on each entry
to idle.  The commit sets the per-CPU rcu_dyntick_holdoff variable to
hold off further attempts for a tick.

Reported-by: "Abou Gazala, Neven M" <neven.m.abou.gazala@intel.com>
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 kernel/rcutree_plugin.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index 392a651..c023464 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -2138,7 +2138,7 @@ static void rcu_prepare_for_idle(int cpu)
 		/* Can we go dyntick-idle despite still having callbacks? */
 		trace_rcu_prep_idle("Dyntick with callbacks");
 		per_cpu(rcu_dyntick_drain, cpu) = 0;
-		per_cpu(rcu_dyntick_holdoff, cpu) = jiffies - 1;
+		per_cpu(rcu_dyntick_holdoff, cpu) = jiffies;
 		if (rcu_cpu_has_nonlazy_callbacks(cpu))
 			hrtimer_start(&per_cpu(rcu_idle_gp_timer, cpu),
 				      rcu_idle_gp_wait, HRTIMER_MODE_REL);
-- 
1.7.8


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited
  2012-02-21 17:58 ` [PATCH tip/core/rcu 1/4] rcu: Eliminate softirq-mediated RCU_FAST_NO_HZ idle-entry loop Paul E. McKenney
  2012-02-21 17:58   ` [PATCH tip/core/rcu 2/4] rcu: Hold off RCU_FAST_NO_HZ after timer posted Paul E. McKenney
@ 2012-02-21 17:58   ` Paul E. McKenney
  2012-02-21 18:00     ` Peter Zijlstra
  2012-02-21 17:58   ` [PATCH tip/core/rcu 3/4] rcu: Stop " Paul E. McKenney
  2012-02-21 17:58   ` [PATCH tip/core/rcu 4/4] rcu: Fixes to rcutorture error handling and cleanup Paul E. McKenney
  3 siblings, 1 reply; 10+ messages in thread
From: Paul E. McKenney @ 2012-02-21 17:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, Valdis.Kletnieks, dhowells, eric.dumazet, darren,
	fweisbec, patches, Hugh Dickins, Paul E. McKenney

From: Hugh Dickins <hughd@google.com>

synchronize_sched_expedited() is spamming CONFIG_DEBUG_PREEMPT=y
users with an unintended warning from the cpu_is_offline() check:
use raw_smp_processor_id() instead of smp_processor_id() there.

Signed-off-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 kernel/rcutree.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index eacc10b..1050d6d 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -2014,7 +2014,7 @@ void synchronize_sched_expedited(void)
 	/* Note that atomic_inc_return() implies full memory barrier. */
 	firstsnap = snap = atomic_inc_return(&sync_sched_expedited_started);
 	get_online_cpus();
-	WARN_ON_ONCE(cpu_is_offline(smp_processor_id()));
+	WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id()));
 
 	/*
 	 * Each pass through the following loop attempts to force a
-- 
1.7.8


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH tip/core/rcu 3/4] rcu: Stop spurious warnings from synchronize_sched_expedited
  2012-02-21 17:58 ` [PATCH tip/core/rcu 1/4] rcu: Eliminate softirq-mediated RCU_FAST_NO_HZ idle-entry loop Paul E. McKenney
  2012-02-21 17:58   ` [PATCH tip/core/rcu 2/4] rcu: Hold off RCU_FAST_NO_HZ after timer posted Paul E. McKenney
  2012-02-21 17:58   ` [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited Paul E. McKenney
@ 2012-02-21 17:58   ` Paul E. McKenney
  2012-02-21 17:58   ` [PATCH tip/core/rcu 4/4] rcu: Fixes to rcutorture error handling and cleanup Paul E. McKenney
  3 siblings, 0 replies; 10+ messages in thread
From: Paul E. McKenney @ 2012-02-21 17:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, Valdis.Kletnieks, dhowells, eric.dumazet, darren,
	fweisbec, patches, Hugh Dickins, Paul E. McKenney

From: Hugh Dickins <hughd@google.com>

synchronize_sched_expedited() is spamming CONFIG_DEBUG_PREEMPT=y
users with an unintended warning from the cpu_is_offline() check:
use raw_smp_processor_id() instead of smp_processor_id() there.

Signed-off-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 kernel/rcutree.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index eacc10b..1050d6d 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -2014,7 +2014,7 @@ void synchronize_sched_expedited(void)
 	/* Note that atomic_inc_return() implies full memory barrier. */
 	firstsnap = snap = atomic_inc_return(&sync_sched_expedited_started);
 	get_online_cpus();
-	WARN_ON_ONCE(cpu_is_offline(smp_processor_id()));
+	WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id()));
 
 	/*
 	 * Each pass through the following loop attempts to force a
-- 
1.7.8


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH tip/core/rcu 4/4] rcu: Fixes to rcutorture error handling and cleanup
  2012-02-21 17:58 ` [PATCH tip/core/rcu 1/4] rcu: Eliminate softirq-mediated RCU_FAST_NO_HZ idle-entry loop Paul E. McKenney
                     ` (2 preceding siblings ...)
  2012-02-21 17:58   ` [PATCH tip/core/rcu 3/4] rcu: Stop " Paul E. McKenney
@ 2012-02-21 17:58   ` Paul E. McKenney
  3 siblings, 0 replies; 10+ messages in thread
From: Paul E. McKenney @ 2012-02-21 17:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, laijs, dipankar, akpm, mathieu.desnoyers, josh, niv, tglx,
	peterz, rostedt, Valdis.Kletnieks, dhowells, eric.dumazet, darren,
	fweisbec, patches, Paul E. McKenney

From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>

The rcutorture initialization code ignored the error returns from
rcu_torture_onoff_init() and rcu_torture_stall_init().  The rcutorture
cleanup code failed to NULL out a number of pointers.  These bugs will
normally have no effect, but this commit fixes them nevertheless.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 kernel/rcutorture.c |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
index a89b381..1463a06 100644
--- a/kernel/rcutorture.c
+++ b/kernel/rcutorture.c
@@ -1337,6 +1337,7 @@ static void rcutorture_booster_cleanup(int cpu)
 
 	/* This must be outside of the mutex, otherwise deadlock! */
 	kthread_stop(t);
+	boost_tasks[cpu] = NULL;
 }
 
 static int rcutorture_booster_init(int cpu)
@@ -1484,13 +1485,15 @@ static void rcu_torture_onoff_cleanup(void)
 		return;
 	VERBOSE_PRINTK_STRING("Stopping rcu_torture_onoff task");
 	kthread_stop(onoff_task);
+	onoff_task = NULL;
 }
 
 #else /* #ifdef CONFIG_HOTPLUG_CPU */
 
-static void
+static int
 rcu_torture_onoff_init(void)
 {
+	return 0;
 }
 
 static void rcu_torture_onoff_cleanup(void)
@@ -1554,6 +1557,7 @@ static void rcu_torture_stall_cleanup(void)
 		return;
 	VERBOSE_PRINTK_STRING("Stopping rcu_torture_stall_task.");
 	kthread_stop(stall_task);
+	stall_task = NULL;
 }
 
 static int rcutorture_cpu_notify(struct notifier_block *self,
@@ -1665,6 +1669,7 @@ rcu_torture_cleanup(void)
 		VERBOSE_PRINTK_STRING("Stopping rcu_torture_shutdown task");
 		kthread_stop(shutdown_task);
 	}
+	shutdown_task = NULL;
 	rcu_torture_onoff_cleanup();
 
 	/* Wait for all RCU callbacks to fire.  */
@@ -1897,9 +1902,17 @@ rcu_torture_init(void)
 			goto unwind;
 		}
 	}
-	rcu_torture_onoff_init();
+	i = rcu_torture_onoff_init();
+	if (i != 0) {
+		firsterr = i;
+		goto unwind;
+	}
 	register_reboot_notifier(&rcutorture_shutdown_nb);
-	rcu_torture_stall_init();
+	i = rcu_torture_stall_init();
+	if (i != 0) {
+		firsterr = i;
+		goto unwind;
+	}
 	rcutorture_record_test_transition();
 	mutex_unlock(&fullstop_mutex);
 	return 0;
-- 
1.7.8


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited
  2012-02-21 17:58   ` [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited Paul E. McKenney
@ 2012-02-21 18:00     ` Peter Zijlstra
  2012-02-21 18:28       ` Paul E. McKenney
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Zijlstra @ 2012-02-21 18:00 UTC (permalink / raw)
  To: Paul E. McKenney
  Cc: linux-kernel, mingo, laijs, dipankar, akpm, mathieu.desnoyers,
	josh, niv, tglx, rostedt, Valdis.Kletnieks, dhowells,
	eric.dumazet, darren, fweisbec, patches, Hugh Dickins

On Tue, 2012-02-21 at 09:58 -0800, Paul E. McKenney wrote:
> From: Hugh Dickins <hughd@google.com>
> 
> synchronize_sched_expedited() is spamming CONFIG_DEBUG_PREEMPT=y
> users with an unintended warning from the cpu_is_offline() check:
> use raw_smp_processor_id() instead of smp_processor_id() there.

This fails to mention why it makes sense to test a random cpu for
offline-ness..

> Signed-off-by: Hugh Dickins <hughd@google.com>
> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> ---
>  kernel/rcutree.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/kernel/rcutree.c b/kernel/rcutree.c
> index eacc10b..1050d6d 100644
> --- a/kernel/rcutree.c
> +++ b/kernel/rcutree.c
> @@ -2014,7 +2014,7 @@ void synchronize_sched_expedited(void)
>  	/* Note that atomic_inc_return() implies full memory barrier. */
>  	firstsnap = snap = atomic_inc_return(&sync_sched_expedited_started);
>  	get_online_cpus();
> -	WARN_ON_ONCE(cpu_is_offline(smp_processor_id()));
> +	WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id()));
>  
>  	/*
>  	 * Each pass through the following loop attempts to force a


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited
  2012-02-21 18:00     ` Peter Zijlstra
@ 2012-02-21 18:28       ` Paul E. McKenney
  2012-02-21 18:57         ` Peter Zijlstra
  0 siblings, 1 reply; 10+ messages in thread
From: Paul E. McKenney @ 2012-02-21 18:28 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: linux-kernel, mingo, laijs, dipankar, akpm, mathieu.desnoyers,
	josh, niv, tglx, rostedt, Valdis.Kletnieks, dhowells,
	eric.dumazet, darren, fweisbec, patches, Hugh Dickins

On Tue, Feb 21, 2012 at 07:00:17PM +0100, Peter Zijlstra wrote:
> On Tue, 2012-02-21 at 09:58 -0800, Paul E. McKenney wrote:
> > From: Hugh Dickins <hughd@google.com>
> > 
> > synchronize_sched_expedited() is spamming CONFIG_DEBUG_PREEMPT=y
> > users with an unintended warning from the cpu_is_offline() check:
> > use raw_smp_processor_id() instead of smp_processor_id() there.
> 
> This fails to mention why it makes sense to test a random cpu for
> offline-ness..

The check was already there, Hugh simply fixed it to use raw_.  The check
itself was added in c0d6d01bf (Check for illegal use of RCU from offlined
CPUs).  The purpose is to catch improper use of RCU from CPU_DYING
notifiers and on the path from the CPU_DYING notifiers to the idle loop.

							Thanx, Paul

> > Signed-off-by: Hugh Dickins <hughd@google.com>
> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > ---
> >  kernel/rcutree.c |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> > 
> > diff --git a/kernel/rcutree.c b/kernel/rcutree.c
> > index eacc10b..1050d6d 100644
> > --- a/kernel/rcutree.c
> > +++ b/kernel/rcutree.c
> > @@ -2014,7 +2014,7 @@ void synchronize_sched_expedited(void)
> >  	/* Note that atomic_inc_return() implies full memory barrier. */
> >  	firstsnap = snap = atomic_inc_return(&sync_sched_expedited_started);
> >  	get_online_cpus();
> > -	WARN_ON_ONCE(cpu_is_offline(smp_processor_id()));
> > +	WARN_ON_ONCE(cpu_is_offline(raw_smp_processor_id()));
> >  
> >  	/*
> >  	 * Each pass through the following loop attempts to force a
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited
  2012-02-21 18:28       ` Paul E. McKenney
@ 2012-02-21 18:57         ` Peter Zijlstra
  2012-02-21 23:30           ` Paul E. McKenney
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Zijlstra @ 2012-02-21 18:57 UTC (permalink / raw)
  To: paulmck
  Cc: linux-kernel, mingo, laijs, dipankar, akpm, mathieu.desnoyers,
	josh, niv, tglx, rostedt, Valdis.Kletnieks, dhowells,
	eric.dumazet, darren, fweisbec, patches, Hugh Dickins

On Tue, 2012-02-21 at 10:28 -0800, Paul E. McKenney wrote:
> On Tue, Feb 21, 2012 at 07:00:17PM +0100, Peter Zijlstra wrote:
> > On Tue, 2012-02-21 at 09:58 -0800, Paul E. McKenney wrote:
> > > From: Hugh Dickins <hughd@google.com>
> > > 
> > > synchronize_sched_expedited() is spamming CONFIG_DEBUG_PREEMPT=y
> > > users with an unintended warning from the cpu_is_offline() check:
> > > use raw_smp_processor_id() instead of smp_processor_id() there.
> > 
> > This fails to mention why it makes sense to test a random cpu for
> > offline-ness..
> 
> The check was already there, Hugh simply fixed it to use raw_.  The check
> itself was added in c0d6d01bf (Check for illegal use of RCU from offlined
> CPUs).  The purpose is to catch improper use of RCU from CPU_DYING
> notifiers and on the path from the CPU_DYING notifiers to the idle loop.

Then I think this patch wants to add a comment explaining this. Because
cpu_offline(raw_smp_processor_id()) looks really rather suspicious.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited
  2012-02-21 18:57         ` Peter Zijlstra
@ 2012-02-21 23:30           ` Paul E. McKenney
  0 siblings, 0 replies; 10+ messages in thread
From: Paul E. McKenney @ 2012-02-21 23:30 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: linux-kernel, mingo, laijs, dipankar, akpm, mathieu.desnoyers,
	josh, niv, tglx, rostedt, Valdis.Kletnieks, dhowells,
	eric.dumazet, darren, fweisbec, patches, Hugh Dickins

On Tue, Feb 21, 2012 at 07:57:03PM +0100, Peter Zijlstra wrote:
> On Tue, 2012-02-21 at 10:28 -0800, Paul E. McKenney wrote:
> > On Tue, Feb 21, 2012 at 07:00:17PM +0100, Peter Zijlstra wrote:
> > > On Tue, 2012-02-21 at 09:58 -0800, Paul E. McKenney wrote:
> > > > From: Hugh Dickins <hughd@google.com>
> > > > 
> > > > synchronize_sched_expedited() is spamming CONFIG_DEBUG_PREEMPT=y
> > > > users with an unintended warning from the cpu_is_offline() check:
> > > > use raw_smp_processor_id() instead of smp_processor_id() there.
> > > 
> > > This fails to mention why it makes sense to test a random cpu for
> > > offline-ness..
> > 
> > The check was already there, Hugh simply fixed it to use raw_.  The check
> > itself was added in c0d6d01bf (Check for illegal use of RCU from offlined
> > CPUs).  The purpose is to catch improper use of RCU from CPU_DYING
> > notifiers and on the path from the CPU_DYING notifiers to the idle loop.
> 
> Then I think this patch wants to add a comment explaining this. Because
> cpu_offline(raw_smp_processor_id()) looks really rather suspicious.

Good point, will fix!

							Thanx, Paul


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2012-02-21 23:30 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-21 17:58 [PATCH tip/core/rcu 0/4] Additional RCU commits for 3.4 Paul E. McKenney
2012-02-21 17:58 ` [PATCH tip/core/rcu 1/4] rcu: Eliminate softirq-mediated RCU_FAST_NO_HZ idle-entry loop Paul E. McKenney
2012-02-21 17:58   ` [PATCH tip/core/rcu 2/4] rcu: Hold off RCU_FAST_NO_HZ after timer posted Paul E. McKenney
2012-02-21 17:58   ` [PATCH tip/core/rcu 3/4] rcu: stop spurious warnings from synchronize_sched_expedited Paul E. McKenney
2012-02-21 18:00     ` Peter Zijlstra
2012-02-21 18:28       ` Paul E. McKenney
2012-02-21 18:57         ` Peter Zijlstra
2012-02-21 23:30           ` Paul E. McKenney
2012-02-21 17:58   ` [PATCH tip/core/rcu 3/4] rcu: Stop " Paul E. McKenney
2012-02-21 17:58   ` [PATCH tip/core/rcu 4/4] rcu: Fixes to rcutorture error handling and cleanup Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox