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

[Xen-changelog] Tidy up vm_assist handling.



ChangeSet 1.1396, 2005/03/30 11:57:35+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx

        Tidy up vm_assist handling.
        Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>



 linux-2.4.29-xen-sparse/arch/xen/kernel/head.S       |    1 -
 linux-2.4.29-xen-sparse/arch/xen/kernel/setup.c      |    6 ++++--
 linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S  |    1 -
 linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c |    6 ++++--
 linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c      |    8 ++++----
 linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c     |   11 ++++-------
 tools/libxc/xc_linux_build.c                         |    8 --------
 tools/libxc/xc_vmx_build.c                           |    6 ------
 xen/arch/x86/dom0_ops.c                              |    7 +++++++
 xen/arch/x86/domain.c                                |    9 +++++++++
 xen/arch/x86/domain_build.c                          |    4 ----
 xen/common/domain.c                                  |    4 ----
 xen/common/elf.c                                     |    3 ---
 xen/common/kernel.c                                  |    1 -
 xen/include/asm-ia64/config.h                        |    7 -------
 xen/include/asm-x86/mm.h                             |    8 --------
 xen/include/public/arch-x86_32.h                     |    1 +
 xen/include/public/arch-x86_64.h                     |    4 ++--
 xen/include/xen/sched.h                              |    2 --
 19 files changed, 35 insertions(+), 62 deletions(-)


diff -Nru a/linux-2.4.29-xen-sparse/arch/xen/kernel/head.S 
b/linux-2.4.29-xen-sparse/arch/xen/kernel/head.S
--- a/linux-2.4.29-xen-sparse/arch/xen/kernel/head.S    2005-03-30 07:03:14 
-05:00
+++ b/linux-2.4.29-xen-sparse/arch/xen/kernel/head.S    2005-03-30 07:03:14 
-05:00
@@ -2,7 +2,6 @@
 .section __xen_guest
     .ascii "GUEST_OS=linux,GUEST_VER=2.4,XEN_VER=3.0,VIRT_BASE=0xC0000000"
     .ascii ",LOADER=generic"
-    .ascii ",PT_MODE_WRITABLE"
     .byte  0
 
 .text
diff -Nru a/linux-2.4.29-xen-sparse/arch/xen/kernel/setup.c 
b/linux-2.4.29-xen-sparse/arch/xen/kernel/setup.c
--- a/linux-2.4.29-xen-sparse/arch/xen/kernel/setup.c   2005-03-30 07:03:14 
-05:00
+++ b/linux-2.4.29-xen-sparse/arch/xen/kernel/setup.c   2005-03-30 07:03:14 
-05:00
@@ -228,8 +228,10 @@
     blk_nohighio = 1;
 #endif
 
-    HYPERVISOR_vm_assist(VMASST_CMD_enable,
-                         VMASST_TYPE_4gb_segments);
+    HYPERVISOR_vm_assist(
+        VMASST_CMD_enable, VMASST_TYPE_4gb_segments);
+    HYPERVISOR_vm_assist(
+        VMASST_CMD_enable, VMASST_TYPE_writable_pagetables);
         
     HYPERVISOR_set_callbacks(
         __KERNEL_CS, (unsigned long)hypervisor_callback,
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S 
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S       2005-03-30 
07:03:14 -05:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/head.S       2005-03-30 
07:03:14 -05:00
@@ -4,7 +4,6 @@
 .section __xen_guest
        .ascii  "GUEST_OS=linux,GUEST_VER=2.6,XEN_VER=3.0,VIRT_BASE=0xC0000000"
        .ascii  ",LOADER=generic"
-       .ascii  ",PT_MODE_WRITABLE"
        .byte   0
 
 .text
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c 
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c      2005-03-30 
07:03:14 -05:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c      2005-03-30 
07:03:14 -05:00
@@ -1409,8 +1409,10 @@
        /* Register a call for panic conditions. */
        notifier_chain_register(&panic_notifier_list, &xen_panic_block);
 
-       HYPERVISOR_vm_assist(VMASST_CMD_enable,
-                            VMASST_TYPE_4gb_segments);
+       HYPERVISOR_vm_assist(
+               VMASST_CMD_enable, VMASST_TYPE_4gb_segments);
+       HYPERVISOR_vm_assist(
+               VMASST_CMD_enable, VMASST_TYPE_writable_pagetables);
 
        memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data));
        early_cpu_init();
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c 
b/linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c
--- a/linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c   2005-03-30 07:03:14 
-05:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/kernel/fixup.c   2005-03-30 07:03:14 
-05:00
@@ -50,8 +50,8 @@
 
     if ( !test_and_set_bit(0, &printed) )
     {
-        HYPERVISOR_vm_assist(VMASST_CMD_disable,
-                             VMASST_TYPE_4gb_segments_notify);
+        HYPERVISOR_vm_assist(
+            VMASST_CMD_disable, VMASST_TYPE_4gb_segments_notify);
 
         DP("");
         DP("***************************************************************");
@@ -79,8 +79,8 @@
 
 static int __init fixup_init(void)
 {
-    HYPERVISOR_vm_assist(VMASST_CMD_enable,
-                         VMASST_TYPE_4gb_segments_notify);
+    HYPERVISOR_vm_assist(
+        VMASST_CMD_enable, VMASST_TYPE_4gb_segments_notify);
     return 0;
 }
 __initcall(fixup_init);
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c 
b/linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c
--- a/linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c  2005-03-30 07:03:12 
-05:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/kernel/reboot.c  2005-03-30 07:03:12 
-05:00
@@ -110,18 +110,15 @@
     HYPERVISOR_shared_info = (shared_info_t *)empty_zero_page;
     clear_fixmap(FIX_SHARED_INFO);
 
-    memcpy(&suspend_record->resume_info, &xen_start_info, 
sizeof(xen_start_info));
+    memcpy(&suspend_record->resume_info, &xen_start_info,
+           sizeof(xen_start_info));
 
     HYPERVISOR_suspend(virt_to_machine(suspend_record) >> PAGE_SHIFT);
 
-    HYPERVISOR_vm_assist(VMASST_CMD_enable,
-                        VMASST_TYPE_4gb_segments);
-    HYPERVISOR_vm_assist(VMASST_CMD_enable,
-                        VMASST_TYPE_writable_pagetables);
-
     shutting_down = -1; 
 
-    memcpy(&xen_start_info, &suspend_record->resume_info, 
sizeof(xen_start_info));
+    memcpy(&xen_start_info, &suspend_record->resume_info,
+           sizeof(xen_start_info));
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
     set_fixmap_ma(FIX_SHARED_INFO, xen_start_info.shared_info);
diff -Nru a/tools/libxc/xc_linux_build.c b/tools/libxc/xc_linux_build.c
--- a/tools/libxc/xc_linux_build.c      2005-03-30 07:03:13 -05:00
+++ b/tools/libxc/xc_linux_build.c      2005-03-30 07:03:13 -05:00
@@ -22,7 +22,6 @@
     unsigned long v_kernend;
     unsigned long v_kernentry;
 
-    unsigned int use_writable_pagetables;
     unsigned int load_bsd_symtab;
 
     unsigned long symtab_addr;
@@ -88,10 +87,6 @@
     if ( rc != 0 )
         goto error_out;
 
-    if (dsi.use_writable_pagetables)
-        xc_domain_setvmassist(xc_handle, dom, VMASST_CMD_enable,
-                              VMASST_TYPE_writable_pagetables);
-
     if (dsi.load_bsd_symtab)
         loadelfsymtab(image, xc_handle, dom, NULL, &dsi);
 
@@ -579,9 +574,6 @@
     dsi->v_start = kernstart;
     if ( (p = strstr(guestinfo, "VIRT_BASE=")) != NULL )
         dsi->v_start = strtoul(p+10, &p, 0);
-
-    if ( (p = strstr(guestinfo, "PT_MODE_WRITABLE")) != NULL )
-        dsi->use_writable_pagetables = 1;
 
     if ( (p = strstr(guestinfo, "BSD_SYMTAB")) != NULL )
         dsi->load_bsd_symtab = 1;
diff -Nru a/tools/libxc/xc_vmx_build.c b/tools/libxc/xc_vmx_build.c
--- a/tools/libxc/xc_vmx_build.c        2005-03-30 07:03:14 -05:00
+++ b/tools/libxc/xc_vmx_build.c        2005-03-30 07:03:14 -05:00
@@ -27,7 +27,6 @@
     unsigned long v_kernend;
     unsigned long v_kernentry;
 
-    unsigned int use_writable_pagetables;
     unsigned int load_bsd_symtab;
 
     unsigned long symtab_addr;
@@ -198,10 +197,6 @@
     if ( rc != 0 )
         goto error_out;
 
-    if (dsi.use_writable_pagetables)
-        xc_domain_setvmassist(xc_handle, dom, VMASST_CMD_enable,
-                              VMASST_TYPE_writable_pagetables);
-
     if (dsi.load_bsd_symtab)
         loadelfsymtab(image, xc_handle, dom, NULL, &dsi);
 
@@ -708,7 +703,6 @@
     }
 
     dsi->v_start = 0x00000000;
-    dsi->use_writable_pagetables = 0;
     dsi->load_bsd_symtab = 0;
 
     dsi->v_kernstart = kernstart - LINUX_PAGE_OFFSET;
diff -Nru a/xen/arch/x86/dom0_ops.c b/xen/arch/x86/dom0_ops.c
--- a/xen/arch/x86/dom0_ops.c   2005-03-30 07:03:13 -05:00
+++ b/xen/arch/x86/dom0_ops.c   2005-03-30 07:03:13 -05:00
@@ -435,8 +435,15 @@
     memcpy(c->debugreg, 
            ed->arch.debugreg, 
            sizeof(ed->arch.debugreg));
+#if defined(__i386__)
     c->event_callback_cs     = ed->arch.event_selector;
     c->event_callback_eip    = ed->arch.event_address;
     c->failsafe_callback_cs  = ed->arch.failsafe_selector;
     c->failsafe_callback_eip = ed->arch.failsafe_address;
+#elif defined(__x86_64__)
+    c->event_callback_eip    = ed->arch.event_address;
+    c->failsafe_callback_eip = ed->arch.failsafe_address;
+    c->syscall_callback_eip  = ed->arch.syscall_address;
+#endif
+    c->vm_assist = ed->domain->vm_assist;
 }
diff -Nru a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c     2005-03-30 07:03:13 -05:00
+++ b/xen/arch/x86/domain.c     2005-03-30 07:03:13 -05:00
@@ -494,10 +494,19 @@
     for ( i = 0; i < 8; i++ )
         (void)set_debugreg(ed, i, c->debugreg[i]);
 
+#if defined(__i386__)
     ed->arch.event_selector    = c->event_callback_cs;
     ed->arch.event_address     = c->event_callback_eip;
     ed->arch.failsafe_selector = c->failsafe_callback_cs;
     ed->arch.failsafe_address  = c->failsafe_callback_eip;
+#elif defined(__x86_64__)
+    ed->arch.event_address     = c->event_callback_eip;
+    ed->arch.failsafe_address  = c->failsafe_callback_eip;
+    ed->arch.syscall_address   = c->syscall_callback_eip;
+#endif
+
+    if ( ed->eid == 0 )
+        d->vm_assist = c->vm_assist;
 
     phys_basetab = c->pt_base;
     ed->arch.guest_table = ed->arch.phys_table = mk_pagetable(phys_basetab);
diff -Nru a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c
--- a/xen/arch/x86/domain_build.c       2005-03-30 07:03:13 -05:00
+++ b/xen/arch/x86/domain_build.c       2005-03-30 07:03:13 -05:00
@@ -129,10 +129,6 @@
     if ( rc != 0 )
         return rc;
 
-    /* Set up domain options */
-    if ( dsi.use_writable_pagetables )
-        vm_assist(d, VMASST_CMD_enable, VMASST_TYPE_writable_pagetables);
-
     /* Align load address to 4MB boundary. */
     dsi.v_start &= ~((1UL<<22)-1);
 
diff -Nru a/xen/common/domain.c b/xen/common/domain.c
--- a/xen/common/domain.c       2005-03-30 07:03:14 -05:00
+++ b/xen/common/domain.c       2005-03-30 07:03:14 -05:00
@@ -358,13 +358,9 @@
     {
     case VMASST_CMD_enable:
         set_bit(type, &p->vm_assist);
-        if (vm_assist_info[type].enable)
-            (*vm_assist_info[type].enable)(p);
         return 0;
     case VMASST_CMD_disable:
         clear_bit(type, &p->vm_assist);
-        if (vm_assist_info[type].disable)
-            (*vm_assist_info[type].disable)(p);
         return 0;
     }
 
diff -Nru a/xen/common/elf.c b/xen/common/elf.c
--- a/xen/common/elf.c  2005-03-30 07:03:14 -05:00
+++ b/xen/common/elf.c  2005-03-30 07:03:14 -05:00
@@ -118,9 +118,6 @@
     {
         if ( (p = strstr(guestinfo, "VIRT_BASE=")) != NULL )
             dsi->v_start = simple_strtoul(p+10, &p, 0);
-        
-        if ( (p = strstr(guestinfo, "PT_MODE_WRITABLE")) != NULL )
-            dsi->use_writable_pagetables = 1;

_______________________________________________
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®.