[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XenPPC] xm save/restore tests
Jimi Xenidis wrote: Thanks Yi, On Nov 9, 2006, at 5:22 PM, geyi wrote:This is a known problem, when the dust settles on out next Xen upstream merge (in progress), I hope to have this interface fixed.Jimi,We made several tests on the save/restore with different guest domain configuration. Here is the problems we meet in the tests:1. Cannot get the pfn list on large domain (domain memory >= 1GB). The xc_get_pfn_list will fail for large domain, because the xemcomm_create only allocate 1 page for the address mapping table between two domains. That restricts the pfn_list size transferred in one hcall to less than 2MB. And in current implementation, we can't transfer the pfn_list by two hcalls. So to support the large domain save/restore, either the getmemlist hcall should be modified to support partially pfn_list transfer or the xencomm allocate more pages for the address mapping in an hcall. What's you advice?This is the kernel message we got from domain 0: xencomm_init: could only translate 2093048 of 2129920 bytes xencomm_init failure: -282. We tried to restore a domain with disk root file system. I used Hao's disk image file for the testing. The restored domain will trap into Data Access Exception(300). We found that's because the global pointer "shared" was not NULL before gnttab_resume is called in kernel resuming. The domain can be restored successfully when we clear the value of shared to NULL in gnttab_suspend.Hmm, x86 does not check for NULL, it is inserted in the existing address space.I think setting it to NULL is a good idea. Good catch. Can you resend the diff below as a "signed-off" patch to the list?--Yi Ge <kudva@xxxxxxxxxxxxxx> diff -r b03ebb287fa9 drivers/xen/core/gnttab.c --- a/drivers/xen/core/gnttab.c Fri Nov 03 17:58:22 2006 -0500 +++ b/drivers/xen/core/gnttab.c Thu Nov 09 15:40:35 2006 -0500 @@ -426,7 +426,9 @@ int gnttab_suspend(void) int gnttab_suspend(void) { #ifdef CONFIG_PPC_XEN - return arch_gnttab_suspend(shared); + int ret = arch_gnttab_suspend(shared); + shared = NULL; + return ret; #else #if !defined(__ia64__) apply_to_page_range(&init_mm, (unsigned long)shared, _______________________________________________ Xen-ppc-devel mailing list Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ppc-devel Sure. Please see the attached file below. -- Yi Ge <kudva@xxxxxxxxxxxxxx> # HG changeset patch # User gy@xxxxxxxxxxxxxxxxxxxxxxxxxxxx # Date 1163170874 18000 # Node ID 714c31abb495ad5800b4b03cf998ca1211f6b36d # Parent b03ebb287fa98067dcde1ff7b0bdac3349397ee7 set NULL to shared in gnttab_suspend. Signed-off-by: Yi Ge <kudva@xxxxxxxxxxxxxx> Signed-off-by: Dan E Poff <poff@xxxxxxxxxxxxxx> diff -r b03ebb287fa9 -r 714c31abb495 drivers/xen/core/gnttab.c --- a/drivers/xen/core/gnttab.c Fri Nov 03 17:58:22 2006 -0500 +++ b/drivers/xen/core/gnttab.c Fri Nov 10 10:01:14 2006 -0500 @@ -426,7 +426,9 @@ int gnttab_suspend(void) int gnttab_suspend(void) { #ifdef CONFIG_PPC_XEN - return arch_gnttab_suspend(shared); + int ret = arch_gnttab_suspend(shared); + shared = NULL; + return ret; #else #if !defined(__ia64__) apply_to_page_range(&init_mm, (unsigned long)shared, _______________________________________________ Xen-ppc-devel mailing list Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ppc-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |