[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] libxc: create an initial FPU state for HVM guests



El 13/10/15 a les 15.42, Ian Campbell ha escrit:
> On Tue, 2015-10-13 at 15:32 +0200, Roger Pau Monne wrote:
>> Xen always set the FPU as initialized when loading a HVM context, so
>> libxc
>> has to provide a valid FPU context when setting the CPU registers.
>>
>> Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx>
>> Cc: Jan Beulich <jbeulich@xxxxxxxx>
>> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
>> Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
>> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
>> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
>> ---
>>  tools/libxc/xc_dom_x86.c | 34 ++++++++++++++++++++++++++++++++++
>>  1 file changed, 34 insertions(+)
>>
>> diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c
>> index dd331bf..f8d580c 100644
>> --- a/tools/libxc/xc_dom_x86.c
>> +++ b/tools/libxc/xc_dom_x86.c
>> @@ -841,6 +841,23 @@ static int vcpu_hvm(struct xc_dom_image *dom)
>>          struct hvm_save_descriptor end_d;
>>          HVM_SAVE_TYPE(END) end;
>>      } bsp_ctx;
>> +    struct {
>> +        uint16_t fcw;
>> +        uint16_t fsw;
>> +        uint8_t ftw;
>> +        uint8_t rsvd1;
>> +        uint16_t fop;
>> +        union {
>> +            uint64_t addr;
>> +            struct {
>> +                uint32_t offs;
>> +                uint16_t sel;
>> +                uint16_t rsvd;
>> +            };
>> +        } fip, fdp;
>> +        uint32_t mxcsr;
>> +        uint32_t mxcsr_mask;
>> +    } *fpu_ctxt;
>>      uint8_t *full_ctx = NULL;
>>      int rc;
>>  
>> @@ -908,6 +925,23 @@ static int vcpu_hvm(struct xc_dom_image *dom)
>>      /* Set the control registers. */
>>      bsp_ctx.cpu.cr0 = X86_CR0_PE | X86_CR0_ET;
>>  
>> +    /*
>> +     * XXX: Set initial FPU state.
>> +     *
>> +     * This should be removed once Xen is able to know if the
>> +     * FPU state saved is valid or not, now Xen always sets
>> +     * fpu_initialised to true regardless of the FPU state.
> 
> I suppose we aren't just doing that now because there is some complexity in
> doing so? Can that be mentioned in the commit log please.

Yes, this is the easiest way for me to unblock the push gate.

I'm going to work on fixing the CPU save/restore stuff ASAP, but it's
probably going to be a more complex patch(es) involving compatibility
layers and stuff.

I've added the following to the commit message:

This is a stop-gap measure in order to unblock OSSTest Windows 7
failures while a proper fix for the HVM CPU save/restore is being worked on.

Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.