[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V5] x86/xsaves: fix overwriting between non-lazy/lazy xsaves
On Tue, Mar 22, 2016 at 08:34:33AM -0600, Jan Beulich wrote: > >>> On 18.03.16 at 04:01, <shuai.ruan@xxxxxxxxxxxxxxx> wrote: > > * Copy legacy XSAVE area, to avoid complications with CPUID > > * leaves 0 and 1 in the loop below. > > */ > > memcpy(xsave, src, FXSAVE_SIZE); > > > > - /* Set XSTATE_BV and XCOMP_BV. */ > > + /* Set XSTATE_BV. */ > > xsave->xsave_hdr.xstate_bv = xstate_bv; > > - xsave->xsave_hdr.xcomp_bv = v->arch.xcr0_accum | > > XSTATE_COMPACTION_ENABLED; > > setup_xstate_comp(xstate_comp_offsets, xstate_bv); > > I see you set xcomp_bv (and hence the compaction bit) in xrstor() > now, but afaict that doesn't allow you to completely drop initializing > the field here, as the code there looks at the compaction bit. > > > + else > > + XRSTOR("0x48,","0x0f,0xae,0x2f"); /* xrstor */ > > At this point, what guarantees that xcomp_bv is zero, no matter > where the state to be loaded originates from? I think at least in > arch_set_info_guest(), hvm_load_cpu_ctxt(), and > hvm_vcpu_reset_state() you went too far deleting code, and you > really need to keep the storing of zero there. Did you draw, just > for yourself, mentally or on a sheet of paper, a diagram illustrating > the various state transitions? > For above two comments. The patch is base on [v4]x86/xsaves: calculate the xstate_comp_offsets base on xstate_bv and I answer your question on why caculate xstate_comp_offset based on xstate_bv in previous thread. If that is right, drop initializing xcomp_bv is ok. Now xcomp_bv can guarantee to be zero for arch_set_info_guest() and hvm_load_cpu_ctxt(). If the drop is wrong (due to my misunderstand of the SDM), I will change the if () here. For hvm_vcpu_reset_state(), we should depend on whether xsaves is used to decide whether to init xcomp_bv or not. And currently we use xcr0_accum to indicate the use of xsaves, when hvm_vcpu_reset_state() is called , can vcpu->xcr0_accum indicate using of xsaves ? I think in hvm_vcpu_reset_state(), we should leave xcomp_bv zero. > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |