All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Dave Jones <davej@codemonkey.org.uk>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	Stephane Eranian <eranian@gmail.com>
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>,
	Andi Kleen <andi@firstfloor.org>
Subject: Re: perf related lockdep bug
Date: Wed, 4 Nov 2015 11:50:10 +0100	[thread overview]
Message-ID: <20151104105010.GA11639@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <20151104102800.GZ11639@twins.programming.kicks-ass.net>

On Wed, Nov 04, 2015 at 11:28:00AM +0100, Peter Zijlstra wrote:
> On Wed, Nov 04, 2015 at 11:21:51AM +0100, Peter Zijlstra wrote:
> 
> > The problem appears to be due to the new RCU expedited grace period
> > stuff, with rcu_read_unlock() now randomly trying to acquire locks it
> > previously didn't.
> > 
> > Lemme go look at those rcu bits again..
> 
> Paul, I think this is because of:
> 
>   8203d6d0ee78 ("rcu: Use single-stage IPI algorithm for RCU expedited grace period")
> 
> What happens is that the IPI comes in and tags any random
> rcu_read_unlock() with the special bit, which then goes on and takes
> locks.
> 
> Now the problem is that we have scheduler activity inside this lock;
> the one reported lockdep seems easy enough to fix, see below.
> 
> I'll got and see if there's more sites than can cause this.

*sigh* yes, there's gobs more. In fact the very first one I looked at:

rcu_dump_cpu_stacks()
  raw_spin_lock_irqsave(&rnp->lock, flags);
  dump_cpu_task()
    pr_info()

That too will end up doing wakeups..

idem:
 - print_other_cpu_stall()
 - rcu_print_details_task_stall_rnp()


So just like you had to pull out all the rcu_gp_kthead_wake() calls from
under rnp->lock, so too must we pull out all implied wakeups, which very
much include printk().


  reply	other threads:[~2015-11-04 10:50 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-04  5:17 perf related lockdep bug Dave Jones
2015-11-04 10:21 ` Peter Zijlstra
2015-11-04 10:28   ` Peter Zijlstra
2015-11-04 10:50     ` Peter Zijlstra [this message]
2015-11-04 13:48       ` Paul E. McKenney
2015-11-04 14:20         ` Peter Zijlstra
2015-11-04 15:34           ` Paul E. McKenney
2015-11-04 15:36           ` Peter Zijlstra
2015-11-04 15:51             ` Paul E. McKenney
2015-11-04 20:58         ` Andi Kleen
2015-11-05  0:55           ` Paul E. McKenney
2015-11-05  1:59             ` Paul E. McKenney
2015-11-05  2:46             ` Andi Kleen
2015-11-05 14:04               ` Paul E. McKenney
2015-11-11 13:29                 ` Paul E. McKenney
2015-11-10  6:39         ` [tip:perf/urgent] perf: Disable IRQs across RCU RS CS that acquires scheduler lock tip-bot for Paul E. McKenney
2015-11-04 14:01     ` perf related lockdep bug Paul E. McKenney
2015-11-04 14:34       ` Peter Zijlstra
2015-11-05  1:57         ` Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151104105010.GA11639@twins.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=andi@firstfloor.org \
    --cc=davej@codemonkey.org.uk \
    --cc=eranian@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.