diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/include/asm/fpu/internal.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/fpu/xsave.h | 2 | ||||
-rw-r--r-- | arch/x86/kernel/fpu/xsave.c | 26 |
3 files changed, 14 insertions, 18 deletions
diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h index 0292fcc4d441..19b7cdf73efd 100644 --- a/arch/x86/include/asm/fpu/internal.h +++ b/arch/x86/include/asm/fpu/internal.h @@ -373,9 +373,9 @@ static inline void drop_fpu(struct fpu *fpu) static inline void restore_init_xstate(void) { if (use_xsave()) - xrstor_state(init_xstate_buf, -1); + xrstor_state(&init_xstate_ctx, -1); else - fxrstor_checking(&init_xstate_buf->i387); + fxrstor_checking(&init_xstate_ctx.i387); } /* diff --git a/arch/x86/include/asm/fpu/xsave.h b/arch/x86/include/asm/fpu/xsave.h index fd564344783e..5c3ab4e17aea 100644 --- a/arch/x86/include/asm/fpu/xsave.h +++ b/arch/x86/include/asm/fpu/xsave.h @@ -50,7 +50,7 @@ extern unsigned int xstate_size; extern u64 xfeatures_mask; extern u64 xstate_fx_sw_bytes[USER_XSTATE_FX_SW_WORDS]; -extern struct xsave_struct *init_xstate_buf; +extern struct xsave_struct init_xstate_ctx; extern void xsave_init(void); extern void update_regset_xstate_info(unsigned int size, u64 xstate_mask); diff --git a/arch/x86/kernel/fpu/xsave.c b/arch/x86/kernel/fpu/xsave.c index d11b33514130..45130ba6f328 100644 --- a/arch/x86/kernel/fpu/xsave.c +++ b/arch/x86/kernel/fpu/xsave.c @@ -3,7 +3,6 @@ * * Author: Suresh Siddha <suresh.b.siddha@intel.com> */ -#include <linux/bootmem.h> #include <linux/compat.h> #include <linux/cpu.h> #include <asm/fpu/api.h> @@ -20,7 +19,7 @@ u64 xfeatures_mask; /* * Represents init state for the supported extended state. */ -struct xsave_struct *init_xstate_buf; +struct xsave_struct init_xstate_ctx; static struct _fpx_sw_bytes fx_sw_reserved, fx_sw_reserved_ia32; static unsigned int xstate_offsets[XFEATURES_NR_MAX], xstate_sizes[XFEATURES_NR_MAX]; @@ -98,7 +97,7 @@ void __sanitize_i387_state(struct task_struct *tsk) int size = xstate_sizes[feature_bit]; memcpy((void *)fx + offset, - (void *)init_xstate_buf + offset, + (void *)&init_xstate_ctx + offset, size); } @@ -325,12 +324,12 @@ static inline int restore_user_xstate(void __user *buf, u64 xbv, int fx_only) if (use_xsave()) { if ((unsigned long)buf % 64 || fx_only) { u64 init_bv = xfeatures_mask & ~XSTATE_FPSSE; - xrstor_state(init_xstate_buf, init_bv); + xrstor_state(&init_xstate_ctx, init_bv); return fxrstor_user(buf); } else { u64 init_bv = xfeatures_mask & ~xbv; if (unlikely(init_bv)) - xrstor_state(init_xstate_buf, init_bv); + xrstor_state(&init_xstate_ctx, init_bv); return xrestore_user(buf, xbv); } } else if (use_fxsr()) { @@ -574,12 +573,10 @@ static void setup_init_fpu_buf(void) on_boot_cpu = 0; /* - * Setup init_xstate_buf to represent the init state of + * Setup init_xstate_ctx to represent the init state of * all the features managed by the xsave */ - init_xstate_buf = alloc_bootmem_align(xstate_size, - __alignof__(struct xsave_struct)); - fx_finit(&init_xstate_buf->i387); + fx_finit(&init_xstate_ctx.i387); if (!cpu_has_xsave) return; @@ -588,21 +585,20 @@ static void setup_init_fpu_buf(void) print_xstate_features(); if (cpu_has_xsaves) { - init_xstate_buf->header.xcomp_bv = - (u64)1 << 63 | xfeatures_mask; - init_xstate_buf->header.xfeatures = xfeatures_mask; + init_xstate_ctx.header.xcomp_bv = (u64)1 << 63 | xfeatures_mask; + init_xstate_ctx.header.xfeatures = xfeatures_mask; } /* * Init all the features state with header_bv being 0x0 */ - xrstor_state_booting(init_xstate_buf, -1); + xrstor_state_booting(&init_xstate_ctx, -1); /* * Dump the init state again. This is to identify the init state * of any feature which is not represented by all zero's. */ - xsave_state_booting(init_xstate_buf); + xsave_state_booting(&init_xstate_ctx); } static enum { AUTO, ENABLE, DISABLE } eagerfpu = AUTO; @@ -727,7 +723,7 @@ void xsave_init(void) /* * setup_init_fpu_buf() is __init and it is OK to call it here because - * init_xstate_buf will be unset only once during boot. + * init_xstate_ctx will be unset only once during boot. */ void __init_refok eager_fpu_init(void) { |