[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [XEN] Revert changes to dom0 domain builder made by cset 11226.



# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxxxxx>
# Node ID 708b915caf78fdcb8ebddf0300aaa2b4b0dfbb86
# Parent  bb8d13705aaca58a9f5254e30071c2254d9c7737
[XEN] Revert changes to dom0 domain builder made by cset 11226.

We require that the dom0 domain builder still sets _PAGE_USER.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxxxxx>
---
 xen/arch/x86/domain_build.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff -r bb8d13705aac -r 708b915caf78 xen/arch/x86/domain_build.c
--- a/xen/arch/x86/domain_build.c       Tue Aug 22 15:55:43 2006 +0100
+++ b/xen/arch/x86/domain_build.c       Tue Aug 22 18:47:29 2006 +0100
@@ -66,11 +66,15 @@ static char opt_dom0_ioports_disable[200
 static char opt_dom0_ioports_disable[200] = "";
 string_param("dom0_ioports_disable", opt_dom0_ioports_disable);
 
+#if defined(__i386__)
+/* No ring-3 access in initial leaf page tables. */
 #define L1_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED)
 #define L2_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER)
-#if CONFIG_PAGING_LEVELS == 3
 #define L3_PROT (_PAGE_PRESENT)
-#elif CONFIG_PAGING_LEVELS == 4
+#elif defined(__x86_64__)
+/* Allow ring-3 access in long mode as guest cannot use ring 1. */
+#define L1_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_USER)
+#define L2_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER)
 #define L3_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER)
 #define L4_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER)
 #endif
@@ -697,7 +701,9 @@ int construct_dom0(struct domain *d,
     {
         p += strlen("HYPERCALL_PAGE=");
         hypercall_page = simple_strtoul(p, NULL, 16);
+        printk("(1) hypercall page is %#lx\n", hypercall_page);
         hypercall_page = dsi.v_start + (hypercall_page << PAGE_SHIFT);
+        printk("(2) hypercall page is %#lx dsi.v_start is %#lx\n", 
hypercall_page, dsi.v_start);
         if ( (hypercall_page < dsi.v_start) || (hypercall_page >= v_end) )
         {
             write_ptbase(current);
@@ -706,6 +712,7 @@ int construct_dom0(struct domain *d,
             return -1;
         }
 
+        printk("(3) hypercall page is %#lx\n", hypercall_page);
         hypercall_page_initialise(d, (void *)hypercall_page);
     }
 

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.