xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1 of 2] xen/hvm: Add get_shadow_gs_base() wrapper function
@ 2012-04-25 18:38 Aravindh Puthiyaparambil
  2012-04-25 18:38 ` [PATCH 2 of 2] [v3] xen/x86: Add FS and GS base to HVM VCPU context Aravindh Puthiyaparambil
  0 siblings, 1 reply; 5+ messages in thread
From: Aravindh Puthiyaparambil @ 2012-04-25 18:38 UTC (permalink / raw)
  To: xen-devel; +Cc: keir, JBeulich

Add a wrapper function to the HVM function table that returns the shadow GS base.

Signed-off-by: Aravindh Puthiyaparambil <aravindh@virtuata.com>

diff -r 6ef297a3761f -r be41f3b599d9 xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c	Mon Apr 23 15:16:34 2012 -0700
+++ b/xen/arch/x86/hvm/svm/svm.c	Wed Apr 25 11:35:29 2012 -0700
@@ -645,6 +645,13 @@ static void svm_set_segment_register(str
         svm_vmload(vmcb);
 }
 
+static unsigned long svm_get_shadow_gs_base(struct vcpu *v)
+{
+    struct vmcb_struct *vmcb = v->arch.hvm_svm.vmcb;
+
+    return vmcb->kerngsbase;
+}
+
 static int svm_set_guest_pat(struct vcpu *v, u64 gpat)
 {
     struct vmcb_struct *vmcb = v->arch.hvm_svm.vmcb;
@@ -1983,6 +1990,7 @@ static struct hvm_function_table __read_
     .guest_x86_mode       = svm_guest_x86_mode,
     .get_segment_register = svm_get_segment_register,
     .set_segment_register = svm_set_segment_register,
+    .get_shadow_gs_base   = svm_get_shadow_gs_base,
     .update_host_cr3      = svm_update_host_cr3,
     .update_guest_cr      = svm_update_guest_cr,
     .update_guest_efer    = svm_update_guest_efer,
diff -r 6ef297a3761f -r be41f3b599d9 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c	Mon Apr 23 15:16:34 2012 -0700
+++ b/xen/arch/x86/hvm/vmx/vmx.c	Wed Apr 25 11:35:29 2012 -0700
@@ -942,6 +942,15 @@ static void vmx_set_segment_register(str
     vmx_vmcs_exit(v);
 }
 
+static unsigned long vmx_get_shadow_gs_base(struct vcpu *v)
+{
+#ifdef __x86_64__
+    return v->arch.hvm_vmx.shadow_gs;
+#else
+    return 0;
+#endif
+}
+
 static int vmx_set_guest_pat(struct vcpu *v, u64 gpat)
 {
     if ( !cpu_has_vmx_pat || !paging_mode_hap(v->domain) )
@@ -1522,6 +1531,7 @@ static struct hvm_function_table __read_
     .guest_x86_mode       = vmx_guest_x86_mode,
     .get_segment_register = vmx_get_segment_register,
     .set_segment_register = vmx_set_segment_register,
+    .get_shadow_gs_base   = vmx_get_shadow_gs_base,
     .update_host_cr3      = vmx_update_host_cr3,
     .update_guest_cr      = vmx_update_guest_cr,
     .update_guest_efer    = vmx_update_guest_efer,
diff -r 6ef297a3761f -r be41f3b599d9 xen/include/asm-x86/hvm/hvm.h
--- a/xen/include/asm-x86/hvm/hvm.h	Mon Apr 23 15:16:34 2012 -0700
+++ b/xen/include/asm-x86/hvm/hvm.h	Wed Apr 25 11:35:29 2012 -0700
@@ -106,6 +106,7 @@ struct hvm_function_table {
                                  struct segment_register *reg);
     void (*set_segment_register)(struct vcpu *v, enum x86_segment seg,
                                  struct segment_register *reg);
+    unsigned long (*get_shadow_gs_base)(struct vcpu *v);
 
     /* 
      * Re-set the value of CR3 that Xen runs on when handling VM exits.
@@ -305,6 +306,11 @@ hvm_set_segment_register(struct vcpu *v,
     hvm_funcs.set_segment_register(v, seg, reg);
 }
 
+static inline unsigned long hvm_get_shadow_gs_base(struct vcpu *v)
+{
+    return hvm_funcs.get_shadow_gs_base(v);
+}
+
 #define is_viridian_domain(_d)                                             \
  (is_hvm_domain(_d) && ((_d)->arch.hvm_domain.params[HVM_PARAM_VIRIDIAN]))

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-04-27 15:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-25 18:38 [PATCH 1 of 2] xen/hvm: Add get_shadow_gs_base() wrapper function Aravindh Puthiyaparambil
2012-04-25 18:38 ` [PATCH 2 of 2] [v3] xen/x86: Add FS and GS base to HVM VCPU context Aravindh Puthiyaparambil
2012-04-27 12:49   ` Jan Beulich
2012-04-27 15:02     ` Keir Fraser
2012-04-27 15:23       ` Aravindh Puthiyaparambil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).