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-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 <=