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(¶virt_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(¶virt_ticketlocks_enabled);
+ return 0;
+}
+early_initcall(xen_init_spinlocks_jump);
static __init int xen_parse_nopvspin(char *arg)
{
which seem to work.
next prev parent 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 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.