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

RE: [Xen-devel] [patch] Fix 64bit VMX guest crashing SMP x86_64 dom0


>-----Original Message-----
>From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx 
>[mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Keir Fraser
>Sent: Saturday, February 18, 2006 12:35 AM
>To: Li, Xin B
>Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
>Subject: Re: [Xen-devel] [patch] Fix 64bit VMX guest crashing 
>SMP x86_64 dom0
>On 17 Feb 2006, at 14:43, Li, Xin B wrote:
>> Fix 64bit VMX guest crashing SMP x86_64 dom0.
>> We found creating 64bit VMX guest on SMP x86_64 dom0 will crash the
>> system, and this is introduced when merging with the HVM tree.
>> Signed-off-by: Yunhong Jiang <yunhong.jiang@xxxxxxxxx>
>> Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx>
>I've applied a more extensive patch that moves the calls to 
>hvm_load_msrs/hvm_restore_msrs into __context_switch(). Hopefully it 
>isn't broken! :-)  The changeset is 8871.

Yes, it works well :)

>Looking at that area of the code, I wonder whether HVM guests need to 
>be calling save_segments() at all, since segment info is automatically 
>saved into the VMCS on vmexit? Even the hvm_save_segments() call seems 
>unnecessary -- all it does is save the contents of the SHADOW_GS MSR, 
>but you keep a shadow copy of that MSR which you update every time the 
>guest writes to the MSR, so surely that is not necessary? Can you try 
>testing x86_64 with the call to save_segments() made conditional on 

For SHADOW_GS MSR, it need to be kept for swapgs, which may change the
SHADOW GS MSR without causing vmexit. So we have to save the SHADOW_GS
MSR  on each context_switch.

Agree with you that HVM domain need not save_segments(), we try it on
x86_64 and it works.
Attached is the patch
        Signed-off-by: Yunhong Jiang <yunhong.jiang@xxxxxxxxx>
        Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx>

Yunhong Jiang

>  Thanks,
>  Keir
>Xen-devel mailing list

Attachment: msr.diff
Description: msr.diff

Xen-devel mailing list



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