Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] vmx: remove CSTAR save/restore on VMX

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] vmx: remove CSTAR save/restore on VMX
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 15 May 2007 08:21:41 -0700
Delivery-date: Tue, 15 May 2007 08:24:19 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1179222363 -3600
# Node ID dc4324d3fbb0ca99734e289c95a5b73244ef7bf2
# Parent  c027880b50b44f4fa256cdf8888b435e5323fc4c
vmx: remove CSTAR save/restore on VMX

CSTAR is an unused MSR in 64-bit mode on Intel's EM64T, hence there's
no need to save/restore this MSR during context switches. Mimic real
hardware by retaining the value written for eventual guest OS reads.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
 xen/arch/x86/hvm/vmx/vmx.c         |   12 ++++++------
 xen/include/asm-x86/hvm/vmx/vmcs.h |    2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff -r c027880b50b4 -r dc4324d3fbb0 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c        Tue May 15 10:43:59 2007 +0100
+++ b/xen/arch/x86/hvm/vmx/vmx.c        Tue May 15 10:46:03 2007 +0100
@@ -88,8 +88,7 @@ static DEFINE_PER_CPU(struct vmx_msr_sta
 
 static u32 msr_index[VMX_MSR_COUNT] =
 {
-    MSR_LSTAR, MSR_STAR, MSR_CSTAR,
-    MSR_SYSCALL_MASK
+    MSR_LSTAR, MSR_STAR, MSR_SYSCALL_MASK
 };
 
 static void vmx_save_host_msrs(void)
@@ -146,7 +145,7 @@ static inline int long_mode_do_msr_read(
         break;
 
     case MSR_CSTAR:
-        msr_content = guest_msr_state->msrs[VMX_INDEX_MSR_CSTAR];
+        msr_content = v->arch.hvm_vmx.cstar;
         break;
 
     case MSR_SYSCALL_MASK:
@@ -249,7 +248,8 @@ static inline int long_mode_do_msr_write
     case MSR_CSTAR:
         if ( !is_canonical_address(msr_content) )
             goto uncanonical_address;
-        WRITE_MSR(CSTAR);
+        v->arch.hvm_vmx.cstar = msr_content;
+        break;
 
     case MSR_SYSCALL_MASK:
         WRITE_MSR(SYSCALL_MASK);
@@ -729,12 +729,12 @@ static void vmx_save_cpu_state(struct vc
     unsigned long guest_flags = guest_state->flags;
 
     data->shadow_gs = v->arch.hvm_vmx.shadow_gs;
+    data->msr_cstar = v->arch.hvm_vmx.cstar;
 
     /* save msrs */
     data->msr_flags        = guest_flags;
     data->msr_lstar        = guest_state->msrs[VMX_INDEX_MSR_LSTAR];
     data->msr_star         = guest_state->msrs[VMX_INDEX_MSR_STAR];
-    data->msr_cstar        = guest_state->msrs[VMX_INDEX_MSR_CSTAR];
     data->msr_syscall_mask = guest_state->msrs[VMX_INDEX_MSR_SYSCALL_MASK];
 #endif
 
@@ -754,9 +754,9 @@ static void vmx_load_cpu_state(struct vc
     guest_state->flags = data->msr_flags;
     guest_state->msrs[VMX_INDEX_MSR_LSTAR]        = data->msr_lstar;
     guest_state->msrs[VMX_INDEX_MSR_STAR]         = data->msr_star;
-    guest_state->msrs[VMX_INDEX_MSR_CSTAR]        = data->msr_cstar;
     guest_state->msrs[VMX_INDEX_MSR_SYSCALL_MASK] = data->msr_syscall_mask;
 
+    v->arch.hvm_vmx.cstar     = data->msr_cstar;
     v->arch.hvm_vmx.shadow_gs = data->shadow_gs;
 #endif
 
diff -r c027880b50b4 -r dc4324d3fbb0 xen/include/asm-x86/hvm/vmx/vmcs.h
--- a/xen/include/asm-x86/hvm/vmx/vmcs.h        Tue May 15 10:43:59 2007 +0100
+++ b/xen/include/asm-x86/hvm/vmx/vmcs.h        Tue May 15 10:46:03 2007 +0100
@@ -37,7 +37,6 @@ enum {
 enum {
     VMX_INDEX_MSR_LSTAR = 0,
     VMX_INDEX_MSR_STAR,
-    VMX_INDEX_MSR_CSTAR,
     VMX_INDEX_MSR_SYSCALL_MASK,
 
     VMX_MSR_COUNT
@@ -77,6 +76,7 @@ struct arch_vmx_struct {
 #ifdef __x86_64__
     struct vmx_msr_state msr_state;
     unsigned long        shadow_gs;
+    unsigned long        cstar;
 #endif
     unsigned long        efer;
     unsigned long        vmxassist_enabled:1;

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] vmx: remove CSTAR save/restore on VMX, Xen patchbot-unstable <=