From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754948AbcDYRMN (ORCPT ); Mon, 25 Apr 2016 13:12:13 -0400 Received: from e18.ny.us.ibm.com ([129.33.205.208]:49832 "EHLO e18.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754456AbcDYRML (ORCPT ); Mon, 25 Apr 2016 13:12:11 -0400 X-IBM-Helo: d01dlp02.pok.ibm.com X-IBM-MailFrom: paulmck@linux.vnet.ibm.com X-IBM-RcptTo: linux-kernel@vger.kernel.org Date: Mon, 25 Apr 2016 10:12:39 -0700 From: "Paul E. McKenney" To: Guenter Roeck Cc: Boqun Feng , Josh Triplett , Steven Rostedt , linux-kernel@vger.kernel.org Subject: Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()' Message-ID: <20160425171239.GE3874@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20160424211424.GA20388@roeck-us.net> <20160424213147.GW3756@linux.vnet.ibm.com> <571D5D36.3060308@roeck-us.net> <20160425052847.GY3756@linux.vnet.ibm.com> <571DAD15.6070708@roeck-us.net> <20160425054922.GA3756@linux.vnet.ibm.com> <571DB8A1.7000704@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <571DB8A1.7000704@roeck-us.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16042517-0045-0000-0000-00000400AAC2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Apr 24, 2016 at 11:26:41PM -0700, Guenter Roeck wrote: > On 04/24/2016 10:49 PM, Paul E. McKenney wrote: > >On Sun, Apr 24, 2016 at 10:37:25PM -0700, Guenter Roeck wrote: > >>On 04/24/2016 10:28 PM, Paul E. McKenney wrote: > >>>On Sun, Apr 24, 2016 at 04:56:38PM -0700, Guenter Roeck wrote: [ . . . ] > >>>>After making the same change in _pwrdm_state_switch(), the traceback is gone > >>>>from my tests (beagle, beagle-xm, and overo-tobi). > >>> > >>>Very good! > >>> > >>>(And yes, you normally find these one at a time...) > >>> > >>Are you going to submit a formal patch ? > > > >I can, but please feel free to send mine along with yours, if you wish. > > > I think it would be best if you send a single patch which fixes both calls. Like this one? If so, could you please run it to make sure that it actually fixes the problem? And if it does, would you be willing to give me a Tested-by? Thanx, Paul ------------------------------------------------------------------------ commit e3c9e1a46984b8c3e4204f138aced7630c4b85c2 Author: Paul E. McKenney Date: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle 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) [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [] (show_stack) from [] (dump_stack+0xa8/0xe0) [] (dump_stack) from [] (pwrdm_set_next_pwrst+0xf8/0x1cc) [] (pwrdm_set_next_pwrst) from [] (omap3_enter_idle_bm+0x1b8/0x1e8) [] (omap3_enter_idle_bm) from [] (cpuidle_enter_state+0x84/0x408) [] (cpuidle_enter_state) from [] (cpu_startup_entry+0x1c8/0x3f0) [] (cpu_startup_entry) from [] (start_kernel+0x354/0x3cc) ------------------------------------------------------------------------ [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [] (show_stack) from [] (dump_stack+0xa8/0xe0) [] (dump_stack) from [] (_pwrdm_state_switch+0x188/0x32c) [] (_pwrdm_state_switch) from [] (_pwrdm_post_transition_cb+0xc/0x14) [] (_pwrdm_post_transition_cb) from [] (pwrdm_for_each+0x30/0x5c) [] (pwrdm_for_each) from [] (pwrdm_post_transition+0x24/0x30) [] (pwrdm_post_transition) from [] (omap_sram_idle+0xfc/0x240) [] (omap_sram_idle) from [] (omap3_enter_idle_bm+0xf0/0x1e8) [] (omap3_enter_idle_bm) from [] (cpuidle_enter_state+0x84/0x408) [] (cpuidle_enter_state) from [] (cpu_startup_entry+0x1c8/0x3f0) [] (cpu_startup_entry) from [] (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 Signed-off-by: Paul E. McKenney Cc: Tony Lindgren Cc: Russell King Cc: Steven Rostedt Cc: Cc: 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); }