# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1237457055 0
# Node ID f0d033f0a319d4ce0b20244cee68998a7afd3317
# Parent 2039e82710512f2b4b45f83cf4cdb3b037bf0d7c
x86 dom builder: Allocate domU pages in batches.
Allows a 32-bit dom0 to create very large guests.
Signed-off-by: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx>
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
tools/libxc/xc_dom_x86.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff -r 2039e8271051 -r f0d033f0a319 tools/libxc/xc_dom_x86.c
--- a/tools/libxc/xc_dom_x86.c Wed Mar 18 17:30:13 2009 +0000
+++ b/tools/libxc/xc_dom_x86.c Thu Mar 19 10:04:15 2009 +0000
@@ -694,7 +694,7 @@ int arch_setup_meminit(struct xc_dom_ima
int arch_setup_meminit(struct xc_dom_image *dom)
{
int rc;
- xen_pfn_t pfn;
+ xen_pfn_t pfn, allocsz, i;
rc = x86_compat(dom->guest_xc, dom->guest_domid, dom->guest_type);
if ( rc )
@@ -713,9 +713,15 @@ int arch_setup_meminit(struct xc_dom_ima
dom->p2m_host[pfn] = pfn;
/* allocate guest memory */
- rc = xc_domain_memory_populate_physmap(dom->guest_xc, dom->guest_domid,
- dom->total_pages, 0, 0,
- dom->p2m_host);
+ for ( i = rc = allocsz = 0; (i < dom->total_pages) && !rc; i += allocsz )
+ {
+ allocsz = dom->total_pages - i;
+ if ( allocsz > 1024*1024 )
+ allocsz = 1024*1024;
+ rc = xc_domain_memory_populate_physmap(
+ dom->guest_xc, dom->guest_domid, allocsz, 0, 0, &dom->p2m_host[i]);
+ }
+
return rc;
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|