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

[Xen-changelog] Get rid of suspend record, start info holds all the info now.



# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID 89e8a2144c1d6acf7904e8c7719ae79d36591e27
# Parent  5d8b2c258b2689e76d7bfbaf5c5ca09f25b7d40c
Get rid of suspend record, start info holds all the info now.
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>

diff -r 5d8b2c258b26 -r 89e8a2144c1d 
linux-2.6-xen-sparse/arch/xen/kernel/reboot.c
--- a/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c     Mon Sep  5 14:48:44 2005
+++ b/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c     Mon Sep  5 14:53:39 2005
@@ -12,7 +12,6 @@
 #include <asm-xen/evtchn.h>
 #include <asm-xen/hypervisor.h>
 #include <asm-xen/xen-public/dom0_ops.h>
-#include <asm-xen/linux-public/suspend.h>
 #include <asm-xen/queues.h>
 #include <asm-xen/xenbus.h>
 #include <asm-xen/ctrl_if.h>
@@ -69,7 +68,6 @@
 static int __do_suspend(void *ignore)
 {
     int i, j;
-    suspend_record_t *suspend_record;
 
 #ifdef CONFIG_XEN_USB_FRONTEND
     extern void usbif_resume();
@@ -111,10 +109,6 @@
        return -EOPNOTSUPP;
     }
 #endif
-
-    suspend_record = (suspend_record_t *)__get_free_page(GFP_KERNEL);
-    if ( suspend_record == NULL )
-        goto out;
 
     preempt_disable();
 #ifdef CONFIG_SMP
@@ -145,8 +139,6 @@
     }
 #endif
 
-    suspend_record->nr_pfns = max_pfn; /* final number of pfns */
-
     __cli();
 
     preempt_enable();
@@ -185,17 +177,11 @@
     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));
-
     /* We'll stop somewhere inside this hypercall.  When it returns,
        we'll start resuming after the restore. */
-    HYPERVISOR_suspend(virt_to_mfn(suspend_record));
+    HYPERVISOR_suspend(virt_to_mfn(xen_start_info));
 
     shutting_down = SHUTDOWN_INVALID; 
-
-    memcpy(xen_start_info, &suspend_record->resume_info,
-           sizeof(*xen_start_info));
 
     set_fixmap(FIX_SHARED_INFO, xen_start_info->shared_info);
 
@@ -248,9 +234,6 @@
     }
 #endif
 
- out:
-    if ( suspend_record != NULL )
-        free_page((unsigned long)suspend_record);
     return err;
 }
 
diff -r 5d8b2c258b26 -r 89e8a2144c1d tools/libxc/xc_linux_restore.c
--- a/tools/libxc/xc_linux_restore.c    Mon Sep  5 14:48:44 2005
+++ b/tools/libxc/xc_linux_restore.c    Mon Sep  5 14:53:39 2005
@@ -10,7 +10,6 @@
 #include <unistd.h>
 #include "xg_private.h"
 #include <xenctrl.h>
-#include <xen/linux/suspend.h>
 #include <xen/memory.h>
 
 #define MAX_BATCH_SIZE 1024
@@ -89,8 +88,8 @@
     /* used by mapper for updating the domain's copy of the table */
     unsigned long *live_pfn_to_mfn_table = NULL;
 
-    /* A temporary mapping of the guest's suspend record. */
-    suspend_record_t *p_srec;
+    /* A temporary mapping of the guest's start_info page. */
+    start_info_t *start_info;
 
     char *region_base;
 
@@ -479,18 +478,18 @@
         goto out;
     }
     ctxt.user_regs.esi = mfn = pfn_to_mfn_table[pfn];
-    p_srec = xc_map_foreign_range(
+    start_info = xc_map_foreign_range(
         xc_handle, dom, PAGE_SIZE, PROT_READ | PROT_WRITE, mfn);
-    p_srec->resume_info.nr_pages    = nr_pfns;
-    p_srec->resume_info.shared_info = shared_info_frame << PAGE_SHIFT;
-    p_srec->resume_info.flags       = 0;
-    *store_mfn = p_srec->resume_info.store_mfn   =
-       pfn_to_mfn_table[p_srec->resume_info.store_mfn];
-    p_srec->resume_info.store_evtchn = store_evtchn;
-    *console_mfn = p_srec->resume_info.console_mfn   =
-       pfn_to_mfn_table[p_srec->resume_info.console_mfn];
-    p_srec->resume_info.console_evtchn = console_evtchn;
-    munmap(p_srec, PAGE_SIZE);
+    start_info->nr_pages    = nr_pfns;
+    start_info->shared_info = shared_info_frame << PAGE_SHIFT;
+    start_info->flags       = 0;
+    *store_mfn = start_info->store_mfn   =
+       pfn_to_mfn_table[start_info->store_mfn];
+    start_info->store_evtchn = store_evtchn;
+    *console_mfn = start_info->console_mfn   =
+       pfn_to_mfn_table[start_info->console_mfn];
+    start_info->console_evtchn = console_evtchn;
+    munmap(start_info, PAGE_SIZE);
 
     /* Uncanonicalise each GDT frame number. */
     if ( ctxt.gdt_ents > 8192 )
diff -r 5d8b2c258b26 -r 89e8a2144c1d tools/libxc/xc_linux_save.c
--- a/tools/libxc/xc_linux_save.c       Mon Sep  5 14:48:44 2005
+++ b/tools/libxc/xc_linux_save.c       Mon Sep  5 14:53:39 2005
@@ -14,7 +14,6 @@
 
 #include "xg_private.h"
 
-#include <xen/linux/suspend.h>
 #include <xen/io/domain_controller.h>
 
 #define BATCH_SIZE 1024   /* 1024 pages (4MB) at a time */
@@ -435,8 +434,8 @@
     /* base of the region in which domain memory is mapped */
     unsigned char *region_base = NULL;
 
-    /* A temporary mapping, and a copy, of the guest's suspend record. */
-    suspend_record_t *p_srec = NULL;
+    /* A temporary mapping of the guest's start_info page. */
+    start_info_t *start_info = NULL;
 
     /* number of pages we're dealing with */
     unsigned long nr_pfns;
@@ -672,22 +671,22 @@
 
     /* Map the suspend-record MFN to pin it. The page must be owned by 
        dom for this to succeed. */
-    p_srec = xc_map_foreign_range(xc_handle, dom,
-                                   sizeof(*p_srec), PROT_READ | PROT_WRITE, 
-                                   ctxt.user_regs.esi);
-    if (!p_srec){
-        ERR("Couldn't map suspend record");
+    start_info = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
+                                     PROT_READ | PROT_WRITE, 
+                                     ctxt.user_regs.esi);
+    if (!start_info){
+        ERR("Couldn't map start_info page");
         goto out;
     }
 
     /* Canonicalize store mfn. */
-    if ( !translate_mfn_to_pfn(&p_srec->resume_info.store_mfn) ) {
+    if ( !translate_mfn_to_pfn(&start_info->store_mfn) ) {
        ERR("Store frame is not in range of pseudophys map");
        goto out;
     }
 
     /* Canonicalize console mfn. */
-    if ( !translate_mfn_to_pfn(&p_srec->resume_info.console_mfn) ) {
+    if ( !translate_mfn_to_pfn(&start_info->console_mfn) ) {
        ERR("Console frame is not in range of pseudophys map");
        goto out;
     }
@@ -1030,13 +1029,6 @@
        }
     }
 
-    if (nr_pfns != p_srec->nr_pfns )
-    {
-       ERR("Suspend record nr_pfns unexpected (%ld != %ld)",
-                  p_srec->nr_pfns, nr_pfns);
-        goto out;
-    }
-
     /* Canonicalise the suspend-record frame number. */
     if ( !translate_mfn_to_pfn(&ctxt.user_regs.esi) ){
         ERR("Suspend record is not in range of pseudophys map");
@@ -1070,8 +1062,8 @@
     if(live_shinfo)
         munmap(live_shinfo, PAGE_SIZE);
 
-    if(p_srec) 
-        munmap(p_srec, sizeof(*p_srec));
+    if(start_info) 
+        munmap(start_info, PAGE_SIZE);
 
     if(live_pfn_to_mfn_frame_list) 
         munmap(live_pfn_to_mfn_frame_list, PAGE_SIZE);
diff -r 5d8b2c258b26 -r 89e8a2144c1d 
linux-2.6-xen-sparse/include/asm-xen/linux-public/suspend.h
--- a/linux-2.6-xen-sparse/include/asm-xen/linux-public/suspend.h       Mon Sep 
 5 14:48:44 2005
+++ /dev/null   Mon Sep  5 14:53:39 2005
@@ -1,43 +0,0 @@
-/******************************************************************************
- * suspend.h
- * 
- * Copyright (c) 2003-2004, K A Fraser
- * 
- * This file may be distributed separately from the Linux kernel, or
- * incorporated into other software packages, subject to the following license:
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this source file (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy, modify,
- * merge, publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#ifndef __ASM_XEN_SUSPEND_H__
-#define __ASM_XEN_SUSPEND_H__
-
-typedef struct suspend_record_st {
-    /* To be filled in before resume. */
-    start_info_t resume_info;
-    /*
-     * The number of a machine frame containing, in sequence, the number of
-     * each machine frame that contains PFN -> MFN translation table data.
-     */
-    unsigned long pfn_to_mfn_frame_list;
-    /* Number of entries in the PFN -> MFN translation table. */
-    unsigned long nr_pfns;
-} suspend_record_t;
-
-#endif /* __ASM_XEN_SUSPEND_H__ */

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