linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
@ 2016-04-25 20:48 Paul E. McKenney
  2016-04-26 15:00 ` Tony Lindgren
  0 siblings, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-25 20:48 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-25 20:48 [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle Paul E. McKenney
@ 2016-04-26 15:00 ` Tony Lindgren
  2016-04-26 17:52   ` Paul E. McKenney
  0 siblings, 1 reply; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 15:00 UTC (permalink / raw)
  To: linux-arm-kernel

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)

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 15:00 ` Tony Lindgren
@ 2016-04-26 17:52   ` Paul E. McKenney
  2016-04-26 18:29     ` Tony Lindgren
  0 siblings, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 17:52 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 17:52   ` Paul E. McKenney
@ 2016-04-26 18:29     ` Tony Lindgren
  2016-04-26 19:07       ` Paul E. McKenney
  2016-04-26 19:17       ` Steven Rostedt
  0 siblings, 2 replies; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 18:29 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 18:29     ` Tony Lindgren
@ 2016-04-26 19:07       ` Paul E. McKenney
  2016-04-26 19:39         ` Tony Lindgren
  2016-04-26 19:17       ` Steven Rostedt
  1 sibling, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 19:07 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 18:29     ` Tony Lindgren
  2016-04-26 19:07       ` Paul E. McKenney
@ 2016-04-26 19:17       ` Steven Rostedt
  2016-04-26 19:41         ` Tony Lindgren
  2016-04-26 19:42         ` Paul E. McKenney
  1 sibling, 2 replies; 29+ messages in thread
From: Steven Rostedt @ 2016-04-26 19:17 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, 26 Apr 2016 11:29:39 -0700
Tony Lindgren <tony@atomide.com> wrote:

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

Time to play "Whack-a-Mole"(TM)

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
index 78af6d8cf2e2..12b66b5bcc55 100644
--- a/arch/arm/mach-omap2/powerdomain.c
+++ b/arch/arm/mach-omap2/powerdomain.c
@@ -523,8 +523,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);
 	}

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:07       ` Paul E. McKenney
@ 2016-04-26 19:39         ` Tony Lindgren
  2016-04-26 19:44           ` Steven Rostedt
  2016-04-26 19:47           ` Paul E. McKenney
  0 siblings, 2 replies; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 19:39 UTC (permalink / raw)
  To: linux-arm-kernel

* Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 12:08]:
> 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.

Oops sorry, I though I had the first one already from next..

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

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)

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:17       ` Steven Rostedt
@ 2016-04-26 19:41         ` Tony Lindgren
  2016-04-26 19:42         ` Paul E. McKenney
  1 sibling, 0 replies; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 19:41 UTC (permalink / raw)
  To: linux-arm-kernel

* Steven Rostedt <rostedt@goodmis.org> [160426 12:18]:
> Time to play "Whack-a-Mole"(TM)

:)

> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> ---
> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
> index 78af6d8cf2e2..12b66b5bcc55 100644
> --- a/arch/arm/mach-omap2/powerdomain.c
> +++ b/arch/arm/mach-omap2/powerdomain.c
> @@ -523,8 +523,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);
>  	}

That part is already there with "arm: Use _rcuidle tracepoint to allow
use from idle" which I did not have applied.

Regards,

Tony

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:17       ` Steven Rostedt
  2016-04-26 19:41         ` Tony Lindgren
@ 2016-04-26 19:42         ` Paul E. McKenney
  2016-04-26 19:49           ` Steven Rostedt
  1 sibling, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 19:42 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Apr 26, 2016 at 03:17:25PM -0400, Steven Rostedt wrote:
> On Tue, 26 Apr 2016 11:29:39 -0700
> Tony Lindgren <tony@atomide.com> wrote:
> 
> > * 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.
> 
> Time to play "Whack-a-Mole"(TM)

Indeed!  ;-)

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

Given the similarity with the following:

	http://lkml.kernel.org/g/20160425171239.GE3874 at linux.vnet.ibm.com

May I apply your Reviewed-by?

							Thanx, Paul

> ---
> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
> index 78af6d8cf2e2..12b66b5bcc55 100644
> --- a/arch/arm/mach-omap2/powerdomain.c
> +++ b/arch/arm/mach-omap2/powerdomain.c
> @@ -523,8 +523,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);
>  	}
> 

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:39         ` Tony Lindgren
@ 2016-04-26 19:44           ` Steven Rostedt
  2016-04-26 19:51             ` Paul E. McKenney
  2016-04-26 19:51             ` Tony Lindgren
  2016-04-26 19:47           ` Paul E. McKenney
  1 sibling, 2 replies; 29+ messages in thread
From: Steven Rostedt @ 2016-04-26 19:44 UTC (permalink / raw)
  To: linux-arm-kernel

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);
 }

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:39         ` Tony Lindgren
  2016-04-26 19:44           ` Steven Rostedt
@ 2016-04-26 19:47           ` Paul E. McKenney
  1 sibling, 0 replies; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 19:47 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Apr 26, 2016 at 12:39:50PM -0700, Tony Lindgren wrote:
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 12:08]:
> > 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.
> 
> Oops sorry, I though I had the first one already from next..
> 
> > 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)
> 
> With these omap4 is now OK. But omap3 produces yet another warning,
> See below :)

As Steven Rostedt said, whack-a-mole time...

The previous two patches are still needed.

							Thanx, Paul

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

commit c7ab21af6d959e3541ea52427472fc5dece75023
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Tue Apr 26 12:43:57 2016 -0700

    arm: Additional _rcuidle tracepoints to allow use from idle
    
    This commit adds an _rcuidle suffix to a pair of trace events to
    prevent the following splat:
    
    > ===============================
    > [ 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)
    
    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/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);
 }

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:42         ` Paul E. McKenney
@ 2016-04-26 19:49           ` Steven Rostedt
  0 siblings, 0 replies; 29+ messages in thread
From: Steven Rostedt @ 2016-04-26 19:49 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, 26 Apr 2016 12:42:15 -0700
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:


> Given the similarity with the following:
> 
> 	http://lkml.kernel.org/g/20160425171239.GE3874 at linux.vnet.ibm.com
> 
> May I apply your Reviewed-by?
> 

Yep.

-- Steve

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:44           ` Steven Rostedt
@ 2016-04-26 19:51             ` Paul E. McKenney
  2016-04-26 19:52               ` Steven Rostedt
  2016-04-26 19:51             ` Tony Lindgren
  1 sibling, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 19:51 UTC (permalink / raw)
  To: linux-arm-kernel

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);
>  }
> 

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:44           ` Steven Rostedt
  2016-04-26 19:51             ` Paul E. McKenney
@ 2016-04-26 19:51             ` Tony Lindgren
  2016-04-26 20:06               ` Paul E. McKenney
  1 sibling, 1 reply; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 19:51 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:51             ` Paul E. McKenney
@ 2016-04-26 19:52               ` Steven Rostedt
  2016-04-26 20:06                 ` Paul E. McKenney
  0 siblings, 1 reply; 29+ messages in thread
From: Steven Rostedt @ 2016-04-26 19:52 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:51             ` Tony Lindgren
@ 2016-04-26 20:06               ` Paul E. McKenney
  2016-04-26 20:11                 ` Paul E. McKenney
  2016-04-26 20:16                 ` Steven Rostedt
  0 siblings, 2 replies; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 20:06 UTC (permalink / raw)
  To: linux-arm-kernel

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);
 }
 

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 19:52               ` Steven Rostedt
@ 2016-04-26 20:06                 ` Paul E. McKenney
  0 siblings, 0 replies; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 20:06 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:06               ` Paul E. McKenney
@ 2016-04-26 20:11                 ` Paul E. McKenney
  2016-04-26 20:25                   ` Tony Lindgren
  2016-04-26 20:16                 ` Steven Rostedt
  1 sibling, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 20:11 UTC (permalink / raw)
  To: linux-arm-kernel

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;
 

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:06               ` Paul E. McKenney
  2016-04-26 20:11                 ` Paul E. McKenney
@ 2016-04-26 20:16                 ` Steven Rostedt
  2016-04-26 20:36                   ` Paul E. McKenney
  1 sibling, 1 reply; 29+ messages in thread
From: Steven Rostedt @ 2016-04-26 20:16 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:11                 ` Paul E. McKenney
@ 2016-04-26 20:25                   ` Tony Lindgren
  2016-04-26 20:41                     ` Paul E. McKenney
  0 siblings, 1 reply; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 20:25 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:16                 ` Steven Rostedt
@ 2016-04-26 20:36                   ` Paul E. McKenney
  0 siblings, 0 replies; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 20:36 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:25                   ` Tony Lindgren
@ 2016-04-26 20:41                     ` Paul E. McKenney
  2016-04-26 20:46                       ` Tony Lindgren
  0 siblings, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 20:41 UTC (permalink / raw)
  To: linux-arm-kernel

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!

							Thanx, Paul

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

commit 5c8e9cffebfc02acfbcfd18b46a6b1dbce96cbe3
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Tue Apr 26 13:38:55 2016 -0700

    arm: Whack yet another event-trace-from-idle mole
    
    This commit applies another _rcuidle suffix to fix an RCU use from
    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)
    
    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 e4c2b8fdeff3..15b6d5b199d4 100644
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -601,7 +601,7 @@ static int rpm_resume(struct device *dev, int rpmflags)
 	struct device *parent = NULL;
 	int retval = 0;
 
-	trace_rpm_resume(dev, rpmflags);
+	trace_rpm_resume_rcuidle(dev, rpmflags);
 
  repeat:
 	if (dev->power.runtime_error)
@@ -764,7 +764,7 @@ static int rpm_resume(struct device *dev, int rpmflags)
 		spin_lock_irq(&dev->power.lock);
 	}
 
-	trace_rpm_return_int(dev, _THIS_IP_, retval);
+	trace_rpm_return_int_rcuidle(dev, _THIS_IP_, retval);
 
 	return retval;
 }

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:41                     ` Paul E. McKenney
@ 2016-04-26 20:46                       ` Tony Lindgren
  2016-04-26 20:52                         ` Steven Rostedt
  2016-04-26 21:04                         ` Paul E. McKenney
  0 siblings, 2 replies; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 20:46 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:46                       ` Tony Lindgren
@ 2016-04-26 20:52                         ` Steven Rostedt
  2016-04-26 21:08                           ` Paul E. McKenney
  2016-04-26 21:04                         ` Paul E. McKenney
  1 sibling, 1 reply; 29+ messages in thread
From: Steven Rostedt @ 2016-04-26 20:52 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:46                       ` Tony Lindgren
  2016-04-26 20:52                         ` Steven Rostedt
@ 2016-04-26 21:04                         ` Paul E. McKenney
  2016-04-26 21:12                           ` Tony Lindgren
  1 sibling, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 21:04 UTC (permalink / raw)
  To: linux-arm-kernel

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

							Thanx, Paul

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

commit 21c3fc2373886a9fa014f0f69a72186377758f4b
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Tue Apr 26 14:02:23 2016 -0700

    arm: Whack an expected event-trace-from-idle mole
    
    This commit fixes the RCU use-from-idle bug corresponding the following
    splat:
    
    > [ 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)
    
    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/clk/clk.c b/drivers/clk/clk.c
index 4fa43c02d682..ec83f404c1d2 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -735,12 +735,12 @@ static int clk_core_enable(struct clk_core *core)
 		if (ret)
 			return ret;
 
-		trace_clk_enable(core);
+		trace_clk_enable_rcuidle(core);
 
 		if (core->ops->enable)
 			ret = core->ops->enable(core->hw);
 
-		trace_clk_enable_complete(core);
+		trace_clk_enable_complete_rcuidle(core);
 
 		if (ret) {
 			clk_core_disable(core->parent);

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 20:52                         ` Steven Rostedt
@ 2016-04-26 21:08                           ` Paul E. McKenney
  0 siblings, 0 replies; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 21:08 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 21:04                         ` Paul E. McKenney
@ 2016-04-26 21:12                           ` Tony Lindgren
  2016-04-26 21:26                             ` Paul E. McKenney
  0 siblings, 1 reply; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 21:12 UTC (permalink / raw)
  To: linux-arm-kernel

* 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>

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 21:12                           ` Tony Lindgren
@ 2016-04-26 21:26                             ` Paul E. McKenney
  2016-04-26 21:36                               ` Tony Lindgren
  0 siblings, 1 reply; 29+ messages in thread
From: Paul E. McKenney @ 2016-04-26 21:26 UTC (permalink / raw)
  To: linux-arm-kernel

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

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

* [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle
  2016-04-26 21:26                             ` Paul E. McKenney
@ 2016-04-26 21:36                               ` Tony Lindgren
  0 siblings, 0 replies; 29+ messages in thread
From: Tony Lindgren @ 2016-04-26 21:36 UTC (permalink / raw)
  To: linux-arm-kernel

* Paul E. McKenney <paulmck@linux.vnet.ibm.com> [160426 14:27]:
> 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!

Probably best to keep them in your rcu tree, at least I'm not seeing
any conflicts with my for-next with these.

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

Heh yeah I'm sure we'll see some more :)

Tony

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

end of thread, other threads:[~2016-04-26 21:36 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-25 20:48 [PATCH arm 1/1] arm: Use _rcuidle tracepoint to allow use from idle Paul E. McKenney
2016-04-26 15:00 ` Tony Lindgren
2016-04-26 17:52   ` Paul E. McKenney
2016-04-26 18:29     ` Tony Lindgren
2016-04-26 19:07       ` Paul E. McKenney
2016-04-26 19:39         ` Tony Lindgren
2016-04-26 19:44           ` Steven Rostedt
2016-04-26 19:51             ` Paul E. McKenney
2016-04-26 19:52               ` Steven Rostedt
2016-04-26 20:06                 ` Paul E. McKenney
2016-04-26 19:51             ` Tony Lindgren
2016-04-26 20:06               ` Paul E. McKenney
2016-04-26 20:11                 ` Paul E. McKenney
2016-04-26 20:25                   ` Tony Lindgren
2016-04-26 20:41                     ` Paul E. McKenney
2016-04-26 20:46                       ` Tony Lindgren
2016-04-26 20:52                         ` Steven Rostedt
2016-04-26 21:08                           ` Paul E. McKenney
2016-04-26 21:04                         ` Paul E. McKenney
2016-04-26 21:12                           ` Tony Lindgren
2016-04-26 21:26                             ` Paul E. McKenney
2016-04-26 21:36                               ` Tony Lindgren
2016-04-26 20:16                 ` Steven Rostedt
2016-04-26 20:36                   ` Paul E. McKenney
2016-04-26 19:47           ` Paul E. McKenney
2016-04-26 19:17       ` Steven Rostedt
2016-04-26 19:41         ` Tony Lindgren
2016-04-26 19:42         ` Paul E. McKenney
2016-04-26 19:49           ` Steven Rostedt

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