Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'

2016-05-16 Thread Paul E. McKenney
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()'

2016-05-16 Thread Paul E. McKenney
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()'

2016-05-14 Thread Guenter Roeck

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

2016-05-14 Thread Guenter Roeck

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

2016-04-25 Thread Guenter Roeck

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

2016-04-25 Thread Guenter Roeck

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

2016-04-25 Thread Paul E. McKenney
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()'

2016-04-25 Thread Paul E. McKenney
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()'

2016-04-25 Thread Guenter Roeck
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()'

2016-04-25 Thread Guenter Roeck
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()'

2016-04-25 Thread Paul E. McKenney
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 && 

Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'

2016-04-25 Thread Paul E. McKenney
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()'

2016-04-25 Thread Guenter Roeck

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

2016-04-25 Thread Guenter Roeck

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

2016-04-24 Thread Paul E. McKenney
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()'

2016-04-24 Thread Paul E. McKenney
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()'

2016-04-24 Thread Guenter Roeck

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

2016-04-24 Thread Guenter Roeck

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

2016-04-24 Thread Paul E. McKenney
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()'

2016-04-24 Thread Paul E. McKenney
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()'

2016-04-24 Thread Guenter Roeck

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

2016-04-24 Thread Guenter Roeck

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

2016-04-24 Thread Paul E. McKenney
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);
}



Re: next: suspicious RCU usage message since commit 'rcu: Remove superfluous versions of rcu_read_lock_sched_held()'

2016-04-24 Thread Paul E. McKenney
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()'

2016-04-24 Thread Guenter Roeck
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()'

2016-04-24 Thread Guenter Roeck
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()