|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv2 2/3] x86/fpu: Add a per-domain field to set the width of FIP/FDP
>>> On 23.02.16 at 12:05, <david.vrabel@xxxxxxxxxx> wrote:
> @@ -292,17 +296,17 @@ void xsave(struct vcpu *v, uint64_t mask)
> asm volatile ( "fnstenv %0" : "=m" (fpu_env) );
> ptr->fpu_sse.fip.sel = fpu_env.fcs;
> ptr->fpu_sse.fdp.sel = fpu_env.fds;
> - word_size = 4;
> + fip_width = 4;
> }
> + else
> + fip_width = 8;
> }
> else
> {
> XSAVE("");
> - word_size = 4;
> }
> #undef XSAVE
> - if ( word_size >= 0 )
> - ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] = word_size;
> + ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] = fip_width;
> }
There's actually a pre-existing bug here that I think should get
fixed at once: The 64-bit save path avoided to update
ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] when FPU state
didn't get saved (by setting word_size to -1), which continues to be
the case due to patch 1's changes. The 32-bit code path violated
this even before your change. I.e. the last else visible above
should get extended to return when !(mask & XSTATE_FP).
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |