WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ppc-devel

Re: [XenPPC] xm save/restore tests

Jimi Xenidis wrote:
Thanks Yi,
On Nov 9, 2006, at 5:22 PM, geyi wrote:

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: -28
This is a known problem, when the dust settles on out next Xen upstream merge (in progress), I hope to have this interface fixed.


2. 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
<Prev in Thread] Current Thread [Next in Thread>