From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933499AbcI1XGr (ORCPT ); Wed, 28 Sep 2016 19:06:47 -0400 Received: from mail.kernel.org ([198.145.29.136]:57252 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932539AbcI1XGi (ORCPT ); Wed, 28 Sep 2016 19:06:38 -0400 From: Andy Lutomirski To: x86@kernel.org Cc: david@saggiorato.net, Borislav Petkov , Brian Gerst , linux-kernel@vger.kernel.org, Andy Lutomirski , stable@vger.kernel.org, Dave Hansen , Ingo Molnar Subject: [RFC PATCH] x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID Date: Wed, 28 Sep 2016 16:06:33 -0700 Message-Id: <8de723afbf0811071185039f9088733188b606c9.1475103911.git.luto@kernel.org> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Cc: Ingo Molnar 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 --- 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