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

Reply via email to