In 64-bit mode, include the AMX state components in
XFEATURE_MASK_USER_SUPPORTED.

The XFD feature will be used to dynamically allocate per-task XSAVE
buffer on first use.

Signed-off-by: Chang S. Bae <[email protected]>
Reviewed-by: Len Brown <[email protected]>
Cc: [email protected]
Cc: [email protected]
---
 arch/x86/include/asm/fpu/xstate.h | 3 ++-
 arch/x86/kernel/fpu/init.c        | 8 ++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/arch/x86/include/asm/fpu/xstate.h 
b/arch/x86/include/asm/fpu/xstate.h
index d2ad69230d0e..1544a874b748 100644
--- a/arch/x86/include/asm/fpu/xstate.h
+++ b/arch/x86/include/asm/fpu/xstate.h
@@ -34,7 +34,8 @@
                                      XFEATURE_MASK_Hi16_ZMM     | \
                                      XFEATURE_MASK_PKRU | \
                                      XFEATURE_MASK_BNDREGS | \
-                                     XFEATURE_MASK_BNDCSR)
+                                     XFEATURE_MASK_BNDCSR | \
+                                     XFEATURE_MASK_XTILE)
 
 /* All currently supported supervisor features */
 #define XFEATURE_MASK_SUPERVISOR_SUPPORTED (XFEATURE_MASK_PASID)
diff --git a/arch/x86/kernel/fpu/init.c b/arch/x86/kernel/fpu/init.c
index 5e217bd6e85a..954ac4f0f761 100644
--- a/arch/x86/kernel/fpu/init.c
+++ b/arch/x86/kernel/fpu/init.c
@@ -228,8 +228,12 @@ static void __init 
fpu__init_system_xstate_size_legacy(void)
  */
 u64 __init fpu__get_supported_xfeatures_mask(void)
 {
-       return XFEATURE_MASK_USER_SUPPORTED |
-              XFEATURE_MASK_SUPERVISOR_SUPPORTED;
+       u64 mask = XFEATURE_MASK_USER_SUPPORTED | 
XFEATURE_MASK_SUPERVISOR_SUPPORTED;
+
+       if (!IS_ENABLED(CONFIG_X86_64))
+               mask &= ~(XFEATURE_MASK_XTILE);
+
+       return mask;
 }
 
 /* Legacy code to initialize eager fpu mode. */
-- 
2.17.1

Reply via email to