Lines Matching refs:fpstate

46 struct fpstate init_fpstate __ro_after_init;
122 if (fpu->fpstate->regs.xsave.header.xfeatures & AVX512_TRACKING_MASK) in update_avx_timestamp()
143 os_xsave(fpu->fpstate); in save_fpregs_to_fpstate()
149 fxsave(&fpu->fpstate->regs.fxsave); in save_fpregs_to_fpstate()
157 asm volatile("fnsave %[fp]; fwait" : [fp] "=m" (fpu->fpstate->regs.fsave)); in save_fpregs_to_fpstate()
158 frstor(&fpu->fpstate->regs.fsave); in save_fpregs_to_fpstate()
161 void restore_fpregs_from_fpstate(struct fpstate *fpstate, u64 mask) in restore_fpregs_from_fpstate() argument
174 : : [addr] "m" (*fpstate)); in restore_fpregs_from_fpstate()
193 xfd_update_state(fpstate); in restore_fpregs_from_fpstate()
206 os_xrstor(fpstate, mask); in restore_fpregs_from_fpstate()
209 fxrstor(&fpstate->regs.fxsave); in restore_fpregs_from_fpstate()
211 frstor(&fpstate->regs.fsave); in restore_fpregs_from_fpstate()
221 static void __fpstate_reset(struct fpstate *fpstate);
243 struct fpstate *fpstate; in fpu_alloc_guest_fpstate() local
246 size = guest_default_cfg.size + ALIGN(offsetof(struct fpstate, regs), 64); in fpu_alloc_guest_fpstate()
248 fpstate = vzalloc(size); in fpu_alloc_guest_fpstate()
249 if (!fpstate) in fpu_alloc_guest_fpstate()
253 fpstate->is_valloc = true; in fpu_alloc_guest_fpstate()
254 fpstate->is_guest = true; in fpu_alloc_guest_fpstate()
256 __fpstate_reset(fpstate); in fpu_alloc_guest_fpstate()
257 fpstate_init_user(fpstate); in fpu_alloc_guest_fpstate()
259 gfpu->fpstate = fpstate; in fpu_alloc_guest_fpstate()
283 struct fpstate *fpstate = gfpu->fpstate; in fpu_free_guest_fpstate() local
285 if (!fpstate) in fpu_free_guest_fpstate()
288 if (WARN_ON_ONCE(!fpstate->is_valloc || !fpstate->is_guest || fpstate->in_use)) in fpu_free_guest_fpstate()
291 gfpu->fpstate = NULL; in fpu_free_guest_fpstate()
292 vfree(fpstate); in fpu_free_guest_fpstate()
322 guest_fpu->fpstate->xfd = xfd; in fpu_update_guest_xfd()
323 if (guest_fpu->fpstate->in_use) in fpu_update_guest_xfd()
324 xfd_update_state(guest_fpu->fpstate); in fpu_update_guest_xfd()
343 struct fpstate *fpstate = x86_task_fpu(current)->fpstate; in fpu_sync_guest_vmexit_xfd_state() local
347 rdmsrq(MSR_IA32_XFD, fpstate->xfd); in fpu_sync_guest_vmexit_xfd_state()
348 __this_cpu_write(xfd_state, fpstate->xfd); in fpu_sync_guest_vmexit_xfd_state()
356 struct fpstate *guest_fps = guest_fpu->fpstate; in fpu_swap_kvm_fpstate()
358 struct fpstate *cur_fps = fpu->fpstate; in fpu_swap_kvm_fpstate()
367 fpu->fpstate = guest_fps; in fpu_swap_kvm_fpstate()
371 fpu->fpstate = fpu->__task_fpstate; in fpu_swap_kvm_fpstate()
375 cur_fps = fpu->fpstate; in fpu_swap_kvm_fpstate()
398 struct fpstate *kstate = gfpu->fpstate; in fpu_copy_guest_fpstate_to_uabi()
417 struct fpstate *kstate = gfpu->fpstate; in fpu_copy_uabi_to_guest_fpstate()
510 static inline void fpstate_init_fxstate(struct fpstate *fpstate) in fpstate_init_fxstate() argument
512 fpstate->regs.fxsave.cwd = 0x37f; in fpstate_init_fxstate()
513 fpstate->regs.fxsave.mxcsr = MXCSR_DEFAULT; in fpstate_init_fxstate()
519 static inline void fpstate_init_fstate(struct fpstate *fpstate) in fpstate_init_fstate() argument
521 fpstate->regs.fsave.cwd = 0xffff037fu; in fpstate_init_fstate()
522 fpstate->regs.fsave.swd = 0xffff0000u; in fpstate_init_fstate()
523 fpstate->regs.fsave.twd = 0xffffffffu; in fpstate_init_fstate()
524 fpstate->regs.fsave.fos = 0xffff0000u; in fpstate_init_fstate()
532 void fpstate_init_user(struct fpstate *fpstate) in fpstate_init_user() argument
535 fpstate_init_soft(&fpstate->regs.soft); in fpstate_init_user()
539 xstate_init_xcomp_bv(&fpstate->regs.xsave, fpstate->xfeatures); in fpstate_init_user()
542 fpstate_init_fxstate(fpstate); in fpstate_init_user()
544 fpstate_init_fstate(fpstate); in fpstate_init_user()
547 static void __fpstate_reset(struct fpstate *fpstate) in __fpstate_reset() argument
559 if (fpstate->is_guest) { in __fpstate_reset()
560 fpstate->size = guest_default_cfg.size; in __fpstate_reset()
561 fpstate->xfeatures = guest_default_cfg.features; in __fpstate_reset()
562 fpstate->xfd = 0; in __fpstate_reset()
564 fpstate->size = fpu_kernel_cfg.default_size; in __fpstate_reset()
565 fpstate->xfeatures = fpu_kernel_cfg.default_features; in __fpstate_reset()
566 fpstate->xfd = init_fpstate.xfd; in __fpstate_reset()
569 fpstate->user_size = fpu_user_cfg.default_size; in __fpstate_reset()
570 fpstate->user_xfeatures = fpu_user_cfg.default_features; in __fpstate_reset()
576 fpu->fpstate = &fpu->__fpstate; in fpstate_reset()
577 __fpstate_reset(fpu->fpstate); in fpstate_reset()
616 xstate = get_xsave_addr(&x86_task_fpu(dst)->fpstate->regs.xsave, in update_fpu_shstk()
668 memcpy(&dst_fpu->fpstate->regs, &init_fpstate.regs, in fpu_clone()
701 dst_fpu->fpstate->regs.xsave.header.xfeatures &= ~XFEATURE_MASK_PASID; in fpu_clone()
799 memcpy(&fpu->fpstate->regs, &init_fpstate.regs, init_fpstate_copy_size()); in fpu_reset_fpstate_regs()
826 os_xrstor_supervisor(fpu->fpstate); in fpu__clear_user_states()
925 cwd = fpu->fpstate->regs.fxsave.cwd; in fpu__exception_code()
926 swd = fpu->fpstate->regs.fxsave.swd; in fpu__exception_code()
928 cwd = (unsigned short)fpu->fpstate->regs.fsave.cwd; in fpu__exception_code()
929 swd = (unsigned short)fpu->fpstate->regs.fsave.swd; in fpu__exception_code()
943 mxcsr = fpu->fpstate->regs.fxsave.mxcsr; in fpu__exception_code()