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] [XEN] Compat-mode dom0 always provides co

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEN] Compat-mode dom0 always provides compat vcpu_guest_context structs.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 28 Feb 2007 12:20:26 -0800
Delivery-date: Wed, 28 Feb 2007 12:22:10 -0800
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 Tim Deegan <Tim.Deegan@xxxxxxxxxxxxx>
# Date 1172668756 0
# Node ID f3271ae6a485cb85516f06048ba7a6708476d654
# Parent  5943a8314d699de56ee89bd67c0ecf615e0e4db6
[XEN] Compat-mode dom0 always provides compat vcpu_guest_context structs.
Update arch_set_info_guest to do the right thing.
Signed-off-by: Tim Deegan <Tim.Deegan@xxxxxxxxxxxxx>
---
 xen/arch/x86/domain.c |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff -r 5943a8314d69 -r f3271ae6a485 xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c     Wed Feb 28 13:17:27 2007 +0000
+++ b/xen/arch/x86/domain.c     Wed Feb 28 13:19:16 2007 +0000
@@ -497,18 +497,26 @@ int arch_set_info_guest(
     struct vcpu *v, vcpu_guest_context_u c)
 {
     struct domain *d = v->domain;
+    unsigned long cr3_pfn = INVALID_MFN;
+    unsigned long flags;
+    int i, rc, compat;
+
+    /* The context is a compat-mode one if *either* the calling domain 
+     * or the target domain is compat-mode: if the caller is compat, it
+     * won't know to make a native context, and if the target is compat,
+     * the tools will have made a compat-mode context for it. */
+    compat = IS_COMPAT(d) || IS_COMPAT(current->domain);
+
 #ifdef CONFIG_COMPAT
-#define c(fld) (!IS_COMPAT(d) ? (c.nat->fld) : (c.cmp->fld))
+#define c(fld) (compat ? (c.cmp->fld) : (c.nat->fld))
 #else
 #define c(fld) (c.nat->fld)
 #endif
-    unsigned long cr3_pfn = INVALID_MFN;
-    unsigned long flags = c(flags);
-    int i, rc;
+    flags = c(flags);
 
     if ( !is_hvm_vcpu(v) )
     {
-        if ( !IS_COMPAT(d) )
+        if ( !compat )
         {
             fixup_guest_stack_selector(d, c.nat->user_regs.ss);
             fixup_guest_stack_selector(d, c.nat->kernel_ss);
@@ -560,7 +568,7 @@ int arch_set_info_guest(
     if ( (flags & VGCF_in_kernel) || is_hvm_vcpu(v)/*???*/ )
         v->arch.flags |= TF_kernel_mode;
 
-    if ( !IS_COMPAT(v->domain) )
+    if ( !compat )
         memcpy(&v->arch.guest_context, c.nat, sizeof(*c.nat));
 #ifdef CONFIG_COMPAT
     else
@@ -602,7 +610,7 @@ int arch_set_info_guest(
 
     if ( !is_hvm_vcpu(v) )
     {
-        if ( !IS_COMPAT(d) )
+        if ( !compat )
             rc = (int)set_gdt(v, c.nat->gdt_frames, c.nat->gdt_ents);
 #ifdef CONFIG_COMPAT
         else
@@ -620,7 +628,7 @@ int arch_set_info_guest(
         if ( rc != 0 )
             return rc;
 
-        if ( !IS_COMPAT(d) )
+        if ( !compat )
         {
             cr3_pfn = gmfn_to_mfn(d, xen_cr3_to_pfn(c.nat->ctrlreg[3]));
 

_______________________________________________
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] [XEN] Compat-mode dom0 always provides compat vcpu_guest_context structs., Xen patchbot-unstable <=