public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: "H. Peter Anvin" <hpa@linux.intel.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@elte.hu>,
	Jason Baron <jbaron@akamai.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	boris.ostrovsky@oracle.com, david.vrabel@citrix.com
Subject: Re: Regression :-) Re: [GIT PULL RESEND] x86/jumpmplabel changes for v3.12-rc1
Date: Wed, 11 Sep 2013 15:55:50 -0400	[thread overview]
Message-ID: <20130911195550.GA30581@phenom.dumpdata.com> (raw)
In-Reply-To: <20130911151452.5810c793@gandalf.local.home>

On Wed, Sep 11, 2013 at 03:14:52PM -0400, Steven Rostedt wrote:
> On Wed, 11 Sep 2013 14:56:54 -0400
> Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> wrote:
> 
> 
> > > I'm looking to NAK your patch because it is obvious that the jump label
> > > code isn't doing what you expect it to be doing. And it wasn't until my
> > 
> > Actually it is OK. They need to be enabled before the SMP code kicks in.
> > 
> > > checks were in place for you to notice.
> > 
> > Any suggestion on how to resolve the crash?
> > 
> > The PV spinlock code is OK (I think, I need to think hard about this) until
> > the spinlocks start being used by multiple CPUs. At that point the
> > jump_lables have to be in place - otherwise you will end with a spinlock
> > going in a slowpath (patched over) and an kicker not using the slowpath
> > and never kicking the waiter. Which ends with a hanged system.
> 
> Note, a simple early_initcall() could do the trick. SMP isn't set up
> until much further in the boot process.
> 
> > 
> > Or simple said - jump labels have to be setup before we boot
> > the other CPUs. 
> 
> Right, and initcalls() can easily serve that purpose.
> 
> > 
> > This would affect the KVM guests as well, I think if the slowpath
> > waiter was blocking on the VCPU (which I think it is doing now, but
> > not entirely sure?)
> > 
> > P.S.
> > I am out on vacation tomorrow for a week. Boris (CC-ed here) can help.
> 
> Your patch isn't wrong per say, but I'm hesitant to apply it because it
> the result is different depending on whether JUMP_LABEL is configured
> or not. Using any jump_label() calls before jump_label_init() is
> called, is entering a gray area, and I think it should be avoided.
> 
> This patch should solve it for you:

And also the pv_lock_ops need to be set before alternative_asm
code is called :-) (Called from check_bugs()).

Otherwise you end up with some code still using the native slowpath
kicker/waiter while the modules might be using the Xen variant.

I knew that I forgot to mention something ..

With that in mind and your patch I made this one:

diff --git a/arch/x86/xen/spinlock.c b/arch/x86/xen/spinlock.c
index 253f63f..d90628d 100644
--- a/arch/x86/xen/spinlock.c
+++ b/arch/x86/xen/spinlock.c
@@ -267,11 +267,18 @@ void __init xen_init_spinlocks(void)
 		return;
 	}
 
-	static_key_slow_inc(&paravirt_ticketlocks_enabled);
-
 	pv_lock_ops.lock_spinning = PV_CALLEE_SAVE(xen_lock_spinning);
 	pv_lock_ops.unlock_kick = xen_unlock_kick;
 }
+static __init int xen_init_spinlocks_jump(void)
+{
+	if (!xen_pvspin)
+		return 0;
+
+	static_key_slow_inc(&paravirt_ticketlocks_enabled);
+	return 0;
+}
+early_initcall(xen_init_spinlocks_jump);
 
 static __init int xen_parse_nopvspin(char *arg)
 {

which seem to work.


  reply	other threads:[~2013-09-11 19:56 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-11  2:48 [GIT PULL RESEND] x86/jumpmplabel changes for v3.12-rc1 H. Peter Anvin
2013-09-11 13:47 ` Regression :-) " Konrad Rzeszutek Wilk
2013-09-11 13:57   ` Steven Rostedt
2013-09-11 13:57   ` Konrad Rzeszutek Wilk
2013-09-11 14:25     ` Konrad Rzeszutek Wilk
2013-09-11 14:56       ` Steven Rostedt
2013-09-11 15:21         ` Konrad Rzeszutek Wilk
2013-09-11 15:47           ` Steven Rostedt
2013-09-11 16:17             ` Konrad Rzeszutek Wilk
2013-09-11 17:05               ` Steven Rostedt
2013-09-11 17:25                 ` Konrad Rzeszutek Wilk
2013-09-11 17:52                   ` Steven Rostedt
2013-09-11 18:01                     ` Konrad Rzeszutek Wilk
2013-09-11 18:26                       ` Steven Rostedt
2013-09-11 18:56                         ` Konrad Rzeszutek Wilk
2013-09-11 19:14                           ` Steven Rostedt
2013-09-11 19:55                             ` Konrad Rzeszutek Wilk [this message]
2013-09-12 16:13                               ` Steven Rostedt
2013-09-11 14:38   ` Steven Rostedt

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=20130911195550.GA30581@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=david.vrabel@citrix.com \
    --cc=hpa@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jbaron@akamai.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox