linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
@ 2012-08-23 14:58 Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 01/11] alpha: Fix preemption handling in idle loop Frederic Weisbecker
                   ` (11 more replies)
  0 siblings, 12 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, Paul E. McKenney, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

Hi,

Changes since v1:

- Fixed preempt handling in alpha idle loop
- added ack from Geert
- fixed stable email address, sorry :-/

This time I built tested everywhere but: h8300 (compiler internal error),
and mn10300, parisc, score (cross compilers not available in
ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)

For testing, you can pull from:

git://github.com/fweisbec/linux-dynticks.git
	rcu/idle-fix-v2 

Thanks.

Frederic Weisbecker (11):
  alpha: Fix preemption handling in idle loop
  alpha: Add missing RCU idle APIs on idle loop
  cris: Add missing RCU idle APIs on idle loop
  frv: Add missing RCU idle APIs on idle loop
  h8300: Add missing RCU idle APIs on idle loop
  m32r: Add missing RCU idle APIs on idle loop
  m68k: Add missing RCU idle APIs on idle loop
  mn10300: Add missing RCU idle APIs on idle loop
  parisc: Add missing RCU idle APIs on idle loop
  score: Add missing RCU idle APIs on idle loop
  xtensa: Add missing RCU idle APIs on idle loop

 arch/alpha/kernel/process.c   |    6 +++++-
 arch/alpha/kernel/smp.c       |    1 +
 arch/cris/kernel/process.c    |    3 +++
 arch/frv/kernel/process.c     |    3 +++
 arch/h8300/kernel/process.c   |    3 +++
 arch/m32r/kernel/process.c    |    3 +++
 arch/m68k/kernel/process.c    |    3 +++
 arch/mn10300/kernel/process.c |    3 +++
 arch/parisc/kernel/process.c  |    3 +++
 arch/score/kernel/process.c   |    4 +++-
 arch/xtensa/kernel/process.c  |    3 +++
 11 files changed, 33 insertions(+), 2 deletions(-)

-- 
1.7.5.4


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

* [PATCH 01/11] alpha: Fix preemption handling in idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 02/11] alpha: Add missing RCU idle APIs on " Frederic Weisbecker
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, Richard Henderson, Ivan Kokshaysky,
	Matt Turner, alpha, Paul E. McKenney, Michael Cree

cpu_idle() is called on the boot CPU by the init code with
preemption disabled. But the cpu_idle() function in alpha
doesn't handle this when it calls schedule() directly.

Fix it by converting it into schedule_preempt_disabled().

Also disable preemption before calling cpu_idle() from
secondary CPU entry code to stay consistent with this
state.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Richard Henderson<rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: alpha <linux-alpha@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Michael Cree <mcree@orcon.net.nz>
---
 arch/alpha/kernel/process.c |    3 ++-
 arch/alpha/kernel/smp.c     |    1 +
 2 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index 153d3fc..eac5e01 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -56,7 +56,8 @@ cpu_idle(void)
 
 		while (!need_resched())
 			cpu_relax();
-		schedule();
+
+		schedule_preempt_disabled();
 	}
 }
 
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c
index 35ddc02..a41ad90 100644
--- a/arch/alpha/kernel/smp.c
+++ b/arch/alpha/kernel/smp.c
@@ -166,6 +166,7 @@ smp_callin(void)
 	DBGS(("smp_callin: commencing CPU %d current %p active_mm %p\n",
 	      cpuid, current, current->active_mm));
 
+	preempt_disable();
 	/* Do nothing.  */
 	cpu_idle();
 }
-- 
1.7.5.4


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

* [PATCH 02/11] alpha: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 01/11] alpha: Fix preemption handling in idle loop Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 03/11] cris: " Frederic Weisbecker
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, Richard Henderson, Ivan Kokshaysky,
	Matt Turner, alpha, Paul E. McKenney, Michael Cree, 3.2.x..

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the Alpha's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: alpha <linux-alpha@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Michael Cree <mcree@orcon.net.nz>
Cc: 3.2.x.. <stable@vger.kernel.org>
---
 arch/alpha/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index eac5e01..eb9558c 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -28,6 +28,7 @@
 #include <linux/tty.h>
 #include <linux/console.h>
 #include <linux/slab.h>
+#include <linux/rcupdate.h>
 
 #include <asm/reg.h>
 #include <asm/uaccess.h>
@@ -54,9 +55,11 @@ cpu_idle(void)
 		/* FIXME -- EV6 and LCA45 know how to power down
 		   the CPU.  */
 
+		rcu_idle_enter();
 		while (!need_resched())
 			cpu_relax();
 
+		rcu_idle_exit();
 		schedule_preempt_disabled();
 	}
 }
-- 
1.7.5.4


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

* [PATCH 03/11] cris: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 01/11] alpha: Fix preemption handling in idle loop Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 02/11] alpha: Add missing RCU idle APIs on " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 04/11] frv: " Frederic Weisbecker
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, Mikael Starvik, Jesper Nilsson, Cris,
	3.2.x..,
	Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the Cris's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mikael Starvik <starvik@axis.com>
Cc: Jesper Nilsson <jesper.nilsson@axis.com>
Cc: Cris <linux-cris-kernel@axis.com>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/cris/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c
index 66fd017..7f65be6 100644
--- a/arch/cris/kernel/process.c
+++ b/arch/cris/kernel/process.c
@@ -25,6 +25,7 @@
 #include <linux/elfcore.h>
 #include <linux/mqueue.h>
 #include <linux/reboot.h>
+#include <linux/rcupdate.h>
 
 //#define DEBUG
 
@@ -74,6 +75,7 @@ void cpu_idle (void)
 {
 	/* endless idle loop with no priority at all */
 	while (1) {
+		rcu_idle_enter();
 		while (!need_resched()) {
 			void (*idle)(void);
 			/*
@@ -86,6 +88,7 @@ void cpu_idle (void)
 				idle = default_idle;
 			idle();
 		}
+		rcu_idle_exit();
 		schedule_preempt_disabled();
 	}
 }
-- 
1.7.5.4


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

* [PATCH 04/11] frv: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (2 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 03/11] cris: " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 05/11] h8300: " Frederic Weisbecker
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML; +Cc: Frederic Weisbecker, David Howells, 3.2.x.., Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the Frv's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Howells <dhowells@redhat.com>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/frv/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c
index ff95f50..2eb7fa5 100644
--- a/arch/frv/kernel/process.c
+++ b/arch/frv/kernel/process.c
@@ -25,6 +25,7 @@
 #include <linux/reboot.h>
 #include <linux/interrupt.h>
 #include <linux/pagemap.h>
+#include <linux/rcupdate.h>
 
 #include <asm/asm-offsets.h>
 #include <asm/uaccess.h>
@@ -69,12 +70,14 @@ void cpu_idle(void)
 {
 	/* endless idle loop with no priority at all */
 	while (1) {
+		rcu_idle_enter();
 		while (!need_resched()) {
 			check_pgt_cache();
 
 			if (!frv_dma_inprogress && idle)
 				idle();
 		}
+		rcu_idle_exit();
 
 		schedule_preempt_disabled();
 	}
-- 
1.7.5.4


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

* [PATCH 05/11] h8300: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (3 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 04/11] frv: " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 06/11] m32r: " Frederic Weisbecker
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML; +Cc: Frederic Weisbecker, Yoshinori Sato, 3.2.x.., Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the h8300's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/h8300/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c
index 0e9c315..f153ed1 100644
--- a/arch/h8300/kernel/process.c
+++ b/arch/h8300/kernel/process.c
@@ -36,6 +36,7 @@
 #include <linux/reboot.h>
 #include <linux/fs.h>
 #include <linux/slab.h>
+#include <linux/rcupdate.h>
 
 #include <asm/uaccess.h>
 #include <asm/traps.h>
@@ -78,8 +79,10 @@ void (*idle)(void) = default_idle;
 void cpu_idle(void)
 {
 	while (1) {
+		rcu_idle_enter();
 		while (!need_resched())
 			idle();
+		rcu_idle_exit();
 		schedule_preempt_disabled();
 	}
 }
-- 
1.7.5.4


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

* [PATCH 06/11] m32r: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (4 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 05/11] h8300: " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 07/11] m68k: " Frederic Weisbecker
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML; +Cc: Frederic Weisbecker, Hirokazu Takata, 3.2.x.., Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the m32r's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Hirokazu Takata <takata@linux-m32r.org>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/m32r/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c
index 3a4a32b2..384e63f 100644
--- a/arch/m32r/kernel/process.c
+++ b/arch/m32r/kernel/process.c
@@ -26,6 +26,7 @@
 #include <linux/ptrace.h>
 #include <linux/unistd.h>
 #include <linux/hardirq.h>
+#include <linux/rcupdate.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
@@ -82,6 +83,7 @@ void cpu_idle (void)
 {
 	/* endless idle loop with no priority at all */
 	while (1) {
+		rcu_idle_enter();
 		while (!need_resched()) {
 			void (*idle)(void) = pm_idle;
 
@@ -90,6 +92,7 @@ void cpu_idle (void)
 
 			idle();
 		}
+		rcu_idle_exit();
 		schedule_preempt_disabled();
 	}
 }
-- 
1.7.5.4


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

* [PATCH 07/11] m68k: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (5 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 06/11] m32r: " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 08/11] mn10300: " Frederic Weisbecker
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML; +Cc: Frederic Weisbecker, m68k, 3.2.x.., Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the m68k's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: m68k <linux-m68k@lists.linux-m68k.org>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/m68k/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c
index c488e3c..ac2892e 100644
--- a/arch/m68k/kernel/process.c
+++ b/arch/m68k/kernel/process.c
@@ -25,6 +25,7 @@
 #include <linux/reboot.h>
 #include <linux/init_task.h>
 #include <linux/mqueue.h>
+#include <linux/rcupdate.h>
 
 #include <asm/uaccess.h>
 #include <asm/traps.h>
@@ -75,8 +76,10 @@ void cpu_idle(void)
 {
 	/* endless idle loop with no priority at all */
 	while (1) {
+		rcu_idle_enter();
 		while (!need_resched())
 			idle();
+		rcu_idle_exit();
 		schedule_preempt_disabled();
 	}
 }
-- 
1.7.5.4


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

* [PATCH 08/11] mn10300: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (6 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 07/11] m68k: " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 09/11] parisc: " Frederic Weisbecker
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, David Howells, Koichi Yasutake, 3.2.x..,
	Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the mn10300's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/mn10300/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c
index 7dab0cd..e9cceba 100644
--- a/arch/mn10300/kernel/process.c
+++ b/arch/mn10300/kernel/process.c
@@ -25,6 +25,7 @@
 #include <linux/err.h>
 #include <linux/fs.h>
 #include <linux/slab.h>
+#include <linux/rcupdate.h>
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
 #include <asm/io.h>
@@ -107,6 +108,7 @@ void cpu_idle(void)
 {
 	/* endless idle loop with no priority at all */
 	for (;;) {
+		rcu_idle_enter();
 		while (!need_resched()) {
 			void (*idle)(void);
 
@@ -121,6 +123,7 @@ void cpu_idle(void)
 			}
 			idle();
 		}
+		rcu_idle_exit();
 
 		schedule_preempt_disabled();
 	}
-- 
1.7.5.4


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

* [PATCH 09/11] parisc: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (7 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 08/11] mn10300: " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 10/11] score: " Frederic Weisbecker
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, James E.J. Bottomley, Helge Deller, Parisc,
	3.2.x..,
	Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the parisc's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: James E.J. Bottomley <jejb@parisc-linux.org>
Cc: Helge Deller <deller@gmx.de>
Cc: Parisc <linux-parisc@vger.kernel.org>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/parisc/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index d4b94b3..c54a4db 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -48,6 +48,7 @@
 #include <linux/unistd.h>
 #include <linux/kallsyms.h>
 #include <linux/uaccess.h>
+#include <linux/rcupdate.h>
 
 #include <asm/io.h>
 #include <asm/asm-offsets.h>
@@ -69,8 +70,10 @@ void cpu_idle(void)
 
 	/* endless idle loop with no priority at all */
 	while (1) {
+		rcu_idle_enter();
 		while (!need_resched())
 			barrier();
+		rcu_idle_exit();
 		schedule_preempt_disabled();
 		check_pgt_cache();
 	}
-- 
1.7.5.4


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

* [PATCH 10/11] score: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (8 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 09/11] parisc: " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-23 14:58 ` [PATCH 11/11] xtensa: " Frederic Weisbecker
  2012-08-24 21:26 ` [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Paul E. McKenney
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, Chen Liqin, Lennox Wu, 3.2.x.., Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the scores's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Chen Liqin <liqin.chen@sunplusct.com>
Cc: Lennox Wu <lennox.wu@gmail.com>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/score/kernel/process.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c
index 2707023..637970c 100644
--- a/arch/score/kernel/process.c
+++ b/arch/score/kernel/process.c
@@ -27,6 +27,7 @@
 #include <linux/reboot.h>
 #include <linux/elfcore.h>
 #include <linux/pm.h>
+#include <linux/rcupdate.h>
 
 void (*pm_power_off)(void);
 EXPORT_SYMBOL(pm_power_off);
@@ -50,9 +51,10 @@ void __noreturn cpu_idle(void)
 {
 	/* endless idle loop with no priority at all */
 	while (1) {
+		rcu_idle_enter();
 		while (!need_resched())
 			barrier();
-
+		rcu_idle_exit();
 		schedule_preempt_disabled();
 	}
 }
-- 
1.7.5.4


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

* [PATCH 11/11] xtensa: Add missing RCU idle APIs on idle loop
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (9 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 10/11] score: " Frederic Weisbecker
@ 2012-08-23 14:58 ` Frederic Weisbecker
  2012-08-24 21:26 ` [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Paul E. McKenney
  11 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-23 14:58 UTC (permalink / raw)
  To: LKML; +Cc: Frederic Weisbecker, Chris Zankel, 3.2.x.., Paul E. McKenney

In the old times, the whole idle task was considered
as an RCU quiescent state. But as RCU became more and
more successful overtime, some RCU read side critical
section have been added even in the code of some
architectures idle tasks, for tracing for example.

So nowadays, rcu_idle_enter() and rcu_idle_exit() must
be called by the architecture to tell RCU about the part
in the idle loop that doesn't make use of rcu read side
critical sections, typically the part that puts the CPU
in low power mode.

This is necessary for RCU to find the quiescent states in
idle in order to complete grace periods.

Add this missing pair of calls in the xtensa's idle loop.

Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Chris Zankel <chris@zankel.net>
Cc: 3.2.x.. <stable@vger.kernel.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 arch/xtensa/kernel/process.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c
index 2c8d6a3..bc44311 100644
--- a/arch/xtensa/kernel/process.c
+++ b/arch/xtensa/kernel/process.c
@@ -31,6 +31,7 @@
 #include <linux/mqueue.h>
 #include <linux/fs.h>
 #include <linux/slab.h>
+#include <linux/rcupdate.h>
 
 #include <asm/pgtable.h>
 #include <asm/uaccess.h>
@@ -110,8 +111,10 @@ void cpu_idle(void)
 
 	/* endless idle loop with no priority at all */
 	while (1) {
+		rcu_idle_enter();
 		while (!need_resched())
 			platform_idle();
+		rcu_idle_exit();
 		schedule_preempt_disabled();
 	}
 }
-- 
1.7.5.4


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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
                   ` (10 preceding siblings ...)
  2012-08-23 14:58 ` [PATCH 11/11] xtensa: " Frederic Weisbecker
@ 2012-08-24 21:26 ` Paul E. McKenney
  2012-08-25  1:19   ` Ben Hutchings
  11 siblings, 1 reply; 26+ messages in thread
From: Paul E. McKenney @ 2012-08-24 21:26 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
> Hi,
> 
> Changes since v1:
> 
> - Fixed preempt handling in alpha idle loop
> - added ack from Geert
> - fixed stable email address, sorry :-/
> 
> This time I built tested everywhere but: h8300 (compiler internal error),
> and mn10300, parisc, score (cross compilers not available in
> ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
> 
> For testing, you can pull from:
> 
> git://github.com/fweisbec/linux-dynticks.git
> 	rcu/idle-fix-v2 
> 
> Thanks.

I have queued these on -rcu branch rcu/idle:

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

This problem has been in place since 3.3, so it is hard to argue that
it is a regression for this merge window.  I have therefore queued it
for 3.7.

								Thanx, Paul

> Frederic Weisbecker (11):
>   alpha: Fix preemption handling in idle loop
>   alpha: Add missing RCU idle APIs on idle loop
>   cris: Add missing RCU idle APIs on idle loop
>   frv: Add missing RCU idle APIs on idle loop
>   h8300: Add missing RCU idle APIs on idle loop
>   m32r: Add missing RCU idle APIs on idle loop
>   m68k: Add missing RCU idle APIs on idle loop
>   mn10300: Add missing RCU idle APIs on idle loop
>   parisc: Add missing RCU idle APIs on idle loop
>   score: Add missing RCU idle APIs on idle loop
>   xtensa: Add missing RCU idle APIs on idle loop
> 
>  arch/alpha/kernel/process.c   |    6 +++++-
>  arch/alpha/kernel/smp.c       |    1 +
>  arch/cris/kernel/process.c    |    3 +++
>  arch/frv/kernel/process.c     |    3 +++
>  arch/h8300/kernel/process.c   |    3 +++
>  arch/m32r/kernel/process.c    |    3 +++
>  arch/m68k/kernel/process.c    |    3 +++
>  arch/mn10300/kernel/process.c |    3 +++
>  arch/parisc/kernel/process.c  |    3 +++
>  arch/score/kernel/process.c   |    4 +++-
>  arch/xtensa/kernel/process.c  |    3 +++
>  11 files changed, 33 insertions(+), 2 deletions(-)
> 
> -- 
> 1.7.5.4
> 


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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-24 21:26 ` [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Paul E. McKenney
@ 2012-08-25  1:19   ` Ben Hutchings
  2012-08-25  2:10     ` Michael Cree
                       ` (2 more replies)
  0 siblings, 3 replies; 26+ messages in thread
From: Ben Hutchings @ 2012-08-25  1:19 UTC (permalink / raw)
  To: paulmck
  Cc: Frederic Weisbecker, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

[-- Attachment #1: Type: text/plain, Size: 1506 bytes --]

On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
> On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
> > Hi,
> > 
> > Changes since v1:
> > 
> > - Fixed preempt handling in alpha idle loop
> > - added ack from Geert
> > - fixed stable email address, sorry :-/
> > 
> > This time I built tested everywhere but: h8300 (compiler internal error),
> > and mn10300, parisc, score (cross compilers not available in
> > ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
> > 
> > For testing, you can pull from:
> > 
> > git://github.com/fweisbec/linux-dynticks.git
> > 	rcu/idle-fix-v2 
> > 
> > Thanks.
> 
> I have queued these on -rcu branch rcu/idle:
> 
> 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
> 
> This problem has been in place since 3.3, so it is hard to argue that
> it is a regression for this merge window.  I have therefore queued it
> for 3.7.

I don't follow that; I would expect any serious bug fix (serious enough
for a stable update) to be acceptable for 3.6 at this point.

If the regression occurred in 3.3, then the cc lines should be something
like:

    Cc: <stable@vger.kernel.org> # 3.3+

and not the current:

    Cc: 3.2.x.. <stable@vger.kernel.org>

(Note, version annotations should be on the right of the address, not in
the 'real name' position on the left.)

Ben.

-- 
Ben Hutchings
Experience is what causes a person to make new mistakes instead of old ones.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-25  1:19   ` Ben Hutchings
@ 2012-08-25  2:10     ` Michael Cree
  2012-08-25  3:50     ` Paul E. McKenney
  2012-09-10 21:56     ` Frederic Weisbecker
  2 siblings, 0 replies; 26+ messages in thread
From: Michael Cree @ 2012-08-25  2:10 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: paulmck, Frederic Weisbecker, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha

On 25/08/12 13:19, Ben Hutchings wrote:
> On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
>> On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
>>> Hi,
>>>
>>> Changes since v1:
>>>
>>> - Fixed preempt handling in alpha idle loop
>>> - added ack from Geert
>>> - fixed stable email address, sorry :-/
>>>
>>> This time I built tested everywhere but: h8300 (compiler internal error),
>>> and mn10300, parisc, score (cross compilers not available in
>>> ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
>>>
>>> For testing, you can pull from:
>>>
>>> git://github.com/fweisbec/linux-dynticks.git
>>> 	rcu/idle-fix-v2 
>>>
>>> Thanks.
>>
>> I have queued these on -rcu branch rcu/idle:
>>
>> 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
>>
>> This problem has been in place since 3.3, so it is hard to argue that
>> it is a regression for this merge window.  I have therefore queued it
>> for 3.7.
> 
> I don't follow that; I would expect any serious bug fix (serious enough
> for a stable update) to be acceptable for 3.6 at this point.
> 
> If the regression occurred in 3.3, then the cc lines should be something
> like:
> 
>     Cc: <stable@vger.kernel.org> # 3.3+
> 
> and not the current:
> 
>     Cc: 3.2.x.. <stable@vger.kernel.org>

The Alpha patches fix an even earlier regression resulting in RCU CPU
stalls on an SMP kernel built for generic Alpha (which includes the
current Debian 3.2-alpha-smp kernel) and renders the kernel pretty much
unuseable.  I've only tested the two alpha patches together but maybe
just the first patch (1/11 alpha: Fix preemption handling in idle loop)
might be needed to fix the problem in 3.2.   I'll test and let you know.

Cheers
Michael.

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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-25  1:19   ` Ben Hutchings
  2012-08-25  2:10     ` Michael Cree
@ 2012-08-25  3:50     ` Paul E. McKenney
  2012-08-25 13:16       ` Frederic Weisbecker
  2012-09-10 21:56     ` Frederic Weisbecker
  2 siblings, 1 reply; 26+ messages in thread
From: Paul E. McKenney @ 2012-08-25  3:50 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: Frederic Weisbecker, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

On Sat, Aug 25, 2012 at 02:19:14AM +0100, Ben Hutchings wrote:
> On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
> > On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
> > > Hi,
> > > 
> > > Changes since v1:
> > > 
> > > - Fixed preempt handling in alpha idle loop
> > > - added ack from Geert
> > > - fixed stable email address, sorry :-/
> > > 
> > > This time I built tested everywhere but: h8300 (compiler internal error),
> > > and mn10300, parisc, score (cross compilers not available in
> > > ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
> > > 
> > > For testing, you can pull from:
> > > 
> > > git://github.com/fweisbec/linux-dynticks.git
> > > 	rcu/idle-fix-v2 
> > > 
> > > Thanks.
> > 
> > I have queued these on -rcu branch rcu/idle:
> > 
> > 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
> > 
> > This problem has been in place since 3.3, so it is hard to argue that
> > it is a regression for this merge window.  I have therefore queued it
> > for 3.7.
> 
> I don't follow that; I would expect any serious bug fix (serious enough
> for a stable update) to be acceptable for 3.6 at this point.

OK, if any of the arch maintainers wishes to submit the patch to 3.6,
they are free to do so -- just let me know and I will drop the patch from
my tree.

That said, all this does is cause spurious warnings to be printed, so
not sure it really qualifies as serious.  But I am happy to leave that
decision with the individual arch maintainers -- it is their arch,
after all, so their decision.

							Thanx, Paul

> If the regression occurred in 3.3, then the cc lines should be something
> like:
> 
>     Cc: <stable@vger.kernel.org> # 3.3+
> 
> and not the current:
> 
>     Cc: 3.2.x.. <stable@vger.kernel.org>
> 
> (Note, version annotations should be on the right of the address, not in
> the 'real name' position on the left.)


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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-25  3:50     ` Paul E. McKenney
@ 2012-08-25 13:16       ` Frederic Weisbecker
  2012-08-25 16:18         ` Paul E. McKenney
  0 siblings, 1 reply; 26+ messages in thread
From: Frederic Weisbecker @ 2012-08-25 13:16 UTC (permalink / raw)
  To: Paul E. McKenney
  Cc: Ben Hutchings, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

On Fri, Aug 24, 2012 at 08:50:47PM -0700, Paul E. McKenney wrote:
> On Sat, Aug 25, 2012 at 02:19:14AM +0100, Ben Hutchings wrote:
> > On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
> > > On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
> > > > Hi,
> > > > 
> > > > Changes since v1:
> > > > 
> > > > - Fixed preempt handling in alpha idle loop
> > > > - added ack from Geert
> > > > - fixed stable email address, sorry :-/
> > > > 
> > > > This time I built tested everywhere but: h8300 (compiler internal error),
> > > > and mn10300, parisc, score (cross compilers not available in
> > > > ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
> > > > 
> > > > For testing, you can pull from:
> > > > 
> > > > git://github.com/fweisbec/linux-dynticks.git
> > > > 	rcu/idle-fix-v2 
> > > > 
> > > > Thanks.
> > > 
> > > I have queued these on -rcu branch rcu/idle:
> > > 
> > > 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
> > > 
> > > This problem has been in place since 3.3, so it is hard to argue that
> > > it is a regression for this merge window.  I have therefore queued it
> > > for 3.7.
> > 
> > I don't follow that; I would expect any serious bug fix (serious enough
> > for a stable update) to be acceptable for 3.6 at this point.
> 
> OK, if any of the arch maintainers wishes to submit the patch to 3.6,
> they are free to do so -- just let me know and I will drop the patch from
> my tree.
> 
> That said, all this does is cause spurious warnings to be printed, so
> not sure it really qualifies as serious.  But I am happy to leave that
> decision with the individual arch maintainers -- it is their arch,
> after all, so their decision.

Couldn't that cause hung tasks due to long lasting synchronize_rcu() ?

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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-25 13:16       ` Frederic Weisbecker
@ 2012-08-25 16:18         ` Paul E. McKenney
  2012-08-25 21:15           ` Michael Cree
  0 siblings, 1 reply; 26+ messages in thread
From: Paul E. McKenney @ 2012-08-25 16:18 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: Ben Hutchings, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

On Sat, Aug 25, 2012 at 03:16:49PM +0200, Frederic Weisbecker wrote:
> On Fri, Aug 24, 2012 at 08:50:47PM -0700, Paul E. McKenney wrote:
> > On Sat, Aug 25, 2012 at 02:19:14AM +0100, Ben Hutchings wrote:
> > > On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
> > > > On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
> > > > > Hi,
> > > > > 
> > > > > Changes since v1:
> > > > > 
> > > > > - Fixed preempt handling in alpha idle loop
> > > > > - added ack from Geert
> > > > > - fixed stable email address, sorry :-/
> > > > > 
> > > > > This time I built tested everywhere but: h8300 (compiler internal error),
> > > > > and mn10300, parisc, score (cross compilers not available in
> > > > > ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
> > > > > 
> > > > > For testing, you can pull from:
> > > > > 
> > > > > git://github.com/fweisbec/linux-dynticks.git
> > > > > 	rcu/idle-fix-v2 
> > > > > 
> > > > > Thanks.
> > > > 
> > > > I have queued these on -rcu branch rcu/idle:
> > > > 
> > > > 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
> > > > 
> > > > This problem has been in place since 3.3, so it is hard to argue that
> > > > it is a regression for this merge window.  I have therefore queued it
> > > > for 3.7.
> > > 
> > > I don't follow that; I would expect any serious bug fix (serious enough
> > > for a stable update) to be acceptable for 3.6 at this point.
> > 
> > OK, if any of the arch maintainers wishes to submit the patch to 3.6,
> > they are free to do so -- just let me know and I will drop the patch from
> > my tree.
> > 
> > That said, all this does is cause spurious warnings to be printed, so
> > not sure it really qualifies as serious.  But I am happy to leave that
> > decision with the individual arch maintainers -- it is their arch,
> > after all, so their decision.
> 
> Couldn't that cause hung tasks due to long lasting synchronize_rcu() ?

In theory, definitely.  In practice, they haven't been running into it,
or they would be reporting hangs.

							Thanx, Paul


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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-25 16:18         ` Paul E. McKenney
@ 2012-08-25 21:15           ` Michael Cree
  2012-08-26  0:12             ` Paul E. McKenney
  0 siblings, 1 reply; 26+ messages in thread
From: Michael Cree @ 2012-08-25 21:15 UTC (permalink / raw)
  To: paulmck
  Cc: Frederic Weisbecker, Ben Hutchings, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha

On 26/08/12 04:18, Paul E. McKenney wrote:
> On Sat, Aug 25, 2012 at 03:16:49PM +0200, Frederic Weisbecker wrote:
>> On Fri, Aug 24, 2012 at 08:50:47PM -0700, Paul E. McKenney wrote:
>>> On Sat, Aug 25, 2012 at 02:19:14AM +0100, Ben Hutchings wrote:
>>>> On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
>>>>> On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Changes since v1:
>>>>>>
>>>>>> - Fixed preempt handling in alpha idle loop
>>>>>> - added ack from Geert
>>>>>> - fixed stable email address, sorry :-/
>>>>>>
>>>>>> This time I built tested everywhere but: h8300 (compiler internal error),
>>>>>> and mn10300, parisc, score (cross compilers not available in
>>>>>> ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
>>>>>>
>>>>>> For testing, you can pull from:
>>>>>>
>>>>>> git://github.com/fweisbec/linux-dynticks.git
>>>>>> 	rcu/idle-fix-v2 
>>>>>>
>>>>>> Thanks.
>>>>>
>>>>> I have queued these on -rcu branch rcu/idle:
>>>>>
>>>>> 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
>>>>>
>>>>> This problem has been in place since 3.3, so it is hard to argue that
>>>>> it is a regression for this merge window.  I have therefore queued it
>>>>> for 3.7.
>>>>
>>>> I don't follow that; I would expect any serious bug fix (serious enough
>>>> for a stable update) to be acceptable for 3.6 at this point.
>>>
>>> OK, if any of the arch maintainers wishes to submit the patch to 3.6,
>>> they are free to do so -- just let me know and I will drop the patch from
>>> my tree.
>>>
>>> That said, all this does is cause spurious warnings to be printed, so
>>> not sure it really qualifies as serious.  But I am happy to leave that
>>> decision with the individual arch maintainers -- it is their arch,
>>> after all, so their decision.
>>
>> Couldn't that cause hung tasks due to long lasting synchronize_rcu() ?
> 
> In theory, definitely.  In practice, they haven't been running into it,
> or they would be reporting hangs.

I am hereby reporting that RCU CPU stall warnings and hung tasks are
being experienced on SMP kernels built for generic Alpha. This problem
dates back quite a few kernel releases. The discussed patches appear to
fix the problem.

A backport to the 3.2 kernel, of at least the Alpha patches, would be
very much appreciated! :-)

Cheers
Michael.

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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-25 21:15           ` Michael Cree
@ 2012-08-26  0:12             ` Paul E. McKenney
  2012-08-26  9:21               ` Tobias Klausmann
  0 siblings, 1 reply; 26+ messages in thread
From: Paul E. McKenney @ 2012-08-26  0:12 UTC (permalink / raw)
  To: Michael Cree
  Cc: Frederic Weisbecker, Ben Hutchings, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha

On Sun, Aug 26, 2012 at 09:15:27AM +1200, Michael Cree wrote:
> On 26/08/12 04:18, Paul E. McKenney wrote:
> > On Sat, Aug 25, 2012 at 03:16:49PM +0200, Frederic Weisbecker wrote:
> >> On Fri, Aug 24, 2012 at 08:50:47PM -0700, Paul E. McKenney wrote:
> >>> On Sat, Aug 25, 2012 at 02:19:14AM +0100, Ben Hutchings wrote:
> >>>> On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
> >>>>> On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
> >>>>>> Hi,
> >>>>>>
> >>>>>> Changes since v1:
> >>>>>>
> >>>>>> - Fixed preempt handling in alpha idle loop
> >>>>>> - added ack from Geert
> >>>>>> - fixed stable email address, sorry :-/
> >>>>>>
> >>>>>> This time I built tested everywhere but: h8300 (compiler internal error),
> >>>>>> and mn10300, parisc, score (cross compilers not available in
> >>>>>> ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
> >>>>>>
> >>>>>> For testing, you can pull from:
> >>>>>>
> >>>>>> git://github.com/fweisbec/linux-dynticks.git
> >>>>>> 	rcu/idle-fix-v2 
> >>>>>>
> >>>>>> Thanks.
> >>>>>
> >>>>> I have queued these on -rcu branch rcu/idle:
> >>>>>
> >>>>> 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
> >>>>>
> >>>>> This problem has been in place since 3.3, so it is hard to argue that
> >>>>> it is a regression for this merge window.  I have therefore queued it
> >>>>> for 3.7.
> >>>>
> >>>> I don't follow that; I would expect any serious bug fix (serious enough
> >>>> for a stable update) to be acceptable for 3.6 at this point.
> >>>
> >>> OK, if any of the arch maintainers wishes to submit the patch to 3.6,
> >>> they are free to do so -- just let me know and I will drop the patch from
> >>> my tree.
> >>>
> >>> That said, all this does is cause spurious warnings to be printed, so
> >>> not sure it really qualifies as serious.  But I am happy to leave that
> >>> decision with the individual arch maintainers -- it is their arch,
> >>> after all, so their decision.
> >>
> >> Couldn't that cause hung tasks due to long lasting synchronize_rcu() ?
> > 
> > In theory, definitely.  In practice, they haven't been running into it,
> > or they would be reporting hangs.
> 
> I am hereby reporting that RCU CPU stall warnings and hung tasks are
> being experienced on SMP kernels built for generic Alpha. This problem
> dates back quite a few kernel releases. The discussed patches appear to
> fix the problem.

OK, fair enough.

> A backport to the 3.2 kernel, of at least the Alpha patches, would be
> very much appreciated! :-)

Both Alpha patches should apply as-is back to 3.3, and should also fix
the problem.  Could you please check this on the versions of interest?

If you are seeing something like this on 3.2 or earlier, you have some
other problem that needs to be tracked down separately.

							Thanx, Paul


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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-26  0:12             ` Paul E. McKenney
@ 2012-08-26  9:21               ` Tobias Klausmann
  2012-09-10 21:53                 ` Frederic Weisbecker
  0 siblings, 1 reply; 26+ messages in thread
From: Tobias Klausmann @ 2012-08-26  9:21 UTC (permalink / raw)
  To: Paul E. McKenney
  Cc: Michael Cree, Frederic Weisbecker, Ben Hutchings, LKML,
	Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha

Hi! 

On Sat, 25 Aug 2012, Paul E. McKenney wrote:
> Both Alpha patches should apply as-is back to 3.3, and should also fix
> the problem.  Could you please check this on the versions of interest?

I just now tried them on top of 3.3.8 from linux-stable.git.
While they apply cleanly, I get a compile failure:

  CC      arch/alpha/kernel/process.o
arch/alpha/kernel/process.c: In function 'cpu_idle':
arch/alpha/kernel/process.c:64: error: implicit declaration of function 'schedule_preempt_disabled'
make[1]: *** [arch/alpha/kernel/process.o] Error 1
make: *** [arch/alpha/kernel] Error 2

AFAICT, schedule_preempt_disabled() was only introduced in 3.4
and thus needs to be backported for 3.3.

Regards,
Tobias

-- 
panic("%s: CORRUPTED BTREE OR SOMETHING", __FUNCTION__);
        linux-2.6.6/fs/xfs/xfs_bmap.c

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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-26  9:21               ` Tobias Klausmann
@ 2012-09-10 21:53                 ` Frederic Weisbecker
  2012-09-12 18:01                   ` Tobias Klausmann
  0 siblings, 1 reply; 26+ messages in thread
From: Frederic Weisbecker @ 2012-09-10 21:53 UTC (permalink / raw)
  To: Paul E. McKenney, Michael Cree, Ben Hutchings, LKML,
	Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha

On Sun, Aug 26, 2012 at 11:21:37AM +0200, Tobias Klausmann wrote:
> Hi! 
> 
> On Sat, 25 Aug 2012, Paul E. McKenney wrote:
> > Both Alpha patches should apply as-is back to 3.3, and should also fix
> > the problem.  Could you please check this on the versions of interest?
> 
> I just now tried them on top of 3.3.8 from linux-stable.git.
> While they apply cleanly, I get a compile failure:
> 
>   CC      arch/alpha/kernel/process.o
> arch/alpha/kernel/process.c: In function 'cpu_idle':
> arch/alpha/kernel/process.c:64: error: implicit declaration of function 'schedule_preempt_disabled'
> make[1]: *** [arch/alpha/kernel/process.o] Error 1
> make: *** [arch/alpha/kernel] Error 2
> 
> AFAICT, schedule_preempt_disabled() was only introduced in 3.4
> and thus needs to be backported for 3.3.

Please try with this instead:

	preempt_enable_no_resched();
	schedule();
	preempt_disable();

Thanks.

> 
> Regards,
> Tobias
> 
> -- 
> panic("%s: CORRUPTED BTREE OR SOMETHING", __FUNCTION__);
>         linux-2.6.6/fs/xfs/xfs_bmap.c

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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-08-25  1:19   ` Ben Hutchings
  2012-08-25  2:10     ` Michael Cree
  2012-08-25  3:50     ` Paul E. McKenney
@ 2012-09-10 21:56     ` Frederic Weisbecker
  2012-09-10 22:58       ` Paul E. McKenney
  2 siblings, 1 reply; 26+ messages in thread
From: Frederic Weisbecker @ 2012-09-10 21:56 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: paulmck, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

On Sat, Aug 25, 2012 at 02:19:14AM +0100, Ben Hutchings wrote:
> On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
> > On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
> > > Hi,
> > > 
> > > Changes since v1:
> > > 
> > > - Fixed preempt handling in alpha idle loop
> > > - added ack from Geert
> > > - fixed stable email address, sorry :-/
> > > 
> > > This time I built tested everywhere but: h8300 (compiler internal error),
> > > and mn10300, parisc, score (cross compilers not available in
> > > ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
> > > 
> > > For testing, you can pull from:
> > > 
> > > git://github.com/fweisbec/linux-dynticks.git
> > > 	rcu/idle-fix-v2 
> > > 
> > > Thanks.
> > 
> > I have queued these on -rcu branch rcu/idle:
> > 
> > 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
> > 
> > This problem has been in place since 3.3, so it is hard to argue that
> > it is a regression for this merge window.  I have therefore queued it
> > for 3.7.
> 
> I don't follow that; I would expect any serious bug fix (serious enough
> for a stable update) to be acceptable for 3.6 at this point.
> 
> If the regression occurred in 3.3, then the cc lines should be something
> like:
> 
>     Cc: <stable@vger.kernel.org> # 3.3+
> 
> and not the current:
> 
>     Cc: 3.2.x.. <stable@vger.kernel.org>
> 
> (Note, version annotations should be on the right of the address, not in
> the 'real name' position on the left.)

Ah indeed.

Hmm, I don't understand why we took that convention while we can reuse the name
that precedes the email to put that information.

Anyway, should I resend the patchset with this thing fixed?

Thanks.

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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-09-10 21:56     ` Frederic Weisbecker
@ 2012-09-10 22:58       ` Paul E. McKenney
  2012-09-11 12:35         ` Frederic Weisbecker
  0 siblings, 1 reply; 26+ messages in thread
From: Paul E. McKenney @ 2012-09-10 22:58 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: Ben Hutchings, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

On Mon, Sep 10, 2012 at 11:56:08PM +0200, Frederic Weisbecker wrote:
> On Sat, Aug 25, 2012 at 02:19:14AM +0100, Ben Hutchings wrote:
> > On Fri, 2012-08-24 at 14:26 -0700, Paul E. McKenney wrote:
> > > On Thu, Aug 23, 2012 at 04:58:24PM +0200, Frederic Weisbecker wrote:
> > > > Hi,
> > > > 
> > > > Changes since v1:
> > > > 
> > > > - Fixed preempt handling in alpha idle loop
> > > > - added ack from Geert
> > > > - fixed stable email address, sorry :-/
> > > > 
> > > > This time I built tested everywhere but: h8300 (compiler internal error),
> > > > and mn10300, parisc, score (cross compilers not available in
> > > > ftp://ftp.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.6.3/)
> > > > 
> > > > For testing, you can pull from:
> > > > 
> > > > git://github.com/fweisbec/linux-dynticks.git
> > > > 	rcu/idle-fix-v2 
> > > > 
> > > > Thanks.
> > > 
> > > I have queued these on -rcu branch rcu/idle:
> > > 
> > > 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
> > > 
> > > This problem has been in place since 3.3, so it is hard to argue that
> > > it is a regression for this merge window.  I have therefore queued it
> > > for 3.7.
> > 
> > I don't follow that; I would expect any serious bug fix (serious enough
> > for a stable update) to be acceptable for 3.6 at this point.
> > 
> > If the regression occurred in 3.3, then the cc lines should be something
> > like:
> > 
> >     Cc: <stable@vger.kernel.org> # 3.3+
> > 
> > and not the current:
> > 
> >     Cc: 3.2.x.. <stable@vger.kernel.org>
> > 
> > (Note, version annotations should be on the right of the address, not in
> > the 'real name' position on the left.)
> 
> Ah indeed.
> 
> Hmm, I don't understand why we took that convention while we can reuse the name
> that precedes the email to put that information.
> 
> Anyway, should I resend the patchset with this thing fixed?

Please feel free to do so.  ;-)

							Thanx, Paul


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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-09-10 22:58       ` Paul E. McKenney
@ 2012-09-11 12:35         ` Frederic Weisbecker
  0 siblings, 0 replies; 26+ messages in thread
From: Frederic Weisbecker @ 2012-09-11 12:35 UTC (permalink / raw)
  To: Paul E. McKenney
  Cc: Ben Hutchings, LKML, Chris Zankel, 3.2.x..,
	Chen Liqin, Lennox Wu, James E.J. Bottomley, Helge Deller,
	Parisc, David Howells, Koichi Yasutake, Geert Uytterhoeven, m68k,
	Hirokazu Takata, Yoshinori Sato, Mikael Starvik, Jesper Nilsson,
	Cris, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha,
	Michael Cree

On Mon, Sep 10, 2012 at 03:58:45PM -0700, Paul E. McKenney wrote:
> > Anyway, should I resend the patchset with this thing fixed?
> 
> Please feel free to do so.  ;-)
> 
> 							Thanx, Paul
> 

So here it is.

On the menu for the updated branch:

- fixed stable tags (use # 3.3+)
- not sure what to do with "alpha: Fix preemption handling in idle loop",
  tag as stable or not?
- added tested-by Michael Cree <mcree@orcon.net.nz> for alpha patches
- propagate rename to rcu_user_*_after_irq() in the commit changelog
- remove trailing #endif in "rcu: New rcu_user_enter_after_irq() and rcu_user_exit_after_irq() APIs"
  and early rcu_user_hooks_switch() header as well (reported by WU Fenguang).
- add rcu_user_hooks_switch() header in "rcu: Switch task's syscall hooks on context switch"

I believe this all should also fix what WU Fenguang reported:

	[rcu:rcu:next 54/82] include/linux/rcupdate.h:202:20: error: redefinition of 'rcu_user_exit'
	[rcu:rcu:next 54/82] include/linux/rcupdate.h:401:19: error: redefinition of 'rcu_read_lock_bh_held'
	[rcu:rcu:idle 2/27] include/linux/rcupdate.h:969:2: error: #endif without #if

I'm not reposting the patches because few things have actually changed, except a few neats and some stuff
that have been moved from a patch to another to unbreak bisection. But the end result is about the same.
You can check the difference with a git diff between our branches.

If you want to, though, I can repost the patches.

This is pullable from:

git://github.com/fweisbec/linux-dynticks.git
	rcu/idle-for-v3.7

Thanks.

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

* Re: [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2
  2012-09-10 21:53                 ` Frederic Weisbecker
@ 2012-09-12 18:01                   ` Tobias Klausmann
  0 siblings, 0 replies; 26+ messages in thread
From: Tobias Klausmann @ 2012-09-12 18:01 UTC (permalink / raw)
  To: LKML, alpha

Hi! 

On Mon, 10 Sep 2012, Frederic Weisbecker wrote:
> > AFAICT, schedule_preempt_disabled() was only introduced in 3.4
> > and thus needs to be backported for 3.3.
> 
> Please try with this instead:
> 
> 	preempt_enable_no_resched();
> 	schedule();
> 	preempt_disable();
> 
> Thanks.

While it does compile, it hits the usual Alpha snag (3.3 onwards)
on boot:

PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
pci_bus 0000:00: root bus resource [mem 0x00000000-0xffffffffffffffff]
pci 0000:00:11.0: quirk: [io  0x4000-0x403f] claimed by ali7101 ACPI
pci 0000:00:11.0: quirk: [io  0x5000-0x501f] claimed by ali7101 SMB
Unable to handle kernel paging request at virtual address 0000000000000000
swapper(1): Oops 1
pc = [<fffffc00008667bc>]  ra = [<fffffc0000866794>]  ps = 0000    Not tainted
pc is at nautilus_init_pci+0xd4/0x218
ra is at nautilus_init_pci+0xac/0x218
v0 = 0000000000000001  t0 = 0000000000000000  t1 = 000000000000ffff
t2 = 00000000ffffffff  t3 = fffffc0000896810  t4 = 0000000001000000
t5 = 0000000000080000  t6 = 000000000fffffff  t7 = fffffc00bf890000
s0 = fffffc00bf8b4800  s1 = 0000000000ffffff  s2 = 000000000007fffa
s3 = 0000000000000000  s4 = 0000000000000000  s5 = 0000000000002ab5
s6 = 5800000000000701
a0 = fffffc0000896b88  a1 = 0000000000000000  a2 = 0000000000000000
a3 = 000000000e000000  a4 = 0000000002000000  a5 = 0000000000000001
t8 = 0000000000000000  t9 = 0000000000000000  t10= 0000000000000001
t11= 0000000000000000  pv = fffffc000032bdc0  at = 000000000d0e4600
gp = fffffc00008e34a8  sp = fffffc00bf893e28
Disabling lock debugging due to kernel taint
Trace:
[<fffffc0000310088>] do_one_initcall+0x38/0x200
[<fffffc0000311338>] kernel_thread+0x28/0x90

This is not an RCU problem, though. AFAICT.

I tried the patches with 3.2.28 (the latest vanilla kernel that
works on this machine _at all_) but those don't have an RCU
implementation and thus, the compile fails:

  CC      arch/alpha/kernel/process.o
arch/alpha/kernel/process.c: In function 'cpu_idle':
arch/alpha/kernel/process.c:59: error: implicit declaration of function 'rcu_idle_enter'
arch/alpha/kernel/process.c:63: error: implicit declaration of function 'rcu_idle_exit'
make[1]: *** [arch/alpha/kernel/process.o] Error 1
make: *** [arch/alpha/kernel] Error 2


Regards,
Tobias

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

end of thread, other threads:[~2012-09-12 18:01 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-23 14:58 [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 01/11] alpha: Fix preemption handling in idle loop Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 02/11] alpha: Add missing RCU idle APIs on " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 03/11] cris: " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 04/11] frv: " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 05/11] h8300: " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 06/11] m32r: " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 07/11] m68k: " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 08/11] mn10300: " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 09/11] parisc: " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 10/11] score: " Frederic Weisbecker
2012-08-23 14:58 ` [PATCH 11/11] xtensa: " Frederic Weisbecker
2012-08-24 21:26 ` [PATCH 00/11] rcu: Add missing RCU idle APIs on idle loop v2 Paul E. McKenney
2012-08-25  1:19   ` Ben Hutchings
2012-08-25  2:10     ` Michael Cree
2012-08-25  3:50     ` Paul E. McKenney
2012-08-25 13:16       ` Frederic Weisbecker
2012-08-25 16:18         ` Paul E. McKenney
2012-08-25 21:15           ` Michael Cree
2012-08-26  0:12             ` Paul E. McKenney
2012-08-26  9:21               ` Tobias Klausmann
2012-09-10 21:53                 ` Frederic Weisbecker
2012-09-12 18:01                   ` Tobias Klausmann
2012-09-10 21:56     ` Frederic Weisbecker
2012-09-10 22:58       ` Paul E. McKenney
2012-09-11 12:35         ` Frederic Weisbecker

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).