Commit 677b98bd authored by Ingo Molnar's avatar Ingo Molnar

x86/fpu: Enumerate xfeature bits

Transform the xstate masks into an enumerated list of xfeature bits.

This removes the hard coding of XFEATURES_NR_MAX.

Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 33588b52
...@@ -4,25 +4,39 @@ ...@@ -4,25 +4,39 @@
#include <linux/types.h> #include <linux/types.h>
#include <asm/processor.h> #include <asm/processor.h>
#define XSTATE_CPUID 0x0000000d /*
* List of XSAVE features Linux knows about:
#define XSTATE_FP 0x1 */
#define XSTATE_SSE 0x2 enum xfeature_bit {
#define XSTATE_YMM 0x4 XSTATE_BIT_FP,
#define XSTATE_BNDREGS 0x8 XSTATE_BIT_SSE,
#define XSTATE_BNDCSR 0x10 XSTATE_BIT_YMM,
#define XSTATE_OPMASK 0x20 XSTATE_BIT_BNDREGS,
#define XSTATE_ZMM_Hi256 0x40 XSTATE_BIT_BNDCSR,
#define XSTATE_Hi16_ZMM 0x80 XSTATE_BIT_OPMASK,
XSTATE_BIT_ZMM_Hi256,
XSTATE_BIT_Hi16_ZMM,
XFEATURES_NR_MAX,
};
#define XSTATE_FP (1 << XSTATE_BIT_FP)
#define XSTATE_SSE (1 << XSTATE_BIT_SSE)
#define XSTATE_YMM (1 << XSTATE_BIT_YMM)
#define XSTATE_BNDREGS (1 << XSTATE_BIT_BNDREGS)
#define XSTATE_BNDCSR (1 << XSTATE_BIT_BNDCSR)
#define XSTATE_OPMASK (1 << XSTATE_BIT_OPMASK)
#define XSTATE_ZMM_Hi256 (1 << XSTATE_BIT_ZMM_Hi256)
#define XSTATE_Hi16_ZMM (1 << XSTATE_BIT_Hi16_ZMM)
/* The highest xstate bit above (of XSTATE_Hi16_ZMM): */
#define XFEATURES_NR_MAX 8
#define XSTATE_FPSSE (XSTATE_FP | XSTATE_SSE) #define XSTATE_FPSSE (XSTATE_FP | XSTATE_SSE)
#define XSTATE_AVX512 (XSTATE_OPMASK | XSTATE_ZMM_Hi256 | XSTATE_Hi16_ZMM) #define XSTATE_AVX512 (XSTATE_OPMASK | XSTATE_ZMM_Hi256 | XSTATE_Hi16_ZMM)
/* Bit 63 of XCR0 is reserved for future expansion */ /* Bit 63 of XCR0 is reserved for future expansion */
#define XSTATE_EXTEND_MASK (~(XSTATE_FPSSE | (1ULL << 63))) #define XSTATE_EXTEND_MASK (~(XSTATE_FPSSE | (1ULL << 63)))
#define XSTATE_CPUID 0x0000000d
#define FXSAVE_SIZE 512 #define FXSAVE_SIZE 512
#define XSAVE_HDR_SIZE 64 #define XSAVE_HDR_SIZE 64
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment