diff --git a/arch/x86/kernel/fpu/init.c b/arch/x86/kernel/fpu/init.c index fe8cce7fc5ea..9da740e236d5 100644 --- a/arch/x86/kernel/fpu/init.c +++ b/arch/x86/kernel/fpu/init.c @@ -284,42 +284,57 @@ static int __init no_387(char *s) setup_clear_cpu_cap(X86_FEATURE_FPU); return 1; } - __setup("no387", no_387); -static int __init x86_xsave_setup(char *s) +/* + * Disable all xstate CPU features: + */ +static int __init x86_noxsave_setup(char *s) { if (strlen(s)) return 0; + setup_clear_cpu_cap(X86_FEATURE_XSAVE); setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT); setup_clear_cpu_cap(X86_FEATURE_XSAVES); setup_clear_cpu_cap(X86_FEATURE_AVX); setup_clear_cpu_cap(X86_FEATURE_AVX2); + return 1; } -__setup("noxsave", x86_xsave_setup); +__setup("noxsave", x86_noxsave_setup); -static int __init x86_xsaveopt_setup(char *s) +/* + * Disable the XSAVEOPT instruction specifically: + */ +static int __init x86_noxsaveopt_setup(char *s) { setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT); + return 1; } -__setup("noxsaveopt", x86_xsaveopt_setup); +__setup("noxsaveopt", x86_noxsaveopt_setup); -static int __init x86_xsaves_setup(char *s) +/* + * Disable the XSAVES instruction: + */ +static int __init x86_noxsaves_setup(char *s) { setup_clear_cpu_cap(X86_FEATURE_XSAVES); + return 1; } -__setup("noxsaves", x86_xsaves_setup); +__setup("noxsaves", x86_noxsaves_setup); -static int __init x86_fxsr_setup(char *s) +/* + * Disable FX save/restore and SSE support: + */ +static int __init x86_nofxsr_setup(char *s) { setup_clear_cpu_cap(X86_FEATURE_FXSR); setup_clear_cpu_cap(X86_FEATURE_FXSR_OPT); setup_clear_cpu_cap(X86_FEATURE_XMM); + return 1; } -__setup("nofxsr", x86_fxsr_setup); - +__setup("nofxsr", x86_nofxsr_setup);