summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/include/asm/fpu/internal.h4
-rw-r--r--arch/x86/include/asm/fpu/xsave.h2
-rw-r--r--arch/x86/kernel/fpu/xsave.c26
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)
{