[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |