Re: [tip:x86/urgent] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID

From: Borislav Petkov
Date: Fri Sep 30 2016 - 11:15:49 EST


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@xxxxxxxxxx>
> AuthorDate: Wed, 28 Sep 2016 16:06:33 -0700
> Committer: Ingo Molnar <mingo@xxxxxxxxxx>
> 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@xxxxxxx>
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@xxxxxxx>
---
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.
--