We did not handle XSAVES* instructions correctly. There were issues in converting between standard and compacted format when interfacing with user-space. These issues have been corrected.
Signed-off-by: Yu-cheng Yu <[email protected]> --- arch/x86/kernel/fpu/init.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/arch/x86/kernel/fpu/init.c b/arch/x86/kernel/fpu/init.c index b5952d5..21e0d52 100644 --- a/arch/x86/kernel/fpu/init.c +++ b/arch/x86/kernel/fpu/init.c @@ -228,19 +228,11 @@ static void __init fpu__init_system_xstate_size_legacy(void) user_xstate_size = kernel_xstate_size; /* - * Quirk: we don't yet handle the XSAVES* instructions - * correctly, as we don't correctly convert between - * standard and compacted format when interfacing - * with user-space - so disable it for now. - * - * The difference is small: with recent CPUs the - * compacted format is only marginally smaller than - * the standard FPU state format. - * - * ( This is easy to backport while we are fixing - * XSAVES* support. ) + * Most recent CPUs supporting XSAVES can run 64-bit mode. + * Enable XSAVES for 64-bit. */ - setup_clear_cpu_cap(X86_FEATURE_XSAVES); + if (!config_enabled(CONFIG_X86_64)) + setup_clear_cpu_cap(X86_FEATURE_XSAVES); } /* -- 1.9.1

