diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/include/asm/fpu/internal.h | 30 | ||||
-rw-r--r-- | arch/x86/include/asm/fpu/xstate.h | 20 | ||||
-rw-r--r-- | arch/x86/kernel/fpu/core.c | 4 | ||||
-rw-r--r-- | arch/x86/kernel/fpu/xstate.c | 28 | ||||
-rw-r--r-- | arch/x86/mm/mpx.c | 2 |
5 files changed, 38 insertions, 46 deletions
diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h index a1810eb39afa..f23ea10d3a1f 100644 --- a/arch/x86/include/asm/fpu/internal.h +++ b/arch/x86/include/asm/fpu/internal.h @@ -133,57 +133,57 @@ extern void fpstate_sanitize_xstate(struct fpu *fpu); err; \ }) -static inline int fsave_user(struct i387_fsave_struct __user *fx) +static inline int copy_fregs_to_user(struct i387_fsave_struct __user *fx) { return user_insn(fnsave %[fx]; fwait, [fx] "=m" (*fx), "m" (*fx)); } -static inline int fxsave_user(struct i387_fxsave_struct __user *fx) +static inline int copy_fxregs_to_user(struct i387_fxsave_struct __user *fx) { if (config_enabled(CONFIG_X86_32)) return user_insn(fxsave %[fx], [fx] "=m" (*fx), "m" (*fx)); else if (config_enabled(CONFIG_AS_FXSAVEQ)) return user_insn(fxsaveq %[fx], [fx] "=m" (*fx), "m" (*fx)); - /* See comment in fpu_fxsave() below. */ + /* See comment in copy_fxregs_to_kernel() below. */ return user_insn(rex64/fxsave (%[fx]), "=m" (*fx), [fx] "R" (fx)); } -static inline int fxrstor_checking(struct i387_fxsave_struct *fx) +static inline int copy_kernel_to_fxregs(struct i387_fxsave_struct *fx) { if (config_enabled(CONFIG_X86_32)) return check_insn(fxrstor %[fx], "=m" (*fx), [fx] "m" (*fx)); else if (config_enabled(CONFIG_AS_FXSAVEQ)) return check_insn(fxrstorq %[fx], "=m" (*fx), [fx] "m" (*fx)); - /* See comment in fpu_fxsave() below. */ + /* See comment in copy_fxregs_to_kernel() below. */ return check_insn(rex64/fxrstor (%[fx]), "=m" (*fx), [fx] "R" (fx), "m" (*fx)); } -static inline int fxrstor_user(struct i387_fxsave_struct __user *fx) +static inline int copy_user_to_fxregs(struct i387_fxsave_struct __user *fx) { if (config_enabled(CONFIG_X86_32)) return user_insn(fxrstor %[fx], "=m" (*fx), [fx] "m" (*fx)); else if (config_enabled(CONFIG_AS_FXSAVEQ)) return user_insn(fxrstorq %[fx], "=m" (*fx), [fx] "m" (*fx)); - /* See comment in fpu_fxsave() below. */ + /* See comment in copy_fxregs_to_kernel() below. */ return user_insn(rex64/fxrstor (%[fx]), "=m" (*fx), [fx] "R" (fx), "m" (*fx)); } -static inline int frstor_checking(struct i387_fsave_struct *fx) +static inline int copy_kernel_to_fregs(struct i387_fsave_struct *fx) { return check_insn(frstor %[fx], "=m" (*fx), [fx] "m" (*fx)); } -static inline int frstor_user(struct i387_fsave_struct __user *fx) +static inline int copy_user_to_fregs(struct i387_fsave_struct __user *fx) { return user_insn(frstor %[fx], "=m" (*fx), [fx] "m" (*fx)); } -static inline void fpu_fxsave(struct fpu *fpu) +static inline void copy_fxregs_to_kernel(struct fpu *fpu) { if (config_enabled(CONFIG_X86_32)) asm volatile( "fxsave %[fx]" : [fx] "=m" (fpu->state.fxsave)); @@ -230,12 +230,12 @@ static inline void fpu_fxsave(struct fpu *fpu) static inline int copy_fpregs_to_fpstate(struct fpu *fpu) { if (likely(use_xsave())) { - xsave_state(&fpu->state.xsave); + copy_xregs_to_kernel(&fpu->state.xsave); return 1; } if (likely(use_fxsr())) { - fpu_fxsave(fpu); + copy_fxregs_to_kernel(fpu); return 1; } @@ -251,11 +251,11 @@ static inline int copy_fpregs_to_fpstate(struct fpu *fpu) static inline int __copy_fpstate_to_fpregs(struct fpu *fpu) { if (use_xsave()) - return fpu_xrstor_checking(&fpu->state.xsave); + return copy_kernel_to_xregs(&fpu->state.xsave, -1); else if (use_fxsr()) - return fxrstor_checking(&fpu->state.fxsave); + return copy_kernel_to_fxregs(&fpu->state.fxsave); else - return frstor_checking(&fpu->state.fsave); + return copy_kernel_to_fregs(&fpu->state.fsave); } static inline int copy_fpstate_to_fpregs(struct fpu *fpu) diff --git a/arch/x86/include/asm/fpu/xstate.h b/arch/x86/include/asm/fpu/xstate.h index 3051280887b8..7f59480697a3 100644 --- a/arch/x86/include/asm/fpu/xstate.h +++ b/arch/x86/include/asm/fpu/xstate.h @@ -58,7 +58,7 @@ extern void update_regset_xstate_info(unsigned int size, u64 xstate_mask); * This function is called only during boot time when x86 caps are not set * up and alternative can not be used yet. */ -static inline int xsave_state_booting(struct xsave_struct *fx) +static inline int copy_xregs_to_kernel_booting(struct xsave_struct *fx) { u64 mask = -1; u32 lmask = mask; @@ -86,7 +86,7 @@ static inline int xsave_state_booting(struct xsave_struct *fx) * This function is called only during boot time when x86 caps are not set * up and alternative can not be used yet. */ -static inline int xrstor_state_booting(struct xsave_struct *fx, u64 mask) +static inline int copy_kernel_to_xregs_booting(struct xsave_struct *fx, u64 mask) { u32 lmask = mask; u32 hmask = mask >> 32; @@ -112,7 +112,7 @@ static inline int xrstor_state_booting(struct xsave_struct *fx, u64 mask) /* * Save processor xstate to xsave area. */ -static inline int xsave_state(struct xsave_struct *fx) +static inline int copy_xregs_to_kernel(struct xsave_struct *fx) { u64 mask = -1; u32 lmask = mask; @@ -151,7 +151,7 @@ static inline int xsave_state(struct xsave_struct *fx) /* * Restore processor xstate from xsave area. */ -static inline int xrstor_state(struct xsave_struct *fx, u64 mask) +static inline int copy_kernel_to_xregs(struct xsave_struct *fx, u64 mask) { int err = 0; u32 lmask = mask; @@ -177,14 +177,6 @@ static inline int xrstor_state(struct xsave_struct *fx, u64 mask) } /* - * Restore xstate context for new process during context switch. - */ -static inline int fpu_xrstor_checking(struct xsave_struct *fx) -{ - return xrstor_state(fx, -1); -} - -/* * Save xstate to user space xsave area. * * We don't use modified optimization because xrstor/xrstors might track @@ -194,7 +186,7 @@ static inline int fpu_xrstor_checking(struct xsave_struct *fx) * backward compatibility for old applications which don't understand * compacted format of xsave area. */ -static inline int xsave_user(struct xsave_struct __user *buf) +static inline int copy_xregs_to_user(struct xsave_struct __user *buf) { int err; @@ -218,7 +210,7 @@ static inline int xsave_user(struct xsave_struct __user *buf) /* * Restore xstate from user space xsave area. */ -static inline int xrestore_user(struct xsave_struct __user *buf, u64 mask) +static inline int copy_user_to_xregs(struct xsave_struct __user *buf, u64 mask) { int err = 0; struct xsave_struct *xstate = ((__force struct xsave_struct *)buf); diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c index 2ea9e2f9c486..2cb75bd40dc0 100644 --- a/arch/x86/kernel/fpu/core.c +++ b/arch/x86/kernel/fpu/core.c @@ -398,9 +398,9 @@ void fpu__drop(struct fpu *fpu) static inline void copy_init_fpstate_to_fpregs(void) { if (use_xsave()) - xrstor_state(&init_fpstate.xsave, -1); + copy_kernel_to_xregs(&init_fpstate.xsave, -1); else - fxrstor_checking(&init_fpstate.fxsave); + copy_kernel_to_fxregs(&init_fpstate.fxsave); } /* diff --git a/arch/x86/kernel/fpu/xstate.c b/arch/x86/kernel/fpu/xstate.c index 527d4bf4f304..336b3dae59ca 100644 --- a/arch/x86/kernel/fpu/xstate.c +++ b/arch/x86/kernel/fpu/xstate.c @@ -260,11 +260,11 @@ static inline int copy_fpregs_to_sigframe(struct xsave_struct __user *buf) int err; if (use_xsave()) - err = xsave_user(buf); + err = copy_xregs_to_user(buf); else if (use_fxsr()) - err = fxsave_user((struct i387_fxsave_struct __user *) buf); + err = copy_fxregs_to_user((struct i387_fxsave_struct __user *) buf); else - err = fsave_user((struct i387_fsave_struct __user *) buf); + err = copy_fregs_to_user((struct i387_fsave_struct __user *) buf); if (unlikely(err) && __clear_user(buf, xstate_size)) err = -EFAULT; @@ -314,7 +314,7 @@ int copy_fpstate_to_sigframe(void __user *buf, void __user *buf_fx, int size) return -1; /* Update the thread's fxstate to save the fsave header. */ if (ia32_fxstate) - fpu_fxsave(&tsk->thread.fpu); + copy_fxregs_to_kernel(&tsk->thread.fpu); } else { fpstate_sanitize_xstate(&tsk->thread.fpu); if (__copy_to_user(buf_fx, xsave, xstate_size)) @@ -367,23 +367,23 @@ sanitize_restored_xstate(struct task_struct *tsk, /* * Restore the extended state if present. Otherwise, restore the FP/SSE state. */ -static inline int restore_user_xstate(void __user *buf, u64 xbv, int fx_only) +static inline int copy_user_to_fpregs_zeroing(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_fpstate.xsave, init_bv); - return fxrstor_user(buf); + copy_kernel_to_xregs(&init_fpstate.xsave, init_bv); + return copy_user_to_fxregs(buf); } else { u64 init_bv = xfeatures_mask & ~xbv; if (unlikely(init_bv)) - xrstor_state(&init_fpstate.xsave, init_bv); - return xrestore_user(buf, xbv); + copy_kernel_to_xregs(&init_fpstate.xsave, init_bv); + return copy_user_to_xregs(buf, xbv); } } else if (use_fxsr()) { - return fxrstor_user(buf); + return copy_user_to_fxregs(buf); } else - return frstor_user(buf); + return copy_user_to_fregs(buf); } static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size) @@ -471,7 +471,7 @@ static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size) * state to the registers directly (with exceptions handled). */ user_fpu_begin(); - if (restore_user_xstate(buf_fx, xfeatures, fx_only)) { + if (copy_user_to_fpregs_zeroing(buf_fx, xfeatures, fx_only)) { fpu__clear(fpu); return -1; } @@ -667,13 +667,13 @@ static void setup_init_fpu_buf(void) /* * Init all the features state with header_bv being 0x0 */ - xrstor_state_booting(&init_fpstate.xsave, -1); + copy_kernel_to_xregs_booting(&init_fpstate.xsave, -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_fpstate.xsave); + copy_xregs_to_kernel_booting(&init_fpstate.xsave); } /* diff --git a/arch/x86/mm/mpx.c b/arch/x86/mm/mpx.c index ea5b367b63a9..5e20bacee210 100644 --- a/arch/x86/mm/mpx.c +++ b/arch/x86/mm/mpx.c @@ -389,7 +389,7 @@ int mpx_enable_management(struct task_struct *tsk) * directory into XSAVE/XRSTOR Save Area and enable MPX through * XRSTOR instruction. * - * xsave_state() is expected to be very expensive. Storing the bounds + * copy_xregs_to_kernel() is expected to be very expensive. Storing the bounds * directory here means that we do not have to do xsave in the unmap * path; we can just use mm->bd_addr instead. */ |