x86/fpu, x86/mm/pkeys: Add PKRU xsave fields and data structures
[cascardo/linux.git] / arch / x86 / include / asm / fpu / types.h
index aad3181..36b90bb 100644 (file)
@@ -109,6 +109,7 @@ enum xfeature {
        XFEATURE_ZMM_Hi256,
        XFEATURE_Hi16_ZMM,
        XFEATURE_PT_UNIMPLEMENTED_SO_FAR,
+       XFEATURE_PKRU,
 
        XFEATURE_MAX,
 };
@@ -121,6 +122,7 @@ enum xfeature {
 #define XFEATURE_MASK_OPMASK           (1 << XFEATURE_OPMASK)
 #define XFEATURE_MASK_ZMM_Hi256                (1 << XFEATURE_ZMM_Hi256)
 #define XFEATURE_MASK_Hi16_ZMM         (1 << XFEATURE_Hi16_ZMM)
+#define XFEATURE_MASK_PKRU             (1 << XFEATURE_PKRU)
 
 #define XFEATURE_MASK_FPSSE            (XFEATURE_MASK_FP | XFEATURE_MASK_SSE)
 #define XFEATURE_MASK_AVX512           (XFEATURE_MASK_OPMASK \
@@ -213,6 +215,15 @@ struct avx_512_hi16_state {
        struct reg_512_bit              hi16_zmm[16];
 } __packed;
 
+/*
+ * State component 9: 32-bit PKRU register.  The state is
+ * 8 bytes long but only 4 bytes is used currently.
+ */
+struct pkru_state {
+       u32                             pkru;
+       u32                             pad;
+} __packed;
+
 struct xstate_header {
        u64                             xfeatures;
        u64                             xcomp_bv;