From: Ingo Molnar <mingo@kernel.org>
To: Mike Galbraith <umgwanakikbuti@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: regression: massive trouble with fpu rework
Date: Sat, 27 Jun 2015 10:18:55 +0200 [thread overview]
Message-ID: <20150627081855.GA10192@gmail.com> (raw)
In-Reply-To: <1435386316.3664.23.camel@gmail.com>
* Mike Galbraith <umgwanakikbuti@gmail.com> wrote:
> Hi Ingo,
>
> My i7-4790 box is having one hell of a time with this merge window, is
> dead in the water. The netconsole log below is v4.1-7254-gc13c81006314,
> but trouble begins at bisected point much earlier. If I turn off kvm,
> such that I can kinda sorta boot, systemd says many services "enter
> failed state", box is pretty much a doorstop. Though I can get to a
> prompt, I can't login. If kvm is enabled, it explodes as soon as it
> autoloads (wtf does it do that when it's not being used?)
>
> Bisecting to the beginning of my woes takes me to the below. Before
> that, it doesn't matter if kvm is enabled or not, all is well. Below
> the current gripage with kvm disabled, find the kvm explosion, and
> another explosion as I approach the beginning of my box's woes.
>
> 067051ccd209623cb56152cf4cb06616ee2bcc5c is the first bad commit
> commit 067051ccd209623cb56152cf4cb06616ee2bcc5c
> Author: Ingo Molnar <mingo@kernel.org>
> Date: Sat Apr 25 08:27:44 2015 +0200
>
> x86/fpu: Do system-wide setup from fpu__detect()
>
> fpu__cpu_init() is called on every CPU, so it is the wrong place
> to call fpu__init_system() from. Call it from fpu__detect():
> this is early CPU init code, but we already have CPU features detected,
> so we can call the system-wide FPU init code from here.
>
> Reviewed-by: Borislav Petkov <bp@alien8.de>
> Cc: Andy Lutomirski <luto@amacapital.net>
> Cc: Dave Hansen <dave.hansen@linux.intel.com>
> Cc: Fenghua Yu <fenghua.yu@intel.com>
> Cc: H. Peter Anvin <hpa@zytor.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Oleg Nesterov <oleg@redhat.com>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Signed-off-by: Ingo Molnar <mingo@kernel.org>
Just as a quick workaround, if you add back a per CPU init fpu__init_system()
call, as per the disgusting hack below, do things get happier?
( You might trigger a few WARN_ON_ONCE() whinges, especially if you have
CONFIG_X86_DEBUG_FPU=y, but those should be one-time warnings that are not
fatal. )
Totally untested, unfortunately.
My theory of the bug is that there is something that needs to be set up per CPU,
which is a side effect of fpu__init_system(), and which the new fpu__init_cpu()
does not capture. If this patch helps then the real fix would be to figure out
that side effect.
Thanks,
Ingo
arch/x86/kernel/fpu/init.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kernel/fpu/init.c b/arch/x86/kernel/fpu/init.c
index fc878fee6a51..421babb08fe6 100644
--- a/arch/x86/kernel/fpu/init.c
+++ b/arch/x86/kernel/fpu/init.c
@@ -4,6 +4,9 @@
#include <asm/fpu/internal.h>
#include <asm/tlbflush.h>
+#undef __init
+#define __init
+
/*
* Initialize the TS bit in CR0 according to the style of context-switches
* we are using:
@@ -44,13 +47,18 @@ static void fpu__init_cpu_generic(void)
/*
* Enable all supported FPU features. Called when a CPU is brought online:
*/
-void fpu__init_cpu(void)
+static void __fpu__init_cpu(void)
{
fpu__init_cpu_generic();
fpu__init_cpu_xstate();
fpu__init_cpu_ctx_switch();
}
+void fpu__init_cpu(void)
+{
+ fpu__init_system(NULL);
+}
+
/*
* The earliest FPU detection code.
*
@@ -267,13 +275,14 @@ static void __init fpu__init_system_ctx_switch(void)
*/
void __init fpu__init_system(struct cpuinfo_x86 *c)
{
- fpu__init_system_early_generic(c);
+ if (c)
+ fpu__init_system_early_generic(c);
/*
* The FPU has to be operational for some of the
* later FPU init activities:
*/
- fpu__init_cpu();
+ __fpu__init_cpu();
/*
* But don't leave CR0::TS set yet, as some of the FPU setup
prev parent reply other threads:[~2015-06-27 8:19 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-27 6:25 regression: massive trouble with fpu rework Mike Galbraith
2015-06-27 8:18 ` [all better] " Mike Galbraith
2015-06-27 8:25 ` Ingo Molnar
2015-06-27 8:55 ` Mike Galbraith
2015-06-27 9:37 ` Borislav Petkov
2015-06-27 11:01 ` Mike Galbraith
2015-06-27 21:02 ` Henrique de Moraes Holschuh
2015-06-28 3:11 ` Mike Galbraith
2015-06-28 15:06 ` Henrique de Moraes Holschuh
2015-06-28 15:39 ` Mike Galbraith
2015-06-29 1:12 ` Henrique de Moraes Holschuh
2015-06-29 6:40 ` Ingo Molnar
2015-06-29 8:25 ` Mike Galbraith
2015-06-29 8:33 ` Borislav Petkov
2015-06-29 8:41 ` Mike Galbraith
2015-06-29 9:35 ` Ingo Molnar
2015-06-29 9:57 ` Borislav Petkov
2015-06-29 19:48 ` H. Peter Anvin
2015-06-30 5:14 ` Ingo Molnar
2015-06-29 12:27 ` Mike Galbraith
2015-06-29 13:09 ` Borislav Petkov
2015-06-30 5:16 ` Ingo Molnar
2015-06-30 20:22 ` H. Peter Anvin
2015-07-09 13:13 ` Henrique de Moraes Holschuh
2015-06-29 19:50 ` H. Peter Anvin
2015-06-30 5:18 ` Ingo Molnar
2015-06-30 5:24 ` [tip:x86/urgent] x86/fpu: Fix FPU related boot regression when CPUID masking BIOS feature is enabled tip-bot for Ingo Molnar
2015-06-27 8:18 ` Ingo Molnar [this message]
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=20150627081855.GA10192@gmail.com \
--to=mingo@kernel.org \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=umgwanakikbuti@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox