Patch "x86/fpu: Parse clearcpuid= as early XSAVE argument" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
x86/fpu: Parse clearcpuid= as early XSAVE argument
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
x86-fpu-parse-clearcpuid-as-early-xsave-argument.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
0c2a3913d6f50503f7c59d83a6219e39508cc898Mon Sep 17 00:00:00 2001
From: Andi Kleen <[email protected]>
Date: Fri, 13 Oct 2017 14:56:43 -0700
Subject: x86/fpu: Parse clearcpuid= as early XSAVE argument
From: Andi Kleen <[email protected]>
commit 0c2a3913d6f50503f7c59d83a6219e39508cc898 upstream.
With a followon patch we want to make clearcpuid affect the XSAVE configuration. But xsave is currently initialized before arguments are parsed. Move the clearcpuid= parsing into the special early xsave argument parsing code.
Since clearcpuid= contains a = we need to keep the old __setup around as a dummy, otherwise it would end up as a environment variable in init's environment.
--- arch/x86/kernel/cpu/common.c | 16 +++++++--------- arch/x86/kernel/fpu/init.c | 11 +++++++++++ 2 files changed, 18 insertions(+), 9 deletions(-)
arch/x86/kernel/cpu/common.c +7 -9
@@ -1301,18 +1301,16 @@ void print_cpu_info(struct cpuinfo_x86 *pr_cont (")\n" ); } -static __init int setup_disablecpuid (char *arg) +/* +* clearcpuid= was already parsed in fpu__init_parse_early_param. +* But we need to keep a dummy __setup around otherwise it would +* show up as an environment variable for init. +*/ +static __init int setup_clearcpuid (char *arg) { -int bit; - -if (get_option (&arg, &bit) && bit >=0 && bit <NCAPINTS *32 ) -setup_clear_cpu_cap (bit); -else -return 0 ; -return 1 ; } -__setup ("clearcpuid=" , setup_disablecpuid); +__setup ("clearcpuid=" , setup_clearcpuid);#ifdef CONFIG_X86_64 DEFINE_PER_CPU_FIRST(union irq_stack_union,
arch/x86/kernel/fpu/init.c +11 -0
@@ -249,6 +249,10 @@ static void __init fpu__init_system_ctx_*/ static void __init fpu__init_parse_early_param (void ) { +char arg[32 ]; +char *argptr = arg; +int bit; +if (cmdline_find_option_bool (boot_command_line,"no387" ))setup_clear_cpu_cap (X86_FEATURE_FPU );
@@ -266,6 +270,13 @@ static void __init fpu__init_parse_earlyif (cmdline_find_option_bool (boot_command_line,"noxsaves" ))setup_clear_cpu_cap (X86_FEATURE_XSAVES ); + +if (cmdline_find_option (boot_command_line,"clearcpuid" , arg, +sizeof (arg)) && +get_option (&argptr, &bit) && + bit >=0 && + bit <NCAPINTS *32 ) +setup_clear_cpu_cap (bit); }/*
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/bitops-add-clear-set_bit32-to-linux-bitops.h.patch queue-4.14/x86-fpu-remove-the-explicit-clearing-of-xsave-dependent-features.patch queue-4.14/x86-cpuid-add-generic-table-for-cpuid-dependencies.patch queue-4.14/x86-cpuid-prevent-out-of-bound-access-in-do_clear_cpu_cap.patch queue-4.14/x86-fpu-parse-clearcpuid-as-early-xsave-argument.patch queue-4.14/x86-fpu-make-xsave-check-the-base-cpuid-features-before-enabling.patch