lkml.org 
[lkml]   [2015]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 153/208] x86/fpu: Enumerate xfeature bits
    Date
    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: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    arch/x86/include/asm/fpu/xstate.h | 38 ++++++++++++++++++++++++++------------
    1 file changed, 26 insertions(+), 12 deletions(-)

    diff --git a/arch/x86/include/asm/fpu/xstate.h b/arch/x86/include/asm/fpu/xstate.h
    index 2f2ed322263f..9b2869dea490 100644
    --- a/arch/x86/include/asm/fpu/xstate.h
    +++ b/arch/x86/include/asm/fpu/xstate.h
    @@ -4,25 +4,39 @@
    #include <linux/types.h>
    #include <asm/processor.h>

    -#define XSTATE_CPUID 0x0000000d
    -
    -#define XSTATE_FP 0x1
    -#define XSTATE_SSE 0x2
    -#define XSTATE_YMM 0x4
    -#define XSTATE_BNDREGS 0x8
    -#define XSTATE_BNDCSR 0x10
    -#define XSTATE_OPMASK 0x20
    -#define XSTATE_ZMM_Hi256 0x40
    -#define XSTATE_Hi16_ZMM 0x80
    +/*
    + * List of XSAVE features Linux knows about:
    + */
    +enum xfeature_bit {
    + XSTATE_BIT_FP,
    + XSTATE_BIT_SSE,
    + XSTATE_BIT_YMM,
    + XSTATE_BIT_BNDREGS,
    + XSTATE_BIT_BNDCSR,
    + 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_AVX512 (XSTATE_OPMASK | XSTATE_ZMM_Hi256 | XSTATE_Hi16_ZMM)
    /* Bit 63 of XCR0 is reserved for future expansion */
    #define XSTATE_EXTEND_MASK (~(XSTATE_FPSSE | (1ULL << 63)))

    +#define XSTATE_CPUID 0x0000000d
    +
    #define FXSAVE_SIZE 512

    #define XSAVE_HDR_SIZE 64
    --
    2.1.0


    \
     
     \ /
      Last update: 2015-05-05 20:21    [W:2.156 / U:1.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site