* [RFC PATCH] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID
@ 2016-09-28 23:06 Andy Lutomirski
2016-09-30 8:32 ` David Saggiorato
2016-09-30 12:06 ` [tip:x86/urgent] " tip-bot for Andy Lutomirski
0 siblings, 2 replies; 4+ messages in thread
From: Andy Lutomirski @ 2016-09-28 23:06 UTC (permalink / raw)
To: x86
Cc: david, Borislav Petkov, Brian Gerst, linux-kernel,
Andy Lutomirski, stable, Dave Hansen, Ingo Molnar
Otherwise arch_task_struct_size == 0 and we die. While we're at it,
set X86_FEATURE_ALWAYS, too.
Cc: stable@vger.kernel.org
Cc: Dave Hansen <dave@sr71.net>
Cc: Ingo Molnar <mingo@kernel.org>
Fixes: aaeb5c01c5b ("x86/fpu, sched: Introduce CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT and use it on x86")
Reported-by: david@saggiorato.net
Signed-off-by: Andy Lutomirski <luto@kernel.org>
---
Totally untested except by the 0-day bot, since I don't have an
affected machine and QEMU can't emulate anything without CPUID.
arch/x86/kernel/cpu/common.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 809eda03c527..bcc9ccc220c9 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -804,21 +804,20 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
identify_cpu_without_cpuid(c);
/* cyrix could have cpuid enabled via c_identify()*/
- if (!have_cpuid_p())
- return;
+ if (have_cpuid_p()) {
+ cpu_detect(c);
+ get_cpu_vendor(c);
+ get_cpu_cap(c);
- cpu_detect(c);
- get_cpu_vendor(c);
- get_cpu_cap(c);
-
- if (this_cpu->c_early_init)
- this_cpu->c_early_init(c);
+ if (this_cpu->c_early_init)
+ this_cpu->c_early_init(c);
- c->cpu_index = 0;
- filter_cpuid_features(c, false);
+ c->cpu_index = 0;
+ filter_cpuid_features(c, false);
- if (this_cpu->c_bsp_init)
- this_cpu->c_bsp_init(c);
+ if (this_cpu->c_bsp_init)
+ this_cpu->c_bsp_init(c);
+ }
setup_force_cpu_cap(X86_FEATURE_ALWAYS);
fpu__init_system(c);
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [RFC PATCH] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID 2016-09-28 23:06 [RFC PATCH] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID Andy Lutomirski @ 2016-09-30 8:32 ` David Saggiorato 2016-09-30 12:06 ` [tip:x86/urgent] " tip-bot for Andy Lutomirski 1 sibling, 0 replies; 4+ messages in thread From: David Saggiorato @ 2016-09-30 8:32 UTC (permalink / raw) To: Andy Lutomirski, x86 Cc: Borislav Petkov, Brian Gerst, linux-kernel, stable, Dave Hansen, Ingo Molnar [-- Attachment #1: Type: text/plain, Size: 1891 bytes --] Tested-by: David Saggiorato <david@saggiorato.net>Le mercredi 28 septembre 2016 à 16:06 -0700, Andy Lutomirski a écrit : > Otherwise arch_task_struct_size == 0 and we die. While we're at it, > set X86_FEATURE_ALWAYS, too. > > Cc: stable@vger.kernel.org > Cc: Dave Hansen <dave@sr71.net> > Cc: Ingo Molnar <mingo@kernel.org> > Fixes: aaeb5c01c5b ("x86/fpu, sched: Introduce > CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT and use it on x86") > Reported-by: david@saggiorato.net > Signed-off-by: Andy Lutomirski <luto@kernel.org> > --- > > Totally untested except by the 0-day bot, since I don't have an > affected machine and QEMU can't emulate anything without CPUID. > > arch/x86/kernel/cpu/common.c | 23 +++++++++++------------ > 1 file changed, 11 insertions(+), 12 deletions(-) > > diff --git a/arch/x86/kernel/cpu/common.c > b/arch/x86/kernel/cpu/common.c > index 809eda03c527..bcc9ccc220c9 100644 > --- a/arch/x86/kernel/cpu/common.c > +++ b/arch/x86/kernel/cpu/common.c > @@ -804,21 +804,20 @@ static void __init early_identify_cpu(struct > cpuinfo_x86 *c) > identify_cpu_without_cpuid(c); > > /* cyrix could have cpuid enabled via c_identify()*/ > - if (!have_cpuid_p()) > - return; > + if (have_cpuid_p()) { > + cpu_detect(c); > + get_cpu_vendor(c); > + get_cpu_cap(c); > > - cpu_detect(c); > - get_cpu_vendor(c); > - get_cpu_cap(c); > - > - if (this_cpu->c_early_init) > - this_cpu->c_early_init(c); > + if (this_cpu->c_early_init) > + this_cpu->c_early_init(c); > > - c->cpu_index = 0; > - filter_cpuid_features(c, false); > + c->cpu_index = 0; > + filter_cpuid_features(c, false); > > - if (this_cpu->c_bsp_init) > - this_cpu->c_bsp_init(c); > + if (this_cpu->c_bsp_init) > + this_cpu->c_bsp_init(c); > + } > > setup_force_cpu_cap(X86_FEATURE_ALWAYS); > fpu__init_system(c); [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 859 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* [tip:x86/urgent] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID 2016-09-28 23:06 [RFC PATCH] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID Andy Lutomirski 2016-09-30 8:32 ` David Saggiorato @ 2016-09-30 12:06 ` tip-bot for Andy Lutomirski 2016-09-30 15:15 ` Borislav Petkov 1 sibling, 1 reply; 4+ messages in thread From: tip-bot for Andy Lutomirski @ 2016-09-30 12:06 UTC (permalink / raw) To: linux-tip-commits Cc: david, brgerst, peterz, dave, dvlasenk, mingo, bp, jpoimboe, hpa, luto, tglx, linux-kernel, torvalds Commit-ID: 05fb3c199bb09f5b85de56cc3ede194ac95c5e1f Gitweb: http://git.kernel.org/tip/05fb3c199bb09f5b85de56cc3ede194ac95c5e1f Author: Andy Lutomirski <luto@kernel.org> AuthorDate: Wed, 28 Sep 2016 16:06:33 -0700 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Fri, 30 Sep 2016 13:53:04 +0200 x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID Otherwise arch_task_struct_size == 0 and we die. While we're at it, set X86_FEATURE_ALWAYS, too. Reported-by: David Saggiorato <david@saggiorato.net> Tested-by: David Saggiorato <david@saggiorato.net> Signed-off-by: Andy Lutomirski <luto@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Dave Hansen <dave@sr71.net> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: stable@vger.kernel.org Fixes: aaeb5c01c5b ("x86/fpu, sched: Introduce CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT and use it on x86") Link: http://lkml.kernel.org/r/8de723afbf0811071185039f9088733188b606c9.1475103911.git.luto@kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org> --- arch/x86/kernel/cpu/common.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 809eda0..bcc9ccc 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -804,21 +804,20 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) identify_cpu_without_cpuid(c); /* cyrix could have cpuid enabled via c_identify()*/ - if (!have_cpuid_p()) - return; + if (have_cpuid_p()) { + cpu_detect(c); + get_cpu_vendor(c); + get_cpu_cap(c); - cpu_detect(c); - get_cpu_vendor(c); - get_cpu_cap(c); - - if (this_cpu->c_early_init) - this_cpu->c_early_init(c); + if (this_cpu->c_early_init) + this_cpu->c_early_init(c); - c->cpu_index = 0; - filter_cpuid_features(c, false); + c->cpu_index = 0; + filter_cpuid_features(c, false); - if (this_cpu->c_bsp_init) - this_cpu->c_bsp_init(c); + if (this_cpu->c_bsp_init) + this_cpu->c_bsp_init(c); + } setup_force_cpu_cap(X86_FEATURE_ALWAYS); fpu__init_system(c); ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [tip:x86/urgent] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID 2016-09-30 12:06 ` [tip:x86/urgent] " tip-bot for Andy Lutomirski @ 2016-09-30 15:15 ` Borislav Petkov 0 siblings, 0 replies; 4+ messages in thread From: Borislav Petkov @ 2016-09-30 15:15 UTC (permalink / raw) To: Andy Lutomirski Cc: linux-tip-commits, david, brgerst, peterz, dave, dvlasenk, mingo, jpoimboe, hpa, luto, tglx, linux-kernel, torvalds On Fri, Sep 30, 2016 at 05:06:46AM -0700, tip-bot for Andy Lutomirski wrote: > Commit-ID: 05fb3c199bb09f5b85de56cc3ede194ac95c5e1f > Gitweb: http://git.kernel.org/tip/05fb3c199bb09f5b85de56cc3ede194ac95c5e1f > Author: Andy Lutomirski <luto@kernel.org> > AuthorDate: Wed, 28 Sep 2016 16:06:33 -0700 > Committer: Ingo Molnar <mingo@kernel.org> > CommitDate: Fri, 30 Sep 2016 13:53:04 +0200 > > x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID > > Otherwise arch_task_struct_size == 0 and we die. While we're at it, > set X86_FEATURE_ALWAYS, too. ... > diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c > index 809eda0..bcc9ccc 100644 > --- a/arch/x86/kernel/cpu/common.c > +++ b/arch/x86/kernel/cpu/common.c > @@ -804,21 +804,20 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) > identify_cpu_without_cpuid(c); > > /* cyrix could have cpuid enabled via c_identify()*/ > - if (!have_cpuid_p()) > - return; > + if (have_cpuid_p()) { Let's make it even simpler: --- From: Borislav Petkov <bp@suse.de> Date: Fri, 30 Sep 2016 17:08:10 +0200 Subject: [PATCH] x86/boot: Streamline CPUID check conditional We have now: if (!have_cpuid_p()) ... if (have_cpuid_p()) ... Turn it into a good, ole if-else conditional which is much more readable. No functionality change. Signed-off-by: Borislav Petkov <bp@suse.de> --- arch/x86/kernel/cpu/common.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 9bd910a7dd0a..0a6fa6174ed8 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -800,9 +800,6 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) memset(&c->x86_capability, 0, sizeof c->x86_capability); c->extended_cpuid_level = 0; - if (!have_cpuid_p()) - identify_cpu_without_cpuid(c); - /* cyrix could have cpuid enabled via c_identify()*/ if (have_cpuid_p()) { cpu_detect(c); @@ -817,6 +814,8 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) if (this_cpu->c_bsp_init) this_cpu->c_bsp_init(c); + } else { + identify_cpu_without_cpuid(c); } setup_force_cpu_cap(X86_FEATURE_ALWAYS); -- 2.8.4 -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply. -- ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-09-30 15:15 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-09-28 23:06 [RFC PATCH] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID Andy Lutomirski 2016-09-30 8:32 ` David Saggiorato 2016-09-30 12:06 ` [tip:x86/urgent] " tip-bot for Andy Lutomirski 2016-09-30 15:15 ` Borislav Petkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox