xsave
struct x86_perf_task_context_arch_lbr_xsave *xsave = cpuc->lbr_xsave;
if (!xsave) {
xsaves(&xsave->xsave, XFEATURE_MASK_LBR);
intel_pmu_store_lbr(cpuc, xsave->lbr.entries);
xrstors(&task_ctx->xsave, XFEATURE_MASK_LBR);
xsaves(&task_ctx->xsave, XFEATURE_MASK_LBR);
struct xregs_state xsave;
extern void *get_xsave_addr(struct xregs_state *xsave, int xfeature_nr);
struct xregs_state xsave;
void xsaves(struct xregs_state *xsave, u64 mask);
void xrstors(struct xregs_state *xsave, u64 mask);
__entry->xfeatures = fpu->fpstate->regs.xsave.header.xfeatures;
__entry->xcomp_bv = fpu->fpstate->regs.xsave.header.xcomp_bv;
if (fpu->fpstate->regs.xsave.header.xfeatures & AVX512_TRACKING_MASK)
fpstate->regs.xsave.header.xfeatures &= ~xfd;
ustate->xsave.header.xfeatures = XFEATURE_MASK_FPSSE;
if (ustate->xsave.header.xfeatures & ~XFEATURE_MASK_FPSSE)
if (ustate->xsave.header.xfeatures & ~xcr0)
if (WARN_ON_ONCE(ustate->xsave.header.xfeatures & kstate->xfd))
if (!(ustate->xsave.header.xfeatures & XFEATURE_MASK_PKRU))
return sizeof(init_fpstate.regs.xsave);
xstate_init_xcomp_bv(&fpstate->regs.xsave, fpstate->xfeatures);
xstate = get_xsave_addr(&x86_task_fpu(dst)->fpstate->regs.xsave,
dst_fpu->fpstate->regs.xsave.header.xfeatures &= ~XFEATURE_MASK_PASID;
fpu->fpstate->regs.xsave.header.xfeatures |= XFEATURE_MASK_FPSSE;
cetregs = get_xsave_addr(&fpu->fpstate->regs.xsave, XFEATURE_CET_USER);
struct xregs_state *xsave = &fpu->fpstate->regs.xsave;
cetregs = get_xsave_addr(xsave, XFEATURE_CET_USER);
fpu->fpstate->regs.xsave.header.xfeatures |= XFEATURE_MASK_FP;
fpregs->xsave.header.xfeatures |= XFEATURE_MASK_FPSSE;
fpregs->xsave.header.xfeatures &= mask;
struct xregs_state *xsave = &x86_task_fpu(tsk)->fpstate->regs.xsave;
__put_user(xsave->i387.swd, &fp->status) ||
u64 xcomp_bv = xsave->header.xcomp_bv;
return (void *)xsave + xfeature_get_offset(xcomp_bv, xfeature_nr);
void *get_xsave_addr(struct xregs_state *xsave, int xfeature_nr)
if (!(xsave->header.xfeatures & BIT_ULL(xfeature_nr)))
return __raw_xsave_addr(xsave, xfeature_nr);
void __user *get_xsave_addr_user(struct xregs_state __user *xsave, int xfeature_nr)
return (void __user *)xsave + xstate_offsets[xfeature_nr];
struct xregs_state *xinit = &init_fpstate.regs.xsave;
struct xregs_state *xsave = &fpstate->regs.xsave;
header.xfeatures = xsave->header.xfeatures;
copy_feature(header.xfeatures & XFEATURE_MASK_FP, &to, &xsave->i387,
&to, &xsave->i387.mxcsr, &xinit->i387.mxcsr,
&to, &xsave->i387.st_space, &xinit->i387.st_space,
sizeof(xsave->i387.st_space));
&to, &xsave->i387.xmm_space, &xinit->i387.xmm_space,
sizeof(xsave->i387.xmm_space));
membuf_zero(&to, sizeof(xsave->i387.padding));
membuf_write(&to, xstate_fx_sw_bytes, sizeof(xsave->i387.sw_reserved));
__raw_xsave_addr(xsave, xfeature),
struct xregs_state *xsave = &fpstate->regs.xsave;
xsave->i387.mxcsr = mxcsr[0];
xsave->i387.mxcsr_mask = mxcsr[1];
void *dst = __raw_xsave_addr(xsave, i);
xpkru = __raw_xsave_addr(xsave, XFEATURE_PKRU);
xsave->header.xfeatures &= XFEATURE_MASK_SUPERVISOR_ALL;
xsave->header.xfeatures |= hdr.xfeatures;
void *addr = get_xsave_addr(&fpstate->regs.xsave, xfeature);
xstate_init_xcomp_bv(&newfps->regs.xsave, newfps->xfeatures);
xstate_init_xcomp_bv(&init_fpstate.regs.xsave, init_fpstate.xfeatures);
os_xrstor_booting(&init_fpstate.regs.xsave);
static void *__raw_xsave_addr(struct xregs_state *xsave, int xfeature_nr)
static inline void xstate_init_xcomp_bv(struct xregs_state *xsave, u64 mask)
xsave->header.xcomp_bv = mask | XCOMP_BV_COMPACTED_FORMAT;
XSTATE_XSAVE(&fpstate->regs.xsave, lmask, hmask, err);
XSTATE_XRESTORE(&fpstate->regs.xsave, lmask, hmask);
XSTATE_XRESTORE(&fpstate->regs.xsave, lmask, hmask);
struct xregs_state *xstate = &fpstate->regs.xsave;
extern void __user *get_xsave_addr_user(struct xregs_state __user *xsave, int xfeature_nr);
struct xregs_state *xsave;
xsave = &vcpu->arch.guest_fpu.fpstate->regs.xsave;
save->x87_dp = xsave->i387.rdp;
save->mxcsr = xsave->i387.mxcsr;
save->x87_ftw = xsave->i387.twd;
save->x87_fsw = xsave->i387.swd;
save->x87_fcw = xsave->i387.cwd;
save->x87_fop = xsave->i387.fop;
save->x87_rip = xsave->i387.rip;
s = ((u8 *)xsave->i387.st_space) + i * 16;
memcpy(save->fpreg_xmm, xsave->i387.xmm_space, 256);
s = get_xsave_addr(xsave, XFEATURE_YMM);
xstate->xsave.header.xfeatures &= ~vcpu->arch.guest_fpu.fpstate->xfd;
struct kvm_xsave *xsave;
u.xsave = kzalloc_obj(struct kvm_xsave);
if (!u.xsave)
r = kvm_vcpu_ioctl_x86_get_xsave(vcpu, u.xsave);
if (copy_to_user(argp, u.xsave, sizeof(struct kvm_xsave)))
u.xsave = memdup_user(argp, size);
if (IS_ERR(u.xsave)) {
r = PTR_ERR(u.xsave);
r = kvm_vcpu_ioctl_x86_set_xsave(vcpu, u.xsave);
u.xsave = kzalloc(size, GFP_KERNEL);
if (!u.xsave)
if (copy_to_user(argp, u.xsave, size))
&state_data.xsave.states.as_uint64);
state_data.xsave.flags = 0;
state_data.xsave.states.legacy_x87 = 1;
state_data.xsave.states.legacy_sse = 1;
struct hv_vp_state_data_xsave xsave;
npireg_t xsave; /* copy of xstart integer value for BLOCk addressing MODE */
unsigned int xsave;
C(xsave, 26)
struct kvm_xsave *xsave;
struct kvm_xsave *xsave)
vcpu_ioctl(vcpu, KVM_GET_XSAVE, xsave);
struct kvm_xsave *xsave)
vcpu_ioctl(vcpu, KVM_GET_XSAVE2, xsave);
struct kvm_xsave *xsave)
vcpu_ioctl(vcpu, KVM_SET_XSAVE, xsave);
state->xsave = malloc(size);
vcpu_xsave2_get(vcpu, state->xsave);
state->xsave = malloc(sizeof(struct kvm_xsave));
vcpu_xsave_get(vcpu, state->xsave);
vcpu_xsave_set(vcpu, state->xsave);
free(state->xsave);
void *amx_start = (void *)tile_state->xsave + amx_offset;
vcpu_xsave_set(vcpu, tile_state->xsave);
struct kvm_xsave __attribute__((aligned(64))) xsave = { 0 };
: "=m"(xsave)
: "A"(XFEATURE_MASK_X87_AVX), "r"(&xsave), "m" (x87val)
vcpu_xsave_set(vcpu, &xsave);
compare_xsave((u8 *)&xsave, (u8 *)hva);
xstate_bv = (void *)&((uint8_t *)state->xsave->region)[512];
vcpu_xsave_set(vcpuN, state->xsave);
vcpu_xsave_set(vcpuN, state->xsave);
vcpu_xsave_set(vcpuN, state->xsave);
vcpu_xsave_set(vcpuN, state->xsave);
void *xsave;
xsave = (void *)malloc(xsave_size);
pkey_assert(xsave > 0);
iov.iov_base = xsave;
pkey_register = (u32 *)(xsave + pkey_offset);
memset(xsave, 0xCC, xsave_size);
memset(xsave, 0xCC, xsave_size);
xstate_bv = (u64 *)(xsave + 512);
memset(xsave, 0xCC, xsave_size);
memset(xsave, 0xCC, xsave_size);
free(xsave);
xsave(xbuf2, XFEATURE_MASK_XTILEDATA);
xsave(xbuf2, xstate.mask);