WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: vmcs GUEST_CR0 unused?

To: Robert Phillips <rsp.vi.xen@xxxxxxxxx>
Subject: [Xen-devel] Re: vmcs GUEST_CR0 unused?
From: Anthony Liguori <aliguori@xxxxxxxxxxxxxxxxxx>
Date: Thu, 01 Feb 2007 16:06:11 -0600
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 06 Feb 2007 01:32:20 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <fc060d960702011349w37c18be3j3791a19540fd5402@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <fc060d960702011349w37c18be3j3791a19540fd5402@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5.0.9 (X11/20070103)
Robert Phillips wrote:
Why does the vmx code maintain hvm_vmx.cpu_cr0?

The implementation of hvm_funcs.get_guest_ctrl_reg() would be awkward since you would have make sure to load the vmcs for the VCPU you're interested in on the current PCPU before attempting to vmread(GUEST_CR0).

Regards,

Anthony Liguori

I see code in vmx.c that keeps v->arch.hvm_vmx.cpu_cr0 up to date, and each change is faithfully written to the vmcs using __vmwrite(GUEST_CR0, ...) I also see that the CR0_GUEST_HOST_MASK is always all ones (~0UL), set in construct_vmcs() and never modified.

However according to section 2.6.6 of the VT specification the value in GUEST_CR0 is irrelevant if CR0_GUEST_HOST_MASK is all ones. When the guest reads CR0, the mask will force it to see only the bits in CR0_READ_SHADOW.
When the guest modifies CR0, the mask will force a vmexit.

So the vmcs value in GUEST_CR0 is never visible to the guest and never really needed by the host.

It looks to me like the code that maintains hvm_vmx.cpu_cr0 and GUEST_CR0 is superfluous.

The same argument applies to hvm_vmx.cup_cr4 and GUEST_CR4.

Am I missing something?

--
--------------------------------------------------------------------
Robert S. Phillips                          Virtual Iron Software
rphillips@xxxxxxxxxxxxxxx <mailto:rphillips@xxxxxxxxxxxxxxx> Tower 1, Floor 2
978-849-1220                                 900 Chelmsford Street
                                                    Lowell, MA 01851


------------------------------------------------------------------------

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>