Messages in this thread | | | From | "Bae, Chang Seok" <> | Subject | Re: [PATCH v3 10/21] x86/fpu/xstate: Update xstate save function to support dynamic xstate | Date | Thu, 7 Jan 2021 18:40:21 +0000 |
| |
> On Jan 7, 2021, at 17:41, Liu, Jing2 <jing2.liu@intel.com> wrote: > > static void kvm_save_current_fpu(struct fpu *fpu) { > + struct fpu *src_fpu = ¤t->thread.fpu; > + > /* > * If the target FPU state is not resident in the CPU registers, just > * memcpy() from current, else save CPU state directly to the target. > */ > - if (test_thread_flag(TIF_NEED_FPU_LOAD)) > - memcpy(&fpu->state, ¤t->thread.fpu.state, > + if (test_thread_flag(TIF_NEED_FPU_LOAD)) { > + memcpy(&fpu->state, &src_fpu->state, > fpu_kernel_xstate_min_size); > For kvm, if we assume that it does not support dynamic features until this series, > memcpy for only fpu->state is correct. > I think this kind of assumption is reasonable and we only make original xstate work. > > - else > + } else { > + if (fpu->state_mask != src_fpu->state_mask) > + fpu->state_mask = src_fpu->state_mask; > > Though dynamic feature is not supported in kvm now, this function still need > consider more things for fpu->state_mask.
Can you elaborate this? Which path might be affected by fpu->state_mask without dynamic state supported in KVM?
> I suggest that we can set it before if...else (for both cases) and not change other.
I tried a minimum change here. The fpu->state_mask value does not impact the memcpy(). So, why do we need to change it for both?
Thanks, Chang
| |