[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] X86: Fix vcpu xsave bug
Jan Beulich wrote: >>>> On 18.11.13 at 13:24, "Liu, Jinsong" <jinsong.liu@xxxxxxxxx> wrote: >> Jan Beulich wrote: >>>>>> On 18.11.13 at 11:35, "Liu, Jinsong" <jinsong.liu@xxxxxxxxx> >>>>>> wrote: >>>> Jan Beulich wrote: >>>>>>>> On 15.11.13 at 17:55, "Liu, Jinsong" <jinsong.liu@xxxxxxxxx> >>>>>>>> wrote: >>>>>> @@ -257,22 +257,29 @@ void vcpu_restore_fpu_lazy(struct vcpu *v) >>>>>> */ void vcpu_save_fpu(struct vcpu *v) >>>>>> { >>>>>> - if ( !v->fpu_dirtied ) >>>>>> - return; >>>>>> - >>>>> >>>>> And the - afaict - the only changed needed to this function is >>>>> the deletion above. >>>>> >>>> >>>> If I didn't misunderstand your meaning, it can not only delete >>>> these 2 lines, say, when (!v->fpu_dirtied) and in old platform >>>> that do fpu_fxsave/fpu_fsave? >>> >>> Sorry, I don't understand what you're asking. >>> >> >> The problem is I don't understand your last comments: >> 'And the - afaict - the only changed needed to this function is the >> deletion above.' >> >> Seems some misunderstanding here :) >> So would you please give me the code of your thought based on the >> patch below? > > void vcpu_save_fpu(struct vcpu *v) > { > ASSERT(!is_idle_vcpu(v)); > > /* This can happen, if a paravirtualised guest OS has set its > CR0.TS. */ clts(); > > if ( cpu_has_xsave ) > fpu_xsave(v); > else if ( !v->fpu_dirtied ) > /* nothing */; > else if ( cpu_has_fxsr ) > fpu_fxsave(v); > else > fpu_fsave(v); > > v->fpu_dirtied = 0; > stts(); > } > But that we need add logic at fpu_xsave(), like if ( v->fpu_dirtied ) { if ( v->arch.nonlazy_xstate_used ) mask = XSTATE_ALL; else mask = XSTATE_LAZY; } else { if ( v->arch.nonlazy_xstate_used ) mask = XSTATE_NONLAZY; else mask = 0; } xsave(v, mask); This way (new vcpu_save_fpu + new fpu_xsave) is some obscure, and calling fpu_xsave may do nothing. So how about keep old patch, use 'mask' to directly tell fpu_xsave what we want it to save? Thanks, Jinsong _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |