Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Sat, May 14, 2016 at 08:42:46AM -0700, Guenter Roeck wrote: > On 04/25/2016 01:49 PM, Paul E. McKenney wrote: > >On Mon, Apr 25, 2016 at 01:25:10PM -0700, Guenter Roeck wrote: > >>On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: > >>>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? > >>> > >>It does. Tested-by: inline below. > > > >Got it, thank you! > > > >If the ARM guys are willing to take this, it might hit the next merge > >window, or perhaps they will take it as an exception. If I push it > >up my usual route, it will be a bit later. > > > >I just now sent it out, so hopefully they will grab it. ;-) > > > The problem is still seen in next-20160513, so it looks like the patch was > not accepted. > > I recently learned that arm has a special way of submitting patches. See > http://www.arm.linux.org.uk/developer/patches/ for details. If I understand > correctly, > you'll have to send the patch to patc...@arm.linux.org.uk, and it has to be > formatted > correctly (eg no "[PATCH]" in the subject line, and some other information > added). > I never tried it myself, so I don't really know how exactly it works. Nor have I. But Tony Lindgren asked me to send them via -tip. which I can do. But I do need to straighten out the commit logs a bit beforehand. So I will send an updated series to LKML later today and if there are no objections, send a pull request to Ingo. Thanx, Paul
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Sat, May 14, 2016 at 08:42:46AM -0700, Guenter Roeck wrote: > On 04/25/2016 01:49 PM, Paul E. McKenney wrote: > >On Mon, Apr 25, 2016 at 01:25:10PM -0700, Guenter Roeck wrote: > >>On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: > >>>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? > >>> > >>It does. Tested-by: inline below. > > > >Got it, thank you! > > > >If the ARM guys are willing to take this, it might hit the next merge > >window, or perhaps they will take it as an exception. If I push it > >up my usual route, it will be a bit later. > > > >I just now sent it out, so hopefully they will grab it. ;-) > > > The problem is still seen in next-20160513, so it looks like the patch was > not accepted. > > I recently learned that arm has a special way of submitting patches. See > http://www.arm.linux.org.uk/developer/patches/ for details. If I understand > correctly, > you'll have to send the patch to patc...@arm.linux.org.uk, and it has to be > formatted > correctly (eg no "[PATCH]" in the subject line, and some other information > added). > I never tried it myself, so I don't really know how exactly it works. Nor have I. But Tony Lindgren asked me to send them via -tip. which I can do. But I do need to straighten out the commit logs a bit beforehand. So I will send an updated series to LKML later today and if there are no objections, send a pull request to Ingo. Thanx, Paul
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On 04/25/2016 01:49 PM, Paul E. McKenney wrote: On Mon, Apr 25, 2016 at 01:25:10PM -0700, Guenter Roeck wrote: On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: 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? It does. Tested-by: inline below. Got it, thank you! If the ARM guys are willing to take this, it might hit the next merge window, or perhaps they will take it as an exception. If I push it up my usual route, it will be a bit later. I just now sent it out, so hopefully they will grab it. ;-) The problem is still seen in next-20160513, so it looks like the patch was not accepted. I recently learned that arm has a special way of submitting patches. See http://www.arm.linux.org.uk/developer/patches/ for details. If I understand correctly, you'll have to send the patch to patc...@arm.linux.org.uk, and it has to be formatted correctly (eg no "[PATCH]" in the subject line, and some other information added). I never tried it myself, so I don't really know how exactly it works. Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On 04/25/2016 01:49 PM, Paul E. McKenney wrote: On Mon, Apr 25, 2016 at 01:25:10PM -0700, Guenter Roeck wrote: On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: 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? It does. Tested-by: inline below. Got it, thank you! If the ARM guys are willing to take this, it might hit the next merge window, or perhaps they will take it as an exception. If I push it up my usual route, it will be a bit later. I just now sent it out, so hopefully they will grab it. ;-) The problem is still seen in next-20160513, so it looks like the patch was not accepted. I recently learned that arm has a special way of submitting patches. See http://www.arm.linux.org.uk/developer/patches/ for details. If I understand correctly, you'll have to send the patch to patc...@arm.linux.org.uk, and it has to be formatted correctly (eg no "[PATCH]" in the subject line, and some other information added). I never tried it myself, so I don't really know how exactly it works. Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On 04/25/2016 01:49 PM, Paul E. McKenney wrote: On Mon, Apr 25, 2016 at 01:25:10PM -0700, Guenter Roeck wrote: On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: 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? It does. Tested-by: inline below. Got it, thank you! If the ARM guys are willing to take this, it might hit the next merge window, or perhaps they will take it as an exception. If I push it up my usual route, it will be a bit later. I just now sent it out, so hopefully they will grab it. ;-) Hi Paul, Either it fixes a zero-day bug which was exposed by 'rcu: Remove superfluous versions ...", or it fixes a problem with that commit, so I would hope that _someone_ will pick it up. Anyway, thanks a lot for looking into it, and for the patch! Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On 04/25/2016 01:49 PM, Paul E. McKenney wrote: On Mon, Apr 25, 2016 at 01:25:10PM -0700, Guenter Roeck wrote: On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: 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? It does. Tested-by: inline below. Got it, thank you! If the ARM guys are willing to take this, it might hit the next merge window, or perhaps they will take it as an exception. If I push it up my usual route, it will be a bit later. I just now sent it out, so hopefully they will grab it. ;-) Hi Paul, Either it fixes a zero-day bug which was exposed by 'rcu: Remove superfluous versions ...", or it fixes a problem with that commit, so I would hope that _someone_ will pick it up. Anyway, thanks a lot for looking into it, and for the patch! Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Mon, Apr 25, 2016 at 01:25:10PM -0700, Guenter Roeck wrote: > On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: > > 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? > > > It does. Tested-by: inline below. Got it, thank you! If the ARM guys are willing to take this, it might hit the next merge window, or perhaps they will take it as an exception. If I push it up my usual route, it will be a bit later. I just now sent it out, so hopefully they will grab it. ;-) Thanx, Paul > Thanks, > Guenter > > > 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 > > Tested-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 > >
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Mon, Apr 25, 2016 at 01:25:10PM -0700, Guenter Roeck wrote: > On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: > > 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? > > > It does. Tested-by: inline below. Got it, thank you! If the ARM guys are willing to take this, it might hit the next merge window, or perhaps they will take it as an exception. If I push it up my usual route, it will be a bit later. I just now sent it out, so hopefully they will grab it. ;-) Thanx, Paul > Thanks, > Guenter > > > 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 > > Tested-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
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: > 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? > It does. Tested-by: inline below. Thanks, Guenter > 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 Tested-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()); > +
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Mon, Apr 25, 2016 at 10:12:39AM -0700, Paul E. McKenney wrote: > 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? > It does. Tested-by: inline below. Thanks, Guenter > 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 Tested-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()); > } >
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
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. McKenneyDate: 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 &&
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
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()); +
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
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: Hi Paul, On 04/24/2016 02:31 PM, Paul E. McKenney wrote: On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: Hi, I see the following log message when running a qemu test for 'beagle' with omap2plus_defconfig. === [ 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) bisect points to commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'. Bisect log is attached. I believe that the real fix is not a revert of that commit, but rather that some of the tracing statements need an "_rcuidle" suffix. Something like the following (untested, probably does not build) patch. Thanx, Paul commit ca91304178e1cf53ee391236a0ac3969cc814e5f Author: Paul E. McKenneyDate: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle Signed-off-by: Paul E. McKenney 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); } It does build. After applying it, I get a different traceback. [] (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) 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. Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
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: Hi Paul, On 04/24/2016 02:31 PM, Paul E. McKenney wrote: On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: Hi, I see the following log message when running a qemu test for 'beagle' with omap2plus_defconfig. === [ 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) bisect points to commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'. Bisect log is attached. I believe that the real fix is not a revert of that commit, but rather that some of the tracing statements need an "_rcuidle" suffix. Something like the following (untested, probably does not build) patch. Thanx, Paul commit ca91304178e1cf53ee391236a0ac3969cc814e5f Author: Paul E. McKenney Date: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle Signed-off-by: Paul E. McKenney 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); } It does build. After applying it, I get a different traceback. [] (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) 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. Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
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: > >>Hi Paul, > >> > >>On 04/24/2016 02:31 PM, Paul E. McKenney wrote: > >>>On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: > Hi, > > I see the following log message when running a qemu test for 'beagle' > with omap2plus_defconfig. > > === > [ 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) > > bisect points to commit 'rcu: Remove superfluous versions of > rcu_read_lock_sched_held()'. Bisect log is attached. > >>> > >>>I believe that the real fix is not a revert of that commit, but rather > >>>that some of the tracing statements need an "_rcuidle" suffix. > >>> > >>>Something like the following (untested, probably does not build) patch. > >>> > >>> Thanx, Paul > >>> > >>> > >>> > >>>commit ca91304178e1cf53ee391236a0ac3969cc814e5f > >>>Author: Paul E. McKenney> >>>Date: Sun Apr 24 14:30:16 2016 -0700 > >>> > >>> arm: Use _rcuidle tracepoint to allow use from idle > >>> > >>> Signed-off-by: Paul E. McKenney > >>> > >>>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); > >>> } > >>> > >> > >>It does build. After applying it, I get a different traceback. > >> > >>[] (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) > >> > >>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. Either way, please let me know. Thanx, Paul
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
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: > >>Hi Paul, > >> > >>On 04/24/2016 02:31 PM, Paul E. McKenney wrote: > >>>On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: > Hi, > > I see the following log message when running a qemu test for 'beagle' > with omap2plus_defconfig. > > === > [ 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) > > bisect points to commit 'rcu: Remove superfluous versions of > rcu_read_lock_sched_held()'. Bisect log is attached. > >>> > >>>I believe that the real fix is not a revert of that commit, but rather > >>>that some of the tracing statements need an "_rcuidle" suffix. > >>> > >>>Something like the following (untested, probably does not build) patch. > >>> > >>> Thanx, Paul > >>> > >>> > >>> > >>>commit ca91304178e1cf53ee391236a0ac3969cc814e5f > >>>Author: Paul E. McKenney > >>>Date: Sun Apr 24 14:30:16 2016 -0700 > >>> > >>> arm: Use _rcuidle tracepoint to allow use from idle > >>> > >>> Signed-off-by: Paul E. McKenney > >>> > >>>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); > >>> } > >>> > >> > >>It does build. After applying it, I get a different traceback. > >> > >>[] (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) > >> > >>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. Either way, please let me know. Thanx, Paul
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On 04/24/2016 10:28 PM, Paul E. McKenney wrote: On Sun, Apr 24, 2016 at 04:56:38PM -0700, Guenter Roeck wrote: Hi Paul, On 04/24/2016 02:31 PM, Paul E. McKenney wrote: On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: Hi, I see the following log message when running a qemu test for 'beagle' with omap2plus_defconfig. === [ 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) bisect points to commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'. Bisect log is attached. I believe that the real fix is not a revert of that commit, but rather that some of the tracing statements need an "_rcuidle" suffix. Something like the following (untested, probably does not build) patch. Thanx, Paul commit ca91304178e1cf53ee391236a0ac3969cc814e5f Author: Paul E. McKenneyDate: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle Signed-off-by: Paul E. McKenney 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); } It does build. After applying it, I get a different traceback. [] (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) 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 ? Thanks, Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On 04/24/2016 10:28 PM, Paul E. McKenney wrote: On Sun, Apr 24, 2016 at 04:56:38PM -0700, Guenter Roeck wrote: Hi Paul, On 04/24/2016 02:31 PM, Paul E. McKenney wrote: On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: Hi, I see the following log message when running a qemu test for 'beagle' with omap2plus_defconfig. === [ 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) bisect points to commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'. Bisect log is attached. I believe that the real fix is not a revert of that commit, but rather that some of the tracing statements need an "_rcuidle" suffix. Something like the following (untested, probably does not build) patch. Thanx, Paul commit ca91304178e1cf53ee391236a0ac3969cc814e5f Author: Paul E. McKenney Date: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle Signed-off-by: Paul E. McKenney 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); } It does build. After applying it, I get a different traceback. [] (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) 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 ? Thanks, Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Sun, Apr 24, 2016 at 04:56:38PM -0700, Guenter Roeck wrote: > Hi Paul, > > On 04/24/2016 02:31 PM, Paul E. McKenney wrote: > >On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: > >>Hi, > >> > >>I see the following log message when running a qemu test for 'beagle' > >>with omap2plus_defconfig. > >> > >>=== > >>[ 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) > >> > >>bisect points to commit 'rcu: Remove superfluous versions of > >>rcu_read_lock_sched_held()'. Bisect log is attached. > > > >I believe that the real fix is not a revert of that commit, but rather > >that some of the tracing statements need an "_rcuidle" suffix. > > > >Something like the following (untested, probably does not build) patch. > > > > Thanx, Paul > > > > > > > >commit ca91304178e1cf53ee391236a0ac3969cc814e5f > >Author: Paul E. McKenney> >Date: Sun Apr 24 14:30:16 2016 -0700 > > > > arm: Use _rcuidle tracepoint to allow use from idle > > > > Signed-off-by: Paul E. McKenney > > > >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); > > } > > > > It does build. After applying it, I get a different traceback. > > [] (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) > > 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...) Thanx, Paul
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Sun, Apr 24, 2016 at 04:56:38PM -0700, Guenter Roeck wrote: > Hi Paul, > > On 04/24/2016 02:31 PM, Paul E. McKenney wrote: > >On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: > >>Hi, > >> > >>I see the following log message when running a qemu test for 'beagle' > >>with omap2plus_defconfig. > >> > >>=== > >>[ 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) > >> > >>bisect points to commit 'rcu: Remove superfluous versions of > >>rcu_read_lock_sched_held()'. Bisect log is attached. > > > >I believe that the real fix is not a revert of that commit, but rather > >that some of the tracing statements need an "_rcuidle" suffix. > > > >Something like the following (untested, probably does not build) patch. > > > > Thanx, Paul > > > > > > > >commit ca91304178e1cf53ee391236a0ac3969cc814e5f > >Author: Paul E. McKenney > >Date: Sun Apr 24 14:30:16 2016 -0700 > > > > arm: Use _rcuidle tracepoint to allow use from idle > > > > Signed-off-by: Paul E. McKenney > > > >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); > > } > > > > It does build. After applying it, I get a different traceback. > > [] (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) > > 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...) Thanx, Paul
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
Hi Paul, On 04/24/2016 02:31 PM, Paul E. McKenney wrote: On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: Hi, I see the following log message when running a qemu test for 'beagle' with omap2plus_defconfig. === [ 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) bisect points to commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'. Bisect log is attached. I believe that the real fix is not a revert of that commit, but rather that some of the tracing statements need an "_rcuidle" suffix. Something like the following (untested, probably does not build) patch. Thanx, Paul commit ca91304178e1cf53ee391236a0ac3969cc814e5f Author: Paul E. McKenneyDate: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle Signed-off-by: Paul E. McKenney 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); } It does build. After applying it, I get a different traceback. [] (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) After making the same change in _pwrdm_state_switch(), the traceback is gone from my tests (beagle, beagle-xm, and overo-tobi). Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
Hi Paul, On 04/24/2016 02:31 PM, Paul E. McKenney wrote: On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: Hi, I see the following log message when running a qemu test for 'beagle' with omap2plus_defconfig. === [ 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) bisect points to commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'. Bisect log is attached. I believe that the real fix is not a revert of that commit, but rather that some of the tracing statements need an "_rcuidle" suffix. Something like the following (untested, probably does not build) patch. Thanx, Paul commit ca91304178e1cf53ee391236a0ac3969cc814e5f Author: Paul E. McKenney Date: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle Signed-off-by: Paul E. McKenney 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); } It does build. After applying it, I get a different traceback. [] (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) After making the same change in _pwrdm_state_switch(), the traceback is gone from my tests (beagle, beagle-xm, and overo-tobi). Guenter
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: > Hi, > > I see the following log message when running a qemu test for 'beagle' > with omap2plus_defconfig. > > === > [ 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) > > bisect points to commit 'rcu: Remove superfluous versions of > rcu_read_lock_sched_held()'. Bisect log is attached. I believe that the real fix is not a revert of that commit, but rather that some of the tracing statements need an "_rcuidle" suffix. Something like the following (untested, probably does not build) patch. Thanx, Paul commit ca91304178e1cf53ee391236a0ac3969cc814e5f Author: Paul E. McKenneyDate: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle Signed-off-by: Paul E. McKenney 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); }
Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
On Sun, Apr 24, 2016 at 02:14:24PM -0700, Guenter Roeck wrote: > Hi, > > I see the following log message when running a qemu test for 'beagle' > with omap2plus_defconfig. > > === > [ 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) > > bisect points to commit 'rcu: Remove superfluous versions of > rcu_read_lock_sched_held()'. Bisect log is attached. I believe that the real fix is not a revert of that commit, but rather that some of the tracing statements need an "_rcuidle" suffix. Something like the following (untested, probably does not build) patch. Thanx, Paul commit ca91304178e1cf53ee391236a0ac3969cc814e5f Author: Paul E. McKenney Date: Sun Apr 24 14:30:16 2016 -0700 arm: Use _rcuidle tracepoint to allow use from idle Signed-off-by: Paul E. McKenney 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); }
next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
Hi, I see the following log message when running a qemu test for 'beagle' with omap2plus_defconfig. === [ 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) bisect points to commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'. Bisect log is attached. Thanks, Guenter --- # bad: [73442f7becf1b305c966ad37f5991d030f8bc025] Add linux-next specific files for 20160422 # good: [c3b46c73264b03000d1e18b22f5caf63332547c9] Linux 4.6-rc4 git bisect start 'HEAD' 'v4.6-rc4' # good: [f59d58f4c4c5d63b2f1768ab94465f9e98cd771d] Merge remote-tracking branch 'l2-mtd/master' git bisect good f59d58f4c4c5d63b2f1768ab94465f9e98cd771d # good: [ee634dd861741fa3112263c5fcd562e7953a8f3e] Merge remote-tracking branch 'tip/auto-latest' git bisect good ee634dd861741fa3112263c5fcd562e7953a8f3e # bad: [56ce28694cb53fb5609feca2735736583a35d5d1] Merge remote-tracking branch 'staging/staging-next' git bisect bad 56ce28694cb53fb5609feca2735736583a35d5d1 # good: [9acc4500b44723d12bec63519038ef820479eaad] staging/lustre/llite: rename struct ccc_thread_info to vvp_thread_info git bisect good 9acc4500b44723d12bec63519038ef820479eaad # bad: [95585a7b8c5f8eac40402378bc7482376f17a3ff] Merge remote-tracking branch 'driver-core/driver-core-next' git bisect bad 95585a7b8c5f8eac40402378bc7482376f17a3ff # bad: [3052fd5d2b38b26deaa195aec34f18bacccdf40c] torture: Add starvation events to error summary git bisect bad 3052fd5d2b38b26deaa195aec34f18bacccdf40c # good: [a54062c0d95921d4fb0edc8d268021bf387e6c75] rcutorture: Add boot-time adjustment of leaf fanout git bisect good a54062c0d95921d4fb0edc8d268021bf387e6c75 # bad: [dcd36d01fb3f99d1d5df01714f6ccbe3fbbaf81f] Merge branches 'doc.2016.04.19a', 'exp.2016.03.31d', 'fixes.2016.03.31d' and 'torture.2016.04.21a' into HEAD git bisect bad dcd36d01fb3f99d1d5df01714f6ccbe3fbbaf81f # good: [3b5f668e715bc19610ad967ef97a7e8c55a186ec] rcu: Overlap wakeups with next expedited grace period git bisect good 3b5f668e715bc19610ad967ef97a7e8c55a186ec # good: [5413e24c943da33306047fc091fa34fa4f261b3b] documentation: Sharpen up the no-readers quick quiz git bisect good 5413e24c943da33306047fc091fa34fa4f261b3b # bad: [293e2421fe25839500207eda123cc4475f8d17b8] rcu: Remove superfluous versions of rcu_read_lock_sched_held() git bisect bad 293e2421fe25839500207eda123cc4475f8d17b8 # good: [fcfd0a237bfcf0c314005007e9d76e55a25e2bad] rcu: Make FQS schedule advance only if FQS happened git bisect good fcfd0a237bfcf0c314005007e9d76e55a25e2bad # good: [8c7c4829a81c1838f18c12ce5a3a5c29a08bf0a8] rcu: Awaken grace-period kthread if too long since FQS git bisect good 8c7c4829a81c1838f18c12ce5a3a5c29a08bf0a8 # first bad commit: [293e2421fe25839500207eda123cc4475f8d17b8] rcu: Remove superfluous versions of rcu_read_lock_sched_held()
next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'
Hi, I see the following log message when running a qemu test for 'beagle' with omap2plus_defconfig. === [ 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) bisect points to commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'. Bisect log is attached. Thanks, Guenter --- # bad: [73442f7becf1b305c966ad37f5991d030f8bc025] Add linux-next specific files for 20160422 # good: [c3b46c73264b03000d1e18b22f5caf63332547c9] Linux 4.6-rc4 git bisect start 'HEAD' 'v4.6-rc4' # good: [f59d58f4c4c5d63b2f1768ab94465f9e98cd771d] Merge remote-tracking branch 'l2-mtd/master' git bisect good f59d58f4c4c5d63b2f1768ab94465f9e98cd771d # good: [ee634dd861741fa3112263c5fcd562e7953a8f3e] Merge remote-tracking branch 'tip/auto-latest' git bisect good ee634dd861741fa3112263c5fcd562e7953a8f3e # bad: [56ce28694cb53fb5609feca2735736583a35d5d1] Merge remote-tracking branch 'staging/staging-next' git bisect bad 56ce28694cb53fb5609feca2735736583a35d5d1 # good: [9acc4500b44723d12bec63519038ef820479eaad] staging/lustre/llite: rename struct ccc_thread_info to vvp_thread_info git bisect good 9acc4500b44723d12bec63519038ef820479eaad # bad: [95585a7b8c5f8eac40402378bc7482376f17a3ff] Merge remote-tracking branch 'driver-core/driver-core-next' git bisect bad 95585a7b8c5f8eac40402378bc7482376f17a3ff # bad: [3052fd5d2b38b26deaa195aec34f18bacccdf40c] torture: Add starvation events to error summary git bisect bad 3052fd5d2b38b26deaa195aec34f18bacccdf40c # good: [a54062c0d95921d4fb0edc8d268021bf387e6c75] rcutorture: Add boot-time adjustment of leaf fanout git bisect good a54062c0d95921d4fb0edc8d268021bf387e6c75 # bad: [dcd36d01fb3f99d1d5df01714f6ccbe3fbbaf81f] Merge branches 'doc.2016.04.19a', 'exp.2016.03.31d', 'fixes.2016.03.31d' and 'torture.2016.04.21a' into HEAD git bisect bad dcd36d01fb3f99d1d5df01714f6ccbe3fbbaf81f # good: [3b5f668e715bc19610ad967ef97a7e8c55a186ec] rcu: Overlap wakeups with next expedited grace period git bisect good 3b5f668e715bc19610ad967ef97a7e8c55a186ec # good: [5413e24c943da33306047fc091fa34fa4f261b3b] documentation: Sharpen up the no-readers quick quiz git bisect good 5413e24c943da33306047fc091fa34fa4f261b3b # bad: [293e2421fe25839500207eda123cc4475f8d17b8] rcu: Remove superfluous versions of rcu_read_lock_sched_held() git bisect bad 293e2421fe25839500207eda123cc4475f8d17b8 # good: [fcfd0a237bfcf0c314005007e9d76e55a25e2bad] rcu: Make FQS schedule advance only if FQS happened git bisect good fcfd0a237bfcf0c314005007e9d76e55a25e2bad # good: [8c7c4829a81c1838f18c12ce5a3a5c29a08bf0a8] rcu: Awaken grace-period kthread if too long since FQS git bisect good 8c7c4829a81c1838f18c12ce5a3a5c29a08bf0a8 # first bad commit: [293e2421fe25839500207eda123cc4475f8d17b8] rcu: Remove superfluous versions of rcu_read_lock_sched_held()