|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] X86: Fix vcpu xsave bug
>>> 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();
}
Of course this - as much as your earlier variant - has the downside
of there being a patch consisting of just a clts()/stts(), and it would
clearly be nice to avoid that.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |