[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] x86/xsave: Expose xsave_cntxt_size to avoid reloading xcr0
xstate_ctxt_size(xfeature_mask) is runtime constant after boot. There is no need to reload xcr0 twice for this basic bounds check. Also annotate xfeature_mask as __read_mostly as it is only ever written once. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Keir Fraser <keir@xxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> --- xen/arch/x86/domctl.c | 3 +-- xen/arch/x86/xstate.c | 4 ++-- xen/include/asm-x86/xstate.h | 1 + 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 8f5b287..75b0522 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -1145,8 +1145,7 @@ long arch_do_domctl( ret = -EINVAL; if ( evc->size < 2 * sizeof(uint64_t) || - evc->size > 2 * sizeof(uint64_t) + - xstate_ctxt_size(xfeature_mask) ) + evc->size > 2 * sizeof(uint64_t) + xsave_cntxt_size ) goto vcpuextstate_out; receive_buf = xmalloc_bytes(evc->size); diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c index e202344..86ea244 100644 --- a/xen/arch/x86/xstate.c +++ b/xen/arch/x86/xstate.c @@ -21,10 +21,10 @@ bool_t __read_mostly cpu_has_xsaveopt; * the supported and enabled features on the processor, including the * XSAVE.HEADER. We only enable XCNTXT_MASK that we have known. */ -static u32 __read_mostly xsave_cntxt_size; +u32 __read_mostly xsave_cntxt_size; /* A 64-bit bitmask of the XSAVE/XRSTOR features supported by processor. */ -u64 xfeature_mask; +u64 __read_mostly xfeature_mask; /* Cached xcr0 for fast read */ static DEFINE_PER_CPU(uint64_t, xcr0); diff --git a/xen/include/asm-x86/xstate.h b/xen/include/asm-x86/xstate.h index 8d21349..e0abeef 100644 --- a/xen/include/asm-x86/xstate.h +++ b/xen/include/asm-x86/xstate.h @@ -39,6 +39,7 @@ #define XSTATE_NONLAZY (XSTATE_LWP | XSTATE_BNDREGS | XSTATE_BNDCSR) #define XSTATE_LAZY (XSTATE_ALL & ~XSTATE_NONLAZY) +extern u32 xsave_cntxt_size; extern u64 xfeature_mask; /* extended state save area */ -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |