Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1386879 > unrolled thread

[PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

Started by"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
First post2016-04-25 22:50 +0200
Last post2016-04-26 21:50 +0200
Articles 20 on this page of 29 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-25 22:50 +0200
    Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 17:10 +0200
      Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 20:00 +0200
        Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 20:30 +0200
          Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 21:10 +0200
            Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Steven Rostedt <rostedt@goodmis.org> - 2016-04-26 21:50 +0200
              Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 22:00 +0200
                Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Steven Rostedt <rostedt@goodmis.org> - 2016-04-26 22:00 +0200
                  Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 22:10 +0200
              Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 22:00 +0200
                Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 22:10 +0200
                  Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Steven Rostedt <rostedt@goodmis.org> - 2016-04-26 22:20 +0200
                    Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 22:40 +0200
                  Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 22:20 +0200
                    Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 22:40 +0200
                      Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 22:50 +0200
                        Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Steven Rostedt <rostedt@goodmis.org> - 2016-04-26 23:00 +0200
                          Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 23:10 +0200
                        Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 23:20 +0200
                          Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 23:30 +0200
                            Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 23:40 +0200
                        Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 23:20 +0200
                      Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 22:50 +0200
            Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 21:50 +0200
              Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 21:50 +0200
          Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Steven Rostedt <rostedt@goodmis.org> - 2016-04-26 21:20 +0200
            Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Steven Rostedt <rostedt@goodmis.org> - 2016-04-26 21:50 +0200
            Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2016-04-26 21:50 +0200
            Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from  idle Tony Lindgren <tony@atomide.com> - 2016-04-26 21:50 +0200

Page 1 of 2  [1] 2  Next page →


#1386879 — [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-25 22:50 +0200
Subject[PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rrVCa-3B8-23@gated-at.bofh.it>
Testing on ARM encountered the following pair of lockdep-RCU splats:

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

===============================
[ INFO: suspicious RCU usage. ]
4.6.0-rc4-next-20160422 #1 Not tainted
-------------------------------
include/trace/events/power.h:328 suspicious rcu_dereference_check() usage!

other info that might help us debug this:

RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
no locks held by swapper/0/0.

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc4-next-20160422 #1
Hardware name: Generic OMAP3-GP (Flattened Device Tree)
[<c010f55c>] (unwind_backtrace) from [<c010b64c>] (show_stack+0x10/0x14)
[<c010b64c>] (show_stack) from [<c047acbc>] (dump_stack+0xa8/0xe0)
[<c047acbc>] (dump_stack) from [<c012bc10>] (pwrdm_set_next_pwrst+0xf8/0x1cc)
[<c012bc10>] (pwrdm_set_next_pwrst) from [<c01269fc>] (omap3_enter_idle_bm+0x1b8/0x1e8)
[<c01269fc>] (omap3_enter_idle_bm) from [<c05fa0b8>] (cpuidle_enter_state+0x84/0x408)
[<c05fa0b8>] (cpuidle_enter_state) from [<c0182c1c>] (cpu_startup_entry+0x1c8/0x3f0)
[<c0182c1c>] (cpu_startup_entry) from [<c0b00c20>] (start_kernel+0x354/0x3cc)

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

[<c010f55c>] (unwind_backtrace) from [<c010b64c>] (show_stack+0x10/0x14)
[<c010b64c>] (show_stack) from [<c047ac3c>] (dump_stack+0xa8/0xe0)
[<c047ac3c>] (dump_stack) from [<c012c340>] (_pwrdm_state_switch+0x188/0x32c)
[<c012c340>] (_pwrdm_state_switch) from [<c012c4f0>] (_pwrdm_post_transition_cb+0xc/0x14)
[<c012c4f0>] (_pwrdm_post_transition_cb) from [<c012ba74>] (pwrdm_for_each+0x30/0x5c)
[<c012ba74>] (pwrdm_for_each) from [<c012c72c>] (pwrdm_post_transition+0x24/0x30)
[<c012c72c>] (pwrdm_post_transition) from [<c012548c>] (omap_sram_idle+0xfc/0x240)
[<c012548c>] (omap_sram_idle) from [<c0126934>] (omap3_enter_idle_bm+0xf0/0x1e8)
[<c0126934>] (omap3_enter_idle_bm) from [<c05fa038>] (cpuidle_enter_state+0x84/0x408)
[<c05fa038>] (cpuidle_enter_state) from [<c0182b90>] (cpu_startup_entry+0x1c8/0x3f0)
[<c0182b90>] (cpu_startup_entry) from [<c0b00c20>] (start_kernel+0x354/0x3cc)

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

These are caused by event tracing from the idle loop.  This commit
therefore adds the _rcuidle suffix to make RCU aware of this implicit
use of RCU by event tracing, thus preventing both splats.

Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: <linux-omap@vger.kernel.org>
Cc: <linux-arm-kernel@lists.infradead.org>
---
 arch/arm/mach-omap2/powerdomain.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
index 78af6d8cf2e2..daf2753de7aa 100644
--- a/arch/arm/mach-omap2/powerdomain.c
+++ b/arch/arm/mach-omap2/powerdomain.c
@@ -186,8 +186,9 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag)
 			trace_state = (PWRDM_TRACE_STATES_FLAG |
 				       ((next & OMAP_POWERSTATE_MASK) << 8) |
 				       ((prev & OMAP_POWERSTATE_MASK) << 0));
-			trace_power_domain_target(pwrdm->name, trace_state,
-						  smp_processor_id());
+			trace_power_domain_target_rcuidle(pwrdm->name,
+							  trace_state,
+							  smp_processor_id());
 		}
 		break;
 	default:
@@ -523,8 +524,8 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
 
 	if (arch_pwrdm && arch_pwrdm->pwrdm_set_next_pwrst) {
 		/* Trace the pwrdm desired target state */
-		trace_power_domain_target(pwrdm->name, pwrst,
-					  smp_processor_id());
+		trace_power_domain_target_rcuidle(pwrdm->name, pwrst,
+						  smp_processor_id());
 		/* Program the pwrdm desired target state */
 		ret = arch_pwrdm->pwrdm_set_next_pwrst(pwrdm, pwrst);
 	}
-- 
2.5.2

[toc] | [next] | [standalone]


#1387595 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromTony Lindgren <tony@atomide.com>
Date2016-04-26 17:10 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rscMG-1n6-21@gated-at.bofh.it>
In reply to#1386879
Hi,

* Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160425 13:49]:
> Testing on ARM encountered the following pair of lockdep-RCU splats:
> 
> ------------------------------------------------------------------------
> 
> ===============================
> [ INFO: suspicious RCU usage. ]
> 4.6.0-rc4-next-20160422 #1 Not tainted
> -------------------------------
> include/trace/events/power.h:328 suspicious rcu_dereference_check() usage!
> 
> other info that might help us debug this:
> 
> RCU used illegally from idle CPU!
> rcu_scheduler_active = 1, debug_locks = 0
> RCU used illegally from extended quiescent state!
> no locks held by swapper/0/0.
> 
> stack backtrace:
> CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc4-next-20160422 #1
> Hardware name: Generic OMAP3-GP (Flattened Device Tree)
> [<c010f55c>] (unwind_backtrace) from [<c010b64c>] (show_stack+0x10/0x14)
> [<c010b64c>] (show_stack) from [<c047acbc>] (dump_stack+0xa8/0xe0)
> [<c047acbc>] (dump_stack) from [<c012bc10>] (pwrdm_set_next_pwrst+0xf8/0x1cc)
> [<c012bc10>] (pwrdm_set_next_pwrst) from [<c01269fc>] (omap3_enter_idle_bm+0x1b8/0x1e8)
> [<c01269fc>] (omap3_enter_idle_bm) from [<c05fa0b8>] (cpuidle_enter_state+0x84/0x408)
> [<c05fa0b8>] (cpuidle_enter_state) from [<c0182c1c>] (cpu_startup_entry+0x1c8/0x3f0)
> [<c0182c1c>] (cpu_startup_entry) from [<c0b00c20>] (start_kernel+0x354/0x3cc)
> 
> ------------------------------------------------------------------------
> 
> [<c010f55c>] (unwind_backtrace) from [<c010b64c>] (show_stack+0x10/0x14)
> [<c010b64c>] (show_stack) from [<c047ac3c>] (dump_stack+0xa8/0xe0)
> [<c047ac3c>] (dump_stack) from [<c012c340>] (_pwrdm_state_switch+0x188/0x32c)
> [<c012c340>] (_pwrdm_state_switch) from [<c012c4f0>] (_pwrdm_post_transition_cb+0xc/0x14)
> [<c012c4f0>] (_pwrdm_post_transition_cb) from [<c012ba74>] (pwrdm_for_each+0x30/0x5c)
> [<c012ba74>] (pwrdm_for_each) from [<c012c72c>] (pwrdm_post_transition+0x24/0x30)
> [<c012c72c>] (pwrdm_post_transition) from [<c012548c>] (omap_sram_idle+0xfc/0x240)
> [<c012548c>] (omap_sram_idle) from [<c0126934>] (omap3_enter_idle_bm+0xf0/0x1e8)
> [<c0126934>] (omap3_enter_idle_bm) from [<c05fa038>] (cpuidle_enter_state+0x84/0x408)
> [<c05fa038>] (cpuidle_enter_state) from [<c0182b90>] (cpu_startup_entry+0x1c8/0x3f0)
> [<c0182b90>] (cpu_startup_entry) from [<c0b00c20>] (start_kernel+0x354/0x3cc)
> 
> ------------------------------------------------------------------------
> 
> These are caused by event tracing from the idle loop.  This commit
> therefore adds the _rcuidle suffix to make RCU aware of this implicit
> use of RCU by event tracing, thus preventing both splats.

Maybe also mention which patch in the RCU tree caused these?

I'm still seeing the following warnings with next with your patch applied.

Regards,

Tony

8< -----------------
Warning from omap4
===============================
[ INFO: suspicious RCU usage. ]
4.6.0-rc5-next-20160426+ #1112 Not tainted
-------------------------------
include/trace/events/ipi.h:35 suspicious rcu_dereference_check() usage!

other info that might help us debug this:


RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
no locks held by swapper/0/0.

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1112
Hardware name: Generic OMAP4 (Flattened Device Tree)
[<c0110308>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
[<c010c3a8>] (show_stack) from [<c047fec8>] (dump_stack+0xb0/0xe4)
[<c047fec8>] (dump_stack) from [<c010dcfc>] (smp_cross_call+0xbc/0x188)
[<c010dcfc>] (smp_cross_call) from [<c01c9e28>] (generic_exec_single+0x9c/0x15c)
[<c01c9e28>] (generic_exec_single) from [<c01ca0a0>] (smp_call_function_single_async+0
x38/0x9c)
[<c01ca0a0>] (smp_call_function_single_async) from [<c0603728>] (cpuidle_coupled_poke_
others+0x8c/0xa8)
[<c0603728>] (cpuidle_coupled_poke_others) from [<c0603c10>] (cpuidle_enter_state_coup
led+0x26c/0x390)
[<c0603c10>] (cpuidle_enter_state_coupled) from [<c0183c74>] (cpu_startup_entry+0x198/
0x3a0)
[<c0183c74>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
[<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)

Warning from omap3
===============================
[ INFO: suspicious RCU usage. ]
4.6.0-rc5-next-20160426+ #1112 Not tainted
-------------------------------
include/trace/events/rpm.h:63 suspicious rcu_dereference_check() usage!

other info that might help us debug this:


RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
1 lock held by swapper/0/0:
 #0:  (&(&dev->power.lock)->rlock){-.-...}, at: [<c052ee24>] __pm_runtime_suspend+0x54/0x84

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1112
Hardware name: Generic OMAP36xx (Flattened Device Tree)
[<c0110308>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
[<c010c3a8>] (show_stack) from [<c047fec8>] (dump_stack+0xb0/0xe4)
[<c047fec8>] (dump_stack) from [<c052d7b4>] (rpm_suspend+0x604/0x7e4)
[<c052d7b4>] (rpm_suspend) from [<c052ee34>] (__pm_runtime_suspend+0x64/0x84)
[<c052ee34>] (__pm_runtime_suspend) from [<c04bf3bc>] (omap2_gpio_prepare_for_idle+0x5c/0x70)
[<c04bf3bc>] (omap2_gpio_prepare_for_idle) from [<c01255e8>] (omap_sram_idle+0x140/0x244)
[<c01255e8>] (omap_sram_idle) from [<c0126b48>] (omap3_enter_idle_bm+0xfc/0x1ec)
[<c0126b48>] (omap3_enter_idle_bm) from [<c0601db8>] (cpuidle_enter_state+0x80/0x3d4)
[<c0601db8>] (cpuidle_enter_state) from [<c0183c74>] (cpu_startup_entry+0x198/0x3a0)
[<c0183c74>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
[<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)

[toc] | [prev] | [next] | [standalone]


#1387775 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 20:00 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsfrc-3gJ-17@gated-at.bofh.it>
In reply to#1387595
On Tue, Apr 26, 2016 at 08:00:31AM -0700, Tony Lindgren wrote:
> Hi,
> 
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160425 13:49]:
> > Testing on ARM encountered the following pair of lockdep-RCU splats:
> > 
> > ------------------------------------------------------------------------
> > 
> > ===============================
> > [ INFO: suspicious RCU usage. ]
> > 4.6.0-rc4-next-20160422 #1 Not tainted
> > -------------------------------
> > include/trace/events/power.h:328 suspicious rcu_dereference_check() usage!
> > 
> > other info that might help us debug this:
> > 
> > RCU used illegally from idle CPU!
> > rcu_scheduler_active = 1, debug_locks = 0
> > RCU used illegally from extended quiescent state!
> > no locks held by swapper/0/0.
> > 
> > stack backtrace:
> > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc4-next-20160422 #1
> > Hardware name: Generic OMAP3-GP (Flattened Device Tree)
> > [<c010f55c>] (unwind_backtrace) from [<c010b64c>] (show_stack+0x10/0x14)
> > [<c010b64c>] (show_stack) from [<c047acbc>] (dump_stack+0xa8/0xe0)
> > [<c047acbc>] (dump_stack) from [<c012bc10>] (pwrdm_set_next_pwrst+0xf8/0x1cc)
> > [<c012bc10>] (pwrdm_set_next_pwrst) from [<c01269fc>] (omap3_enter_idle_bm+0x1b8/0x1e8)
> > [<c01269fc>] (omap3_enter_idle_bm) from [<c05fa0b8>] (cpuidle_enter_state+0x84/0x408)
> > [<c05fa0b8>] (cpuidle_enter_state) from [<c0182c1c>] (cpu_startup_entry+0x1c8/0x3f0)
> > [<c0182c1c>] (cpu_startup_entry) from [<c0b00c20>] (start_kernel+0x354/0x3cc)
> > 
> > ------------------------------------------------------------------------
> > 
> > [<c010f55c>] (unwind_backtrace) from [<c010b64c>] (show_stack+0x10/0x14)
> > [<c010b64c>] (show_stack) from [<c047ac3c>] (dump_stack+0xa8/0xe0)
> > [<c047ac3c>] (dump_stack) from [<c012c340>] (_pwrdm_state_switch+0x188/0x32c)
> > [<c012c340>] (_pwrdm_state_switch) from [<c012c4f0>] (_pwrdm_post_transition_cb+0xc/0x14)
> > [<c012c4f0>] (_pwrdm_post_transition_cb) from [<c012ba74>] (pwrdm_for_each+0x30/0x5c)
> > [<c012ba74>] (pwrdm_for_each) from [<c012c72c>] (pwrdm_post_transition+0x24/0x30)
> > [<c012c72c>] (pwrdm_post_transition) from [<c012548c>] (omap_sram_idle+0xfc/0x240)
> > [<c012548c>] (omap_sram_idle) from [<c0126934>] (omap3_enter_idle_bm+0xf0/0x1e8)
> > [<c0126934>] (omap3_enter_idle_bm) from [<c05fa038>] (cpuidle_enter_state+0x84/0x408)
> > [<c05fa038>] (cpuidle_enter_state) from [<c0182b90>] (cpu_startup_entry+0x1c8/0x3f0)
> > [<c0182b90>] (cpu_startup_entry) from [<c0b00c20>] (start_kernel+0x354/0x3cc)
> > 
> > ------------------------------------------------------------------------
> > 
> > These are caused by event tracing from the idle loop.  This commit
> > therefore adds the _rcuidle suffix to make RCU aware of this implicit
> > use of RCU by event tracing, thus preventing both splats.
> 
> Maybe also mention which patch in the RCU tree caused these?

Or, more accurately, the patch that removed the false negatives that
suppressed them.  These lockdep-RCU splats were bugs all along, just
not reported.

> I'm still seeing the following warnings with next with your patch applied.

Does the following patch help?

It is quite possible that there are quite a few more of these.  If this
is the case, then one way to make the kernel list more of them on a
given boot is to build with CONFIG_PROVE_RCU_REPEATEDLY=y.

							Thanx, Paul

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

commit 99cd56ad86d2d5fbe7ceab303b47f34e4156e5e7
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Tue Apr 26 10:42:25 2016 -0700

    rm: Use more _rcuidle tracepoints to allow use from idle
    
    Further testing with false negatives suppressed by commit 293e2421fe25
    ("rcu: Remove superfluous versions of rcu_read_lock_sched_held()")
    identified a few more unprotected uses of RCU from the idle loop.
    Because RCU actively ignores idle-loop code (for energy-efficiency
    reasons, among other things), using RCU from the idle loop can result
    in too-short grace periods, in turn resulting in arbitrary misbehavior.
    
    The resulting lockdep-RCU splats are as follows:
    
    ------------------------------------------------------------------------
    
    ===============================
    [ INFO: suspicious RCU usage. ]
    4.6.0-rc5-next-20160426+ #1112 Not tainted
    -------------------------------
    include/trace/events/ipi.h:35 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    RCU used illegally from idle CPU!
    rcu_scheduler_active = 1, debug_locks = 0
    RCU used illegally from extended quiescent state!
    no locks held by swapper/0/0.
    
    stack backtrace:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1112
    Hardware name: Generic OMAP4 (Flattened Device Tree)
    [<c0110308>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
    [<c010c3a8>] (show_stack) from [<c047fec8>] (dump_stack+0xb0/0xe4)
    [<c047fec8>] (dump_stack) from [<c010dcfc>] (smp_cross_call+0xbc/0x188)
    [<c010dcfc>] (smp_cross_call) from [<c01c9e28>] (generic_exec_single+0x9c/0x15c)
    [<c01c9e28>] (generic_exec_single) from [<c01ca0a0>] (smp_call_function_single_async+0 x38/0x9c)
    [<c01ca0a0>] (smp_call_function_single_async) from [<c0603728>] (cpuidle_coupled_poke_others+0x8c/0xa8)
    [<c0603728>] (cpuidle_coupled_poke_others) from [<c0603c10>] (cpuidle_enter_state_coupled+0x26c/0x390)
    [<c0603c10>] (cpuidle_enter_state_coupled) from [<c0183c74>] (cpu_startup_entry+0x198/0x3a0)
    [<c0183c74>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
    [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)
    
    ------------------------------------------------------------------------
    
    Warning from omap3
    ===============================
    [ INFO: suspicious RCU usage. ]
    4.6.0-rc5-next-20160426+ #1112 Not tainted
    -------------------------------
    include/trace/events/rpm.h:63 suspicious rcu_dereference_check() usage!
    
    other info that might help us debug this:
    
    RCU used illegally from idle CPU!
    rcu_scheduler_active = 1, debug_locks = 0
    RCU used illegally from extended quiescent state!
    1 lock held by swapper/0/0:
     #0:  (&(&dev->power.lock)->rlock){-.-...}, at: [<c052ee24>] __pm_runtime_suspend+0x54/0x84
    
    stack backtrace:
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1112
    Hardware name: Generic OMAP36xx (Flattened Device Tree)
    [<c0110308>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
    [<c010c3a8>] (show_stack) from [<c047fec8>] (dump_stack+0xb0/0xe4)
    [<c047fec8>] (dump_stack) from [<c052d7b4>] (rpm_suspend+0x604/0x7e4)
    [<c052d7b4>] (rpm_suspend) from [<c052ee34>] (__pm_runtime_suspend+0x64/0x84)
    [<c052ee34>] (__pm_runtime_suspend) from [<c04bf3bc>] (omap2_gpio_prepare_for_idle+0x5c/0x70)
    [<c04bf3bc>] (omap2_gpio_prepare_for_idle) from [<c01255e8>] (omap_sram_idle+0x140/0x244)
    [<c01255e8>] (omap_sram_idle) from [<c0126b48>] (omap3_enter_idle_bm+0xfc/0x1ec)
    [<c0126b48>] (omap3_enter_idle_bm) from [<c0601db8>] (cpuidle_enter_state+0x80/0x3d4)
    [<c0601db8>] (cpuidle_enter_state) from [<c0183c74>] (cpu_startup_entry+0x198/0x3a0)
    [<c0183c74>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
    [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)
    
    ------------------------------------------------------------------------
    
    Reported-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: <linux-omap@vger.kernel.org>
    Cc: <linux-arm-kernel@lists.infradead.org>

diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index baee70267f29..7afe48ae5d76 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -486,7 +486,7 @@ static const char *ipi_types[NR_IPI] __tracepoint_string = {
 
 static void smp_cross_call(const struct cpumask *target, unsigned int ipinr)
 {
-	trace_ipi_raise(target, ipi_types[ipinr]);
+	trace_ipi_raise_rcuidle(target, ipi_types[ipinr]);
 	__smp_cross_call(target, ipinr);
 }
 
diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
index 4c7055009bd6..d9358c202763 100644
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -419,7 +419,7 @@ static int rpm_suspend(struct device *dev, int rpmflags)
 	struct device *parent = NULL;
 	int retval;
 
-	trace_rpm_suspend(dev, rpmflags);
+	trace_rpm_suspend_rcuidle(dev, rpmflags);
 
  repeat:
 	retval = rpm_check_suspend_allowed(dev);

[toc] | [prev] | [next] | [standalone]


#1387814 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromTony Lindgren <tony@atomide.com>
Date2016-04-26 20:30 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsfUf-3TD-49@gated-at.bofh.it>
In reply to#1387775
* Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 10:53]:
> Does the following patch help?

It just changes the output.. See below.

> It is quite possible that there are quite a few more of these.  If this
> is the case, then one way to make the kernel list more of them on a
> given boot is to build with CONFIG_PROVE_RCU_REPEATEDLY=y.

OK

Regards,

Tony

8< ------------------
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000


RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
no locks held by swapper/1/0.

stack backtrace:
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.6.0-rc5-next-20160426+ #1113
Hardware name: Generic OMAP4 (Flattened Device Tree)
[<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
[<c010c3a8>] (show_stack) from [<c047ff88>] (dump_stack+0xb0/0xe4)
[<c047ff88>] (dump_stack) from [<c012c014>] (pwrdm_set_next_pwrst+0x100/0x1d4)
[<c012c014>] (pwrdm_set_next_pwrst) from [<c0126120>] (omap4_enter_lowpower+0xc8/0x230)
[<c0126120>] (omap4_enter_lowpower) from [<c0126c24>] (omap_enter_idle_coupled+0x6c/0x254)
[<c0126c24>] (omap_enter_idle_coupled) from [<c0601dfc>] (cpuidle_enter_state+0x80/0x3d4)
[<c0601dfc>] (cpuidle_enter_state) from [<c0603d30>] (cpuidle_enter_state_coupled+0x348/0x390)
[<c0603d30>] (cpuidle_enter_state_coupled) from [<c0183d34>] (cpu_startup_entry+0x198/0x3a0)
[<c0183d34>] (cpu_startup_entry) from [<8010162c>] (0x8010162c)
hw-breakpoint: Failed to enable monitor mode on CPU 0.

[toc] | [prev] | [next] | [standalone]


#1387916 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 21:10 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsgwW-4xy-13@gated-at.bofh.it>
In reply to#1387814
On Tue, Apr 26, 2016 at 11:29:39AM -0700, Tony Lindgren wrote:
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 10:53]:
> > Does the following patch help?
> 
> It just changes the output.. See below.

Ah -- you need both patches.

These are on -rcu at:

501889db6fee (arm: Use _rcuidle tracepoint to allow use from idle)
99cd56ad86d2 (rm: Use more _rcuidle tracepoints to allow use from idle)

And -rcu may be found at:

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

							Thanx, Paul

> > It is quite possible that there are quite a few more of these.  If this
> > is the case, then one way to make the kernel list more of them on a
> > given boot is to build with CONFIG_PROVE_RCU_REPEATEDLY=y.
> 
> OK
> 
> Regards,
> 
> Tony
> 
> 8< ------------------
> CPU: Testing write buffer coherency: ok
> CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
> 
> 
> RCU used illegally from idle CPU!
> rcu_scheduler_active = 1, debug_locks = 0
> RCU used illegally from extended quiescent state!
> no locks held by swapper/1/0.
> 
> stack backtrace:
> CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.6.0-rc5-next-20160426+ #1113
> Hardware name: Generic OMAP4 (Flattened Device Tree)
> [<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
> [<c010c3a8>] (show_stack) from [<c047ff88>] (dump_stack+0xb0/0xe4)
> [<c047ff88>] (dump_stack) from [<c012c014>] (pwrdm_set_next_pwrst+0x100/0x1d4)
> [<c012c014>] (pwrdm_set_next_pwrst) from [<c0126120>] (omap4_enter_lowpower+0xc8/0x230)
> [<c0126120>] (omap4_enter_lowpower) from [<c0126c24>] (omap_enter_idle_coupled+0x6c/0x254)
> [<c0126c24>] (omap_enter_idle_coupled) from [<c0601dfc>] (cpuidle_enter_state+0x80/0x3d4)
> [<c0601dfc>] (cpuidle_enter_state) from [<c0603d30>] (cpuidle_enter_state_coupled+0x348/0x390)
> [<c0603d30>] (cpuidle_enter_state_coupled) from [<c0183d34>] (cpu_startup_entry+0x198/0x3a0)
> [<c0183d34>] (cpu_startup_entry) from [<8010162c>] (0x8010162c)
> hw-breakpoint: Failed to enable monitor mode on CPU 0.
> 

[toc] | [prev] | [next] | [standalone]


#1387959 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromSteven Rostedt <rostedt@goodmis.org>
Date2016-04-26 21:50 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsh9E-4Uo-23@gated-at.bofh.it>
In reply to#1387916
On Tue, 26 Apr 2016 12:39:50 -0700
Tony Lindgren <tony@atomide.com> wrote:


> With these omap4 is now OK. But omap3 produces yet another warning,
> See below :)
> 
> Regards,
> 
> Tony
> 
> 8< ------------------
> ===============================
> [ INFO: suspicious RCU usage. ]
> 4.6.0-rc5-next-20160426+ #1114 Not tainted
> -------------------------------
> include/trace/events/clk.h:59 suspicious rcu_dereference_check() usage!
> 
> other info that might help us debug this:
> 
> 
> RCU used illegally from idle CPU!
> rcu_scheduler_active = 1, debug_locks = 0
> RCU used illegally from extended quiescent state!
> 2 locks held by swapper/0/0:
>  #0:  (&oh->hwmod_key#30){......}, at: [<c0121b40>] omap_hwmod_idle+0x18/0x44
>  #1:  (enable_lock){......}, at: [<c0630998>] clk_enable_lock+0x18/0x124
> 
> stack backtrace:
> CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1114
> Hardware name: Generic OMAP36xx (Flattened Device Tree)
> [<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
> [<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
> [<c047fd68>] (dump_stack) from [<c0631618>] (clk_core_disable+0x17c/0x348)
> [<c0631618>] (clk_core_disable) from [<c0632774>] (clk_disable+0x24/0x30)
> [<c0632774>] (clk_disable) from [<c0120590>] (_disable_clocks+0x18/0x7c)
> [<c0120590>] (_disable_clocks) from [<c0121680>] (_idle+0x12c/0x230)
> [<c0121680>] (_idle) from [<c0121b4c>] (omap_hwmod_idle+0x24/0x44)
> [<c0121b4c>] (omap_hwmod_idle) from [<c0122c24>] (omap_device_idle+0x3c/0x90)
> [<c0122c24>] (omap_device_idle) from [<c052cc00>] (__rpm_callback+0x2c/0x60)
> [<c052cc00>] (__rpm_callback) from [<c052cc54>] (rpm_callback+0x20/0x80)
> [<c052cc54>] (rpm_callback) from [<c052d150>] (rpm_suspend+0x100/0x768)
> [<c052d150>] (rpm_suspend) from [<c052ec58>] (__pm_runtime_suspend+0x64/0x84)
> [<c052ec58>] (__pm_runtime_suspend) from [<c04bf25c>] (omap2_gpio_prepare_for_idle+0x5
> c/0x70)
> [<c04bf25c>] (omap2_gpio_prepare_for_idle) from [<c0125568>] (omap_sram_idle+0x140/0x2
> 44)
> [<c0125568>] (omap_sram_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
> [<c01269dc>] (omap3_enter_idle_bm) from [<c0601bdc>] (cpuidle_enter_state+0x80/0x3d4)
> [<c0601bdc>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
> [<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
> [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)

*Whack* *Whack* *Whack*!!!

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index fb74dc1f7520..4fa43c02d682 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
 	if (--core->enable_count > 0)
 		return;
 
-	trace_clk_disable(core);
+	trace_clk_disable_rcuidle(core);
 
 	if (core->ops->disable)
 		core->ops->disable(core->hw);
 
-	trace_clk_disable_complete(core);
+	trace_clk_disable_complete_rcuidle(core);
 
 	clk_core_disable(core->parent);
 }

[toc] | [prev] | [next] | [standalone]


#1387979 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 22:00 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rshjk-4Z5-5@gated-at.bofh.it>
In reply to#1387959
On Tue, Apr 26, 2016 at 03:44:14PM -0400, Steven Rostedt wrote:
> On Tue, 26 Apr 2016 12:39:50 -0700
> Tony Lindgren <tony@atomide.com> wrote:
> 
> 
> > With these omap4 is now OK. But omap3 produces yet another warning,
> > See below :)
> > 
> > Regards,
> > 
> > Tony
> > 
> > 8< ------------------
> > ===============================
> > [ INFO: suspicious RCU usage. ]
> > 4.6.0-rc5-next-20160426+ #1114 Not tainted
> > -------------------------------
> > include/trace/events/clk.h:59 suspicious rcu_dereference_check() usage!
> > 
> > other info that might help us debug this:
> > 
> > 
> > RCU used illegally from idle CPU!
> > rcu_scheduler_active = 1, debug_locks = 0
> > RCU used illegally from extended quiescent state!
> > 2 locks held by swapper/0/0:
> >  #0:  (&oh->hwmod_key#30){......}, at: [<c0121b40>] omap_hwmod_idle+0x18/0x44
> >  #1:  (enable_lock){......}, at: [<c0630998>] clk_enable_lock+0x18/0x124
> > 
> > stack backtrace:
> > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1114
> > Hardware name: Generic OMAP36xx (Flattened Device Tree)
> > [<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
> > [<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
> > [<c047fd68>] (dump_stack) from [<c0631618>] (clk_core_disable+0x17c/0x348)
> > [<c0631618>] (clk_core_disable) from [<c0632774>] (clk_disable+0x24/0x30)
> > [<c0632774>] (clk_disable) from [<c0120590>] (_disable_clocks+0x18/0x7c)
> > [<c0120590>] (_disable_clocks) from [<c0121680>] (_idle+0x12c/0x230)
> > [<c0121680>] (_idle) from [<c0121b4c>] (omap_hwmod_idle+0x24/0x44)
> > [<c0121b4c>] (omap_hwmod_idle) from [<c0122c24>] (omap_device_idle+0x3c/0x90)
> > [<c0122c24>] (omap_device_idle) from [<c052cc00>] (__rpm_callback+0x2c/0x60)
> > [<c052cc00>] (__rpm_callback) from [<c052cc54>] (rpm_callback+0x20/0x80)
> > [<c052cc54>] (rpm_callback) from [<c052d150>] (rpm_suspend+0x100/0x768)
> > [<c052d150>] (rpm_suspend) from [<c052ec58>] (__pm_runtime_suspend+0x64/0x84)
> > [<c052ec58>] (__pm_runtime_suspend) from [<c04bf25c>] (omap2_gpio_prepare_for_idle+0x5
> > c/0x70)
> > [<c04bf25c>] (omap2_gpio_prepare_for_idle) from [<c0125568>] (omap_sram_idle+0x140/0x2
> > 44)
> > [<c0125568>] (omap_sram_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
> > [<c01269dc>] (omap3_enter_idle_bm) from [<c0601bdc>] (cpuidle_enter_state+0x80/0x3d4)
> > [<c0601bdc>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
> > [<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
> > [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)
> 
> *Whack* *Whack* *Whack*!!!
> 
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

Or use Steven's identical patch, your choice.  ;-)

							Thanx, Paul

> ---
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index fb74dc1f7520..4fa43c02d682 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
>  	if (--core->enable_count > 0)
>  		return;
> 
> -	trace_clk_disable(core);
> +	trace_clk_disable_rcuidle(core);
> 
>  	if (core->ops->disable)
>  		core->ops->disable(core->hw);
> 
> -	trace_clk_disable_complete(core);
> +	trace_clk_disable_complete_rcuidle(core);
> 
>  	clk_core_disable(core->parent);
>  }
> 

[toc] | [prev] | [next] | [standalone]


#1387986 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromSteven Rostedt <rostedt@goodmis.org>
Date2016-04-26 22:00 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rshjl-4Z5-27@gated-at.bofh.it>
In reply to#1387979
On Tue, 26 Apr 2016 12:51:21 -0700
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:

> On Tue, Apr 26, 2016 at 03:44:14PM -0400, Steven Rostedt wrote:
> > On Tue, 26 Apr 2016 12:39:50 -0700
> > Tony Lindgren <tony@atomide.com> wrote:
> > 
> >   
> > > With these omap4 is now OK. But omap3 produces yet another warning,
> > > See below :)
> > > 
> > > Regards,
> > > 
> > > Tony
> > > 
> > > 8< ------------------
> > > ===============================
> > > [ INFO: suspicious RCU usage. ]
> > > 4.6.0-rc5-next-20160426+ #1114 Not tainted
> > > -------------------------------
> > > include/trace/events/clk.h:59 suspicious rcu_dereference_check() usage!
> > > 
> > > other info that might help us debug this:
> > > 
> > > 
> > > RCU used illegally from idle CPU!
> > > rcu_scheduler_active = 1, debug_locks = 0
> > > RCU used illegally from extended quiescent state!
> > > 2 locks held by swapper/0/0:
> > >  #0:  (&oh->hwmod_key#30){......}, at: [<c0121b40>] omap_hwmod_idle+0x18/0x44
> > >  #1:  (enable_lock){......}, at: [<c0630998>] clk_enable_lock+0x18/0x124
> > > 
> > > stack backtrace:
> > > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1114
> > > Hardware name: Generic OMAP36xx (Flattened Device Tree)
> > > [<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
> > > [<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
> > > [<c047fd68>] (dump_stack) from [<c0631618>] (clk_core_disable+0x17c/0x348)
> > > [<c0631618>] (clk_core_disable) from [<c0632774>] (clk_disable+0x24/0x30)
> > > [<c0632774>] (clk_disable) from [<c0120590>] (_disable_clocks+0x18/0x7c)
> > > [<c0120590>] (_disable_clocks) from [<c0121680>] (_idle+0x12c/0x230)
> > > [<c0121680>] (_idle) from [<c0121b4c>] (omap_hwmod_idle+0x24/0x44)
> > > [<c0121b4c>] (omap_hwmod_idle) from [<c0122c24>] (omap_device_idle+0x3c/0x90)
> > > [<c0122c24>] (omap_device_idle) from [<c052cc00>] (__rpm_callback+0x2c/0x60)
> > > [<c052cc00>] (__rpm_callback) from [<c052cc54>] (rpm_callback+0x20/0x80)
> > > [<c052cc54>] (rpm_callback) from [<c052d150>] (rpm_suspend+0x100/0x768)
> > > [<c052d150>] (rpm_suspend) from [<c052ec58>] (__pm_runtime_suspend+0x64/0x84)
> > > [<c052ec58>] (__pm_runtime_suspend) from [<c04bf25c>] (omap2_gpio_prepare_for_idle+0x5
> > > c/0x70)
> > > [<c04bf25c>] (omap2_gpio_prepare_for_idle) from [<c0125568>] (omap_sram_idle+0x140/0x2
> > > 44)
> > > [<c0125568>] (omap_sram_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
> > > [<c01269dc>] (omap3_enter_idle_bm) from [<c0601bdc>] (cpuidle_enter_state+0x80/0x3d4)
> > > [<c0601bdc>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
> > > [<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
> > > [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)  
> > 
> > *Whack* *Whack* *Whack*!!!
> > 
> > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>  
> 
> Or use Steven's identical patch, your choice.  ;-)

I don't care which you use. But if you use mine, you must keep the
*Whack* *Whack* *Whack*!!! in the change log.

-- Steve

[toc] | [prev] | [next] | [standalone]


#1387993 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 22:10 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsht0-5r9-29@gated-at.bofh.it>
In reply to#1387986
On Tue, Apr 26, 2016 at 03:52:29PM -0400, Steven Rostedt wrote:
> On Tue, 26 Apr 2016 12:51:21 -0700
> "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:
> 
> > On Tue, Apr 26, 2016 at 03:44:14PM -0400, Steven Rostedt wrote:
> > > On Tue, 26 Apr 2016 12:39:50 -0700
> > > Tony Lindgren <tony@atomide.com> wrote:
> > > 
> > >   
> > > > With these omap4 is now OK. But omap3 produces yet another warning,
> > > > See below :)
> > > > 
> > > > Regards,
> > > > 
> > > > Tony
> > > > 
> > > > 8< ------------------
> > > > ===============================
> > > > [ INFO: suspicious RCU usage. ]
> > > > 4.6.0-rc5-next-20160426+ #1114 Not tainted
> > > > -------------------------------
> > > > include/trace/events/clk.h:59 suspicious rcu_dereference_check() usage!
> > > > 
> > > > other info that might help us debug this:
> > > > 
> > > > 
> > > > RCU used illegally from idle CPU!
> > > > rcu_scheduler_active = 1, debug_locks = 0
> > > > RCU used illegally from extended quiescent state!
> > > > 2 locks held by swapper/0/0:
> > > >  #0:  (&oh->hwmod_key#30){......}, at: [<c0121b40>] omap_hwmod_idle+0x18/0x44
> > > >  #1:  (enable_lock){......}, at: [<c0630998>] clk_enable_lock+0x18/0x124
> > > > 
> > > > stack backtrace:
> > > > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1114
> > > > Hardware name: Generic OMAP36xx (Flattened Device Tree)
> > > > [<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
> > > > [<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
> > > > [<c047fd68>] (dump_stack) from [<c0631618>] (clk_core_disable+0x17c/0x348)
> > > > [<c0631618>] (clk_core_disable) from [<c0632774>] (clk_disable+0x24/0x30)
> > > > [<c0632774>] (clk_disable) from [<c0120590>] (_disable_clocks+0x18/0x7c)
> > > > [<c0120590>] (_disable_clocks) from [<c0121680>] (_idle+0x12c/0x230)
> > > > [<c0121680>] (_idle) from [<c0121b4c>] (omap_hwmod_idle+0x24/0x44)
> > > > [<c0121b4c>] (omap_hwmod_idle) from [<c0122c24>] (omap_device_idle+0x3c/0x90)
> > > > [<c0122c24>] (omap_device_idle) from [<c052cc00>] (__rpm_callback+0x2c/0x60)
> > > > [<c052cc00>] (__rpm_callback) from [<c052cc54>] (rpm_callback+0x20/0x80)
> > > > [<c052cc54>] (rpm_callback) from [<c052d150>] (rpm_suspend+0x100/0x768)
> > > > [<c052d150>] (rpm_suspend) from [<c052ec58>] (__pm_runtime_suspend+0x64/0x84)
> > > > [<c052ec58>] (__pm_runtime_suspend) from [<c04bf25c>] (omap2_gpio_prepare_for_idle+0x5
> > > > c/0x70)
> > > > [<c04bf25c>] (omap2_gpio_prepare_for_idle) from [<c0125568>] (omap_sram_idle+0x140/0x2
> > > > 44)
> > > > [<c0125568>] (omap_sram_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
> > > > [<c01269dc>] (omap3_enter_idle_bm) from [<c0601bdc>] (cpuidle_enter_state+0x80/0x3d4)
> > > > [<c0601bdc>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
> > > > [<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
> > > > [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)  
> > > 
> > > *Whack* *Whack* *Whack*!!!
> > > 
> > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>  
> > 
> > Or use Steven's identical patch, your choice.  ;-)
> 
> I don't care which you use. But if you use mine, you must keep the
> *Whack* *Whack* *Whack*!!! in the change log.

I included it in the last one.  ;-)

							Thanx, Paul

[toc] | [prev] | [next] | [standalone]


#1387984 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromTony Lindgren <tony@atomide.com>
Date2016-04-26 22:00 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rshjl-4Z5-25@gated-at.bofh.it>
In reply to#1387959
* Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:
> *Whack* *Whack* *Whack*!!!
> 
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> ---
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index fb74dc1f7520..4fa43c02d682 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
>  	if (--core->enable_count > 0)
>  		return;
>  
> -	trace_clk_disable(core);
> +	trace_clk_disable_rcuidle(core);
>  
>  	if (core->ops->disable)
>  		core->ops->disable(core->hw);
>  
> -	trace_clk_disable_complete(core);
> +	trace_clk_disable_complete_rcuidle(core);
>  
>  	clk_core_disable(core->parent);
>  }

Now the mole shows up here!

===============================
[ INFO: suspicious RCU usage. ]
4.6.0-rc5-next-20160426+ #1116 Not tainted
-------------------------------
include/trace/events/rpm.h:95 suspicious rcu_dereference_check() usage!

other info that might help us debug this:


RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
1 lock held by swapper/0/0:
 #0:  (&(&dev->power.lock)->rlock){-.-...}, at: [<c052cc2c>] __rpm_callback+0x58/0x60

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1116
Hardware name: Generic OMAP36xx (Flattened Device Tree)
[<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
[<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
[<c047fd68>] (dump_stack) from [<c052d5d0>] (rpm_suspend+0x580/0x768)
[<c052d5d0>] (rpm_suspend) from [<c052ec58>] (__pm_runtime_suspend+0x64/0x84)
[<c052ec58>] (__pm_runtime_suspend) from [<c04bf25c>] (omap2_gpio_prepare_for_idle+0x5c/0x70)
[<c04bf25c>] (omap2_gpio_prepare_for_idle) from [<c0125568>] (omap_sram_idle+0x140/0x244)
[<c0125568>] (omap_sram_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
[<c01269dc>] (omap3_enter_idle_bm) from [<c0601bdc>] (cpuidle_enter_state+0x80/0x3d4)
[<c0601bdc>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
[<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
[<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)

[toc] | [prev] | [next] | [standalone]


#1387994 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 22:10 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsht0-5r9-31@gated-at.bofh.it>
In reply to#1387984
On Tue, Apr 26, 2016 at 12:51:59PM -0700, Tony Lindgren wrote:
> * Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:
> > *Whack* *Whack* *Whack*!!!
> > 
> > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > ---
> > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > index fb74dc1f7520..4fa43c02d682 100644
> > --- a/drivers/clk/clk.c
> > +++ b/drivers/clk/clk.c
> > @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
> >  	if (--core->enable_count > 0)
> >  		return;
> >  
> > -	trace_clk_disable(core);
> > +	trace_clk_disable_rcuidle(core);
> >  
> >  	if (core->ops->disable)
> >  		core->ops->disable(core->hw);
> >  
> > -	trace_clk_disable_complete(core);
> > +	trace_clk_disable_complete_rcuidle(core);
> >  
> >  	clk_core_disable(core->parent);
> >  }
> 
> Now the mole shows up here!

And the patch shows up here!

							Thanx, Paul

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

commit d824fb6beb6e23ade51806e11a882528dc15ae98
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Tue Apr 26 13:03:51 2016 -0700

    arm: Whack another event-trace-from-idle mole
    
    This commit appends a few _rcuidle suffixes to fix the following
    RCU-used-from-idle bug:
    
    > ===============================
    > [ INFO: suspicious RCU usage. ]
    > 4.6.0-rc5-next-20160426+ #1116 Not tainted
    > -------------------------------
    > include/trace/events/rpm.h:95 suspicious rcu_dereference_check() usage!
    >
    > other info that might help us debug this:
    >
    >
    > RCU used illegally from idle CPU!
    > rcu_scheduler_active = 1, debug_locks = 0
    > RCU used illegally from extended quiescent state!
    > 1 lock held by swapper/0/0:
    >  #0:  (&(&dev->power.lock)->rlock){-.-...}, at: [<c052cc2c>] __rpm_callback+0x58/0x60
    >
    > stack backtrace:
    > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1116
    > Hardware name: Generic OMAP36xx (Flattened Device Tree)
    > [<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
    > [<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
    > [<c047fd68>] (dump_stack) from [<c052d5d0>] (rpm_suspend+0x580/0x768)
    > [<c052d5d0>] (rpm_suspend) from [<c052ec58>] (__pm_runtime_suspend+0x64/0x84)
    > [<c052ec58>] (__pm_runtime_suspend) from [<c04bf25c>] (omap2_gpio_prepare_for_idle+0x5c/0x70)
    > [<c04bf25c>] (omap2_gpio_prepare_for_idle) from [<c0125568>] (omap_sram_idle+0x140/0x244)
    > [<c0125568>] (omap_sram_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
    > [<c01269dc>] (omap3_enter_idle_bm) from [<c0601bdc>] (cpuidle_enter_state+0x80/0x3d4)
    > [<c0601bdc>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
    > [<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
    > [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)
    
    In the immortal words of Steven Rostedt, "*Whack* *Whack* *Whack*!!!"
    
    Reported-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: <linux-omap@vger.kernel.org>
    Cc: <linux-arm-kernel@lists.infradead.org>

diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
index d9358c202763..af4c38d41aff 100644
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -301,7 +301,7 @@ static int rpm_idle(struct device *dev, int rpmflags)
 	int (*callback)(struct device *);
 	int retval;
 
-	trace_rpm_idle(dev, rpmflags);
+	trace_rpm_idle_rcuidle(dev, rpmflags);
 	retval = rpm_check_suspend_allowed(dev);
 	if (retval < 0)
 		;	/* Conditions are wrong. */
@@ -337,7 +337,7 @@ static int rpm_idle(struct device *dev, int rpmflags)
 			dev->power.request_pending = true;
 			queue_work(pm_wq, &dev->power.work);
 		}
-		trace_rpm_return_int(dev, _THIS_IP_, 0);
+		trace_rpm_return_int_rcuidle(dev, _THIS_IP_, 0);
 		return 0;
 	}
 
@@ -352,7 +352,7 @@ static int rpm_idle(struct device *dev, int rpmflags)
 	wake_up_all(&dev->power.wait_queue);
 
  out:
-	trace_rpm_return_int(dev, _THIS_IP_, retval);
+	trace_rpm_return_int_rcuidle(dev, _THIS_IP_, retval);
 	return retval ? retval : rpm_suspend(dev, rpmflags | RPM_AUTO);
 }
 

[toc] | [prev] | [next] | [standalone]


#1387997 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromSteven Rostedt <rostedt@goodmis.org>
Date2016-04-26 22:20 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rshCG-5w7-5@gated-at.bofh.it>
In reply to#1387994
On Tue, 26 Apr 2016 13:06:13 -0700
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:

> On Tue, Apr 26, 2016 at 12:51:59PM -0700, Tony Lindgren wrote:
> > * Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:  
> > > *Whack* *Whack* *Whack*!!!
> > > 
> > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > > ---
> > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > > index fb74dc1f7520..4fa43c02d682 100644
> > > --- a/drivers/clk/clk.c
> > > +++ b/drivers/clk/clk.c
> > > @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
> > >  	if (--core->enable_count > 0)
> > >  		return;
> > >  
> > > -	trace_clk_disable(core);
> > > +	trace_clk_disable_rcuidle(core);
> > >  
> > >  	if (core->ops->disable)
> > >  		core->ops->disable(core->hw);
> > >  
> > > -	trace_clk_disable_complete(core);
> > > +	trace_clk_disable_complete_rcuidle(core);
> > >  
> > >  	clk_core_disable(core->parent);
> > >  }  
> > 
> > Now the mole shows up here!  
> 
> And the patch shows up here!
> 
> 							Thanx, Paul
> 
> ------------------------------------------------------------------------
> 
> commit d824fb6beb6e23ade51806e11a882528dc15ae98
> Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Date:   Tue Apr 26 13:03:51 2016 -0700
> 
>     arm: Whack another event-trace-from-idle mole
>     
>     This commit appends a few _rcuidle suffixes to fix the following
>     RCU-used-from-idle bug:
>     
>     > ===============================
>     > [ INFO: suspicious RCU usage. ]
>     > 4.6.0-rc5-next-20160426+ #1116 Not tainted
>     > -------------------------------
>     > include/trace/events/rpm.h:95 suspicious rcu_dereference_check() usage!
>     >
>     > other info that might help us debug this:
>     >
>     >
>     > RCU used illegally from idle CPU!
>     > rcu_scheduler_active = 1, debug_locks = 0
>     > RCU used illegally from extended quiescent state!
>     > 1 lock held by swapper/0/0:
>     >  #0:  (&(&dev->power.lock)->rlock){-.-...}, at: [<c052cc2c>] __rpm_callback+0x58/0x60
>     >
>     > stack backtrace:
>     > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1116
>     > Hardware name: Generic OMAP36xx (Flattened Device Tree)
>     > [<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
>     > [<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
>     > [<c047fd68>] (dump_stack) from [<c052d5d0>] (rpm_suspend+0x580/0x768)
>     > [<c052d5d0>] (rpm_suspend) from [<c052ec58>] (__pm_runtime_suspend+0x64/0x84)
>     > [<c052ec58>] (__pm_runtime_suspend) from [<c04bf25c>] (omap2_gpio_prepare_for_idle+0x5c/0x70)
>     > [<c04bf25c>] (omap2_gpio_prepare_for_idle) from [<c0125568>] (omap_sram_idle+0x140/0x244)
>     > [<c0125568>] (omap_sram_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
>     > [<c01269dc>] (omap3_enter_idle_bm) from [<c0601bdc>] (cpuidle_enter_state+0x80/0x3d4)
>     > [<c0601bdc>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
>     > [<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
>     > [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)  
>     
>     In the immortal words of Steven Rostedt, "*Whack* *Whack* *Whack*!!!"

WhACKED-by: Steven Rostedt <rostedt@goodmis.org>

-- Steve

[toc] | [prev] | [next] | [standalone]


#1388032 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 22:40 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rshW2-5I2-7@gated-at.bofh.it>
In reply to#1387997
On Tue, Apr 26, 2016 at 04:16:21PM -0400, Steven Rostedt wrote:
> On Tue, 26 Apr 2016 13:06:13 -0700
> "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:
> 
> > On Tue, Apr 26, 2016 at 12:51:59PM -0700, Tony Lindgren wrote:
> > > * Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:  
> > > > *Whack* *Whack* *Whack*!!!
> > > > 
> > > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > > > ---
> > > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > > > index fb74dc1f7520..4fa43c02d682 100644
> > > > --- a/drivers/clk/clk.c
> > > > +++ b/drivers/clk/clk.c
> > > > @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
> > > >  	if (--core->enable_count > 0)
> > > >  		return;
> > > >  
> > > > -	trace_clk_disable(core);
> > > > +	trace_clk_disable_rcuidle(core);
> > > >  
> > > >  	if (core->ops->disable)
> > > >  		core->ops->disable(core->hw);
> > > >  
> > > > -	trace_clk_disable_complete(core);
> > > > +	trace_clk_disable_complete_rcuidle(core);
> > > >  
> > > >  	clk_core_disable(core->parent);
> > > >  }  
> > > 
> > > Now the mole shows up here!  
> > 
> > And the patch shows up here!
> > 
> > 							Thanx, Paul
> > 
> > ------------------------------------------------------------------------
> > 
> > commit d824fb6beb6e23ade51806e11a882528dc15ae98
> > Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > Date:   Tue Apr 26 13:03:51 2016 -0700
> > 
> >     arm: Whack another event-trace-from-idle mole
> >     
> >     This commit appends a few _rcuidle suffixes to fix the following
> >     RCU-used-from-idle bug:
> >     
> >     > ===============================
> >     > [ INFO: suspicious RCU usage. ]
> >     > 4.6.0-rc5-next-20160426+ #1116 Not tainted
> >     > -------------------------------
> >     > include/trace/events/rpm.h:95 suspicious rcu_dereference_check() usage!
> >     >
> >     > other info that might help us debug this:
> >     >
> >     >
> >     > RCU used illegally from idle CPU!
> >     > rcu_scheduler_active = 1, debug_locks = 0
> >     > RCU used illegally from extended quiescent state!
> >     > 1 lock held by swapper/0/0:
> >     >  #0:  (&(&dev->power.lock)->rlock){-.-...}, at: [<c052cc2c>] __rpm_callback+0x58/0x60
> >     >
> >     > stack backtrace:
> >     > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1116
> >     > Hardware name: Generic OMAP36xx (Flattened Device Tree)
> >     > [<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
> >     > [<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
> >     > [<c047fd68>] (dump_stack) from [<c052d5d0>] (rpm_suspend+0x580/0x768)
> >     > [<c052d5d0>] (rpm_suspend) from [<c052ec58>] (__pm_runtime_suspend+0x64/0x84)
> >     > [<c052ec58>] (__pm_runtime_suspend) from [<c04bf25c>] (omap2_gpio_prepare_for_idle+0x5c/0x70)
> >     > [<c04bf25c>] (omap2_gpio_prepare_for_idle) from [<c0125568>] (omap_sram_idle+0x140/0x244)
> >     > [<c0125568>] (omap_sram_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
> >     > [<c01269dc>] (omap3_enter_idle_bm) from [<c0601bdc>] (cpuidle_enter_state+0x80/0x3d4)
> >     > [<c0601bdc>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
> >     > [<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
> >     > [<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)  
> >     
> >     In the immortal words of Steven Rostedt, "*Whack* *Whack* *Whack*!!!"
> 
> WhACKED-by: Steven Rostedt <rostedt@goodmis.org>

I whacked in your WhACKED-by.

							Thanx, Paul

[toc] | [prev] | [next] | [standalone]


#1388001 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 22:20 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rshCG-5w7-17@gated-at.bofh.it>
In reply to#1387994
On Tue, Apr 26, 2016 at 01:06:13PM -0700, Paul E. McKenney wrote:
> On Tue, Apr 26, 2016 at 12:51:59PM -0700, Tony Lindgren wrote:
> > * Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:
> > > *Whack* *Whack* *Whack*!!!
> > > 
> > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > > ---
> > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > > index fb74dc1f7520..4fa43c02d682 100644
> > > --- a/drivers/clk/clk.c
> > > +++ b/drivers/clk/clk.c
> > > @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
> > >  	if (--core->enable_count > 0)
> > >  		return;
> > >  
> > > -	trace_clk_disable(core);
> > > +	trace_clk_disable_rcuidle(core);
> > >  
> > >  	if (core->ops->disable)
> > >  		core->ops->disable(core->hw);
> > >  
> > > -	trace_clk_disable_complete(core);
> > > +	trace_clk_disable_complete_rcuidle(core);
> > >  
> > >  	clk_core_disable(core->parent);
> > >  }
> > 
> > Now the mole shows up here!
> 
> And the patch shows up here!

And I bet you will need this one as well...

							Thanx, Paul

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

commit 95dc0699fbaebdb507e8222257ed3b50a13093bf
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Tue Apr 26 13:10:21 2016 -0700

    Merge with 718aeef4b4f2 (arm: Use more _rcuidle tracepoints to allow use from idle)
    
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
index af4c38d41aff..e4c2b8fdeff3 100644
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -549,7 +549,7 @@ static int rpm_suspend(struct device *dev, int rpmflags)
 	}
 
  out:
-	trace_rpm_return_int(dev, _THIS_IP_, retval);
+	trace_rpm_return_int_rcuidle(dev, _THIS_IP_, retval);
 
 	return retval;
 

[toc] | [prev] | [next] | [standalone]


#1388063 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromTony Lindgren <tony@atomide.com>
Date2016-04-26 22:40 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rshW6-5I2-83@gated-at.bofh.it>
In reply to#1388001
* Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 13:12]:
> On Tue, Apr 26, 2016 at 01:06:13PM -0700, Paul E. McKenney wrote:
> > On Tue, Apr 26, 2016 at 12:51:59PM -0700, Tony Lindgren wrote:
> > > * Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:
> > > > *Whack* *Whack* *Whack*!!!
> > > > 
> > > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > > > ---
> > > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > > > index fb74dc1f7520..4fa43c02d682 100644
> > > > --- a/drivers/clk/clk.c
> > > > +++ b/drivers/clk/clk.c
> > > > @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
> > > >  	if (--core->enable_count > 0)
> > > >  		return;
> > > >  
> > > > -	trace_clk_disable(core);
> > > > +	trace_clk_disable_rcuidle(core);
> > > >  
> > > >  	if (core->ops->disable)
> > > >  		core->ops->disable(core->hw);
> > > >  
> > > > -	trace_clk_disable_complete(core);
> > > > +	trace_clk_disable_complete_rcuidle(core);
> > > >  
> > > >  	clk_core_disable(core->parent);
> > > >  }
> > > 
> > > Now the mole shows up here!
> > 
> > And the patch shows up here!
> 
> And I bet you will need this one as well...

OK and now the mode is coming back after a short nap during idle:

===============================
[ INFO: suspicious RCU usage. ]
4.6.0-rc5-next-20160426+ #1122 Not tainted
-------------------------------
include/trace/events/rpm.h:69 suspicious rcu_dereference_check() usage!

other info that might help us debug this:


RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
1 lock held by swapper/0/0:
 #0:  (&(&dev->power.lock)->rlock){-.-...}, at: [<c052e3dc>] __pm_runtime_resume+0x3c/0x64

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1122
Hardware name: Generic OMAP36xx (Flattened Device Tree)
[<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
[<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
[<c047fd68>] (dump_stack) from [<c052e178>] (rpm_resume+0x5cc/0x7f4)
[<c052e178>] (rpm_resume) from [<c052e3ec>] (__pm_runtime_resume+0x4c/0x64)
[<c052e3ec>] (__pm_runtime_resume) from [<c04bf2c4>] (omap2_gpio_resume_after_idle+0x54/0x68)
[<c04bf2c4>] (omap2_gpio_resume_after_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
[<c01269dc>] (omap3_enter_idle_bm) from [<c060198c>] (cpuidle_enter_state+0x80/0x3d4)
[<c060198c>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
[<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
[<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)

[toc] | [prev] | [next] | [standalone]


#1388075 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromTony Lindgren <tony@atomide.com>
Date2016-04-26 22:50 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsi5I-5Mq-31@gated-at.bofh.it>
In reply to#1388063
* Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 13:42]:
> On Tue, Apr 26, 2016 at 01:25:39PM -0700, Tony Lindgren wrote:
> > * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 13:12]:
> > > On Tue, Apr 26, 2016 at 01:06:13PM -0700, Paul E. McKenney wrote:
> > > > On Tue, Apr 26, 2016 at 12:51:59PM -0700, Tony Lindgren wrote:
> > > > > * Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:
> > > > > > *Whack* *Whack* *Whack*!!!
> > > > > > 
> > > > > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > > > > > ---
> > > > > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > > > > > index fb74dc1f7520..4fa43c02d682 100644
> > > > > > --- a/drivers/clk/clk.c
> > > > > > +++ b/drivers/clk/clk.c
> > > > > > @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
> > > > > >  	if (--core->enable_count > 0)
> > > > > >  		return;
> > > > > >  
> > > > > > -	trace_clk_disable(core);
> > > > > > +	trace_clk_disable_rcuidle(core);
> > > > > >  
> > > > > >  	if (core->ops->disable)
> > > > > >  		core->ops->disable(core->hw);
> > > > > >  
> > > > > > -	trace_clk_disable_complete(core);
> > > > > > +	trace_clk_disable_complete_rcuidle(core);
> > > > > >  
> > > > > >  	clk_core_disable(core->parent);
> > > > > >  }
> > > > > 
> > > > > Now the mole shows up here!
> > > > 
> > > > And the patch shows up here!
> > > 
> > > And I bet you will need this one as well...
> > 
> > OK and now the mode is coming back after a short nap during idle:
> 
> Seems a bit unfair to whack it just after a short nap, but here goes!

This mode seems pretty hard headed :) Now clk_core_enable:

[ INFO: suspicious RCU usage. ]
4.6.0-rc5-next-20160426+ #1127 Not tainted
-------------------------------
include/trace/events/clk.h:45 suspicious rcu_dereference_check() usage!

other info that might help us debug this:


RCU used illegally from idle CPU!
rcu_scheduler_active = 1, debug_locks = 0
RCU used illegally from extended quiescent state!
2 locks held by swapper/0/0:
 #0:  (&oh->hwmod_key#30){......}, at: [<c0121afc>] omap_hwmod_enable+0x18/0x44
 #1:  (enable_lock){......}, at: [<c0630684>] clk_enable_lock+0x18/0x124

stack backtrace:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.6.0-rc5-next-20160426+ #1127
Hardware name: Generic OMAP36xx (Flattened Device Tree)
[<c0110290>] (unwind_backtrace) from [<c010c3a8>] (show_stack+0x10/0x14)
[<c010c3a8>] (show_stack) from [<c047fd68>] (dump_stack+0xb0/0xe4)
[<c047fd68>] (dump_stack) from [<c06315c0>] (clk_core_enable+0x1e0/0x36c)
[<c06315c0>] (clk_core_enable) from [<c0632298>] (clk_enable+0x1c/0x38)
[<c0632298>] (clk_enable) from [<c01204e0>] (_enable_clocks+0x18/0x7c)
[<c01204e0>] (_enable_clocks) from [<c012137c>] (_enable+0x114/0x2ec)
[<c012137c>] (_enable) from [<c0121b08>] (omap_hwmod_enable+0x24/0x44)
[<c0121b08>] (omap_hwmod_enable) from [<c0122ad0>] (omap_device_enable+0x3c/0x90)
[<c0122ad0>] (omap_device_enable) from [<c0122b34>] (_od_runtime_resume+0x10/0x38)
[<c0122b34>] (_od_runtime_resume) from [<c052cc00>] (__rpm_callback+0x2c/0x60)
[<c052cc00>] (__rpm_callback) from [<c052cc54>] (rpm_callback+0x20/0x80)
[<c052cc54>] (rpm_callback) from [<c052df7c>] (rpm_resume+0x3d0/0x6f0)
[<c052df7c>] (rpm_resume) from [<c052e2e8>] (__pm_runtime_resume+0x4c/0x64)
[<c052e2e8>] (__pm_runtime_resume) from [<c04bf2c4>] (omap2_gpio_resume_after_idle+0x54/0x68)
[<c04bf2c4>] (omap2_gpio_resume_after_idle) from [<c01269dc>] (omap3_enter_idle_bm+0xfc/0x1ec)
[<c01269dc>] (omap3_enter_idle_bm) from [<c0601888>] (cpuidle_enter_state+0x80/0x3d4)
[<c0601888>] (cpuidle_enter_state) from [<c0183b08>] (cpu_startup_entry+0x198/0x3a0)
[<c0183b08>] (cpu_startup_entry) from [<c0b00c0c>] (start_kernel+0x354/0x3c8)
[<c0b00c0c>] (start_kernel) from [<8000807c>] (0x8000807c)

[toc] | [prev] | [next] | [standalone]


#1388092 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromSteven Rostedt <rostedt@goodmis.org>
Date2016-04-26 23:00 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsifo-5Sr-11@gated-at.bofh.it>
In reply to#1388075
On Tue, 26 Apr 2016 13:46:15 -0700
Tony Lindgren <tony@atomide.com> wrote:


> [ INFO: suspicious RCU usage. ]
> 4.6.0-rc5-next-20160426+ #1127 Not tainted
> -------------------------------
> include/trace/events/clk.h:45 suspicious rcu_dereference_check() usage!
> 
> other info that might help us debug this:
> 
> 
> RCU used illegally from idle CPU!
> rcu_scheduler_active = 1, debug_locks = 0
> RCU used illegally from extended quiescent state!
> 2 locks held by swapper/0/0:
>  #0:  (&oh->hwmod_key#30){......}, at: [<c0121afc>] omap_hwmod_enable+0x18/0x44
>  #1:  (enable_lock){......}, at: [<c0630684>] clk_enable_lock+0x18/0x124
> 

Hah! I knew that mole would show up.

-- Steve

[toc] | [prev] | [next] | [standalone]


#1388096 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 23:10 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsip3-6eQ-5@gated-at.bofh.it>
In reply to#1388092
On Tue, Apr 26, 2016 at 04:52:17PM -0400, Steven Rostedt wrote:
> On Tue, 26 Apr 2016 13:46:15 -0700
> Tony Lindgren <tony@atomide.com> wrote:
> 
> 
> > [ INFO: suspicious RCU usage. ]
> > 4.6.0-rc5-next-20160426+ #1127 Not tainted
> > -------------------------------
> > include/trace/events/clk.h:45 suspicious rcu_dereference_check() usage!
> > 
> > other info that might help us debug this:
> > 
> > 
> > RCU used illegally from idle CPU!
> > rcu_scheduler_active = 1, debug_locks = 0
> > RCU used illegally from extended quiescent state!
> > 2 locks held by swapper/0/0:
> >  #0:  (&oh->hwmod_key#30){......}, at: [<c0121afc>] omap_hwmod_enable+0x18/0x44
> >  #1:  (enable_lock){......}, at: [<c0630684>] clk_enable_lock+0x18/0x124
> > 
> 
> Hah! I knew that mole would show up.

There do seem to be quite a few candidate moles, don't there?

							Thanx, Paul

[toc] | [prev] | [next] | [standalone]


#1388102 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

FromTony Lindgren <tony@atomide.com>
Date2016-04-26 23:20 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsiyJ-6iy-1@gated-at.bofh.it>
In reply to#1388075
* Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 14:08]:
> On Tue, Apr 26, 2016 at 01:46:15PM -0700, Tony Lindgren wrote:
> > * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 13:42]:
> > > On Tue, Apr 26, 2016 at 01:25:39PM -0700, Tony Lindgren wrote:
> > > > * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 13:12]:
> > > > > On Tue, Apr 26, 2016 at 01:06:13PM -0700, Paul E. McKenney wrote:
> > > > > > On Tue, Apr 26, 2016 at 12:51:59PM -0700, Tony Lindgren wrote:
> > > > > > > * Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:
> > > > > > > > *Whack* *Whack* *Whack*!!!
> > > > > > > > 
> > > > > > > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > > > > > > > ---
> > > > > > > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > > > > > > > index fb74dc1f7520..4fa43c02d682 100644
> > > > > > > > --- a/drivers/clk/clk.c
> > > > > > > > +++ b/drivers/clk/clk.c
> > > > > > > > @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
> > > > > > > >  	if (--core->enable_count > 0)
> > > > > > > >  		return;
> > > > > > > >  
> > > > > > > > -	trace_clk_disable(core);
> > > > > > > > +	trace_clk_disable_rcuidle(core);
> > > > > > > >  
> > > > > > > >  	if (core->ops->disable)
> > > > > > > >  		core->ops->disable(core->hw);
> > > > > > > >  
> > > > > > > > -	trace_clk_disable_complete(core);
> > > > > > > > +	trace_clk_disable_complete_rcuidle(core);
> > > > > > > >  
> > > > > > > >  	clk_core_disable(core->parent);
> > > > > > > >  }
> > > > > > > 
> > > > > > > Now the mole shows up here!
> > > > > > 
> > > > > > And the patch shows up here!
> > > > > 
> > > > > And I bet you will need this one as well...
> > > > 
> > > > OK and now the mode is coming back after a short nap during idle:
> > > 
> > > Seems a bit unfair to whack it just after a short nap, but here goes!
> > 
> > This mode seems pretty hard headed :) Now clk_core_enable:
> 
> Nah, just a lot of heads...

OK that does it for me. Thanks for all the mole related whacks,
please feel free to add:

Tested-by: Tony Lindgren <tony@atomide.com>

[toc] | [prev] | [next] | [standalone]


#1388113 — Re: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle

From"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date2016-04-26 23:30 +0200
SubjectRe: [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
Message-ID<rsiIp-6mH-5@gated-at.bofh.it>
In reply to#1388102
On Tue, Apr 26, 2016 at 02:12:59PM -0700, Tony Lindgren wrote:
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 14:08]:
> > On Tue, Apr 26, 2016 at 01:46:15PM -0700, Tony Lindgren wrote:
> > > * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 13:42]:
> > > > On Tue, Apr 26, 2016 at 01:25:39PM -0700, Tony Lindgren wrote:
> > > > > * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 13:12]:
> > > > > > On Tue, Apr 26, 2016 at 01:06:13PM -0700, Paul E. McKenney wrote:
> > > > > > > On Tue, Apr 26, 2016 at 12:51:59PM -0700, Tony Lindgren wrote:
> > > > > > > > * Steven Rostedt <rostedt@goodmis.org> [160426 12:45]:
> > > > > > > > > *Whack* *Whack* *Whack*!!!
> > > > > > > > > 
> > > > > > > > > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> > > > > > > > > ---
> > > > > > > > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> > > > > > > > > index fb74dc1f7520..4fa43c02d682 100644
> > > > > > > > > --- a/drivers/clk/clk.c
> > > > > > > > > +++ b/drivers/clk/clk.c
> > > > > > > > > @@ -682,12 +682,12 @@ static void clk_core_disable(struct clk_core *core)
> > > > > > > > >  	if (--core->enable_count > 0)
> > > > > > > > >  		return;
> > > > > > > > >  
> > > > > > > > > -	trace_clk_disable(core);
> > > > > > > > > +	trace_clk_disable_rcuidle(core);
> > > > > > > > >  
> > > > > > > > >  	if (core->ops->disable)
> > > > > > > > >  		core->ops->disable(core->hw);
> > > > > > > > >  
> > > > > > > > > -	trace_clk_disable_complete(core);
> > > > > > > > > +	trace_clk_disable_complete_rcuidle(core);
> > > > > > > > >  
> > > > > > > > >  	clk_core_disable(core->parent);
> > > > > > > > >  }
> > > > > > > > 
> > > > > > > > Now the mole shows up here!
> > > > > > > 
> > > > > > > And the patch shows up here!
> > > > > > 
> > > > > > And I bet you will need this one as well...
> > > > > 
> > > > > OK and now the mode is coming back after a short nap during idle:
> > > > 
> > > > Seems a bit unfair to whack it just after a short nap, but here goes!
> > > 
> > > This mode seems pretty hard headed :) Now clk_core_enable:
> > 
> > Nah, just a lot of heads...
> 
> OK that does it for me. Thanks for all the mole related whacks,
> please feel free to add:
> 
> Tested-by: Tony Lindgren <tony@atomide.com>

Done!  These are at -rcu:

6eeec2b4a50c (arm: Use _rcuidle tracepoint to allow use from idle)
0efee3da3b29 (arm: Use more _rcuidle tracepoints to allow use from idle)
b6cdf6d22f52 (arm: Additional _rcuidle tracepoints to allow use from idle)
70da6fb7275b (arm: Whack another event-trace-from-idle mole)
019db9102c6c (arm: Whack yet another event-trace-from-idle mole)
ebcd2861ae27 (arm: Whack an expected event-trace-from-idle mole)

So how would you like these handled?  I would be happy to send a fresh
patch series or git pull request if you would like to send them up your
tree, or I can send them up my usual path.  Just let me know!

And I would guess that other hardware and other configurations will
cause other moles to pop their heads up, but you never know.

							Thanx, Paul

[toc] | [prev] | [next] | [standalone]


Page 1 of 2  [1] 2  Next page →

Back to top | Article view | linux.kernel


csiph-web