59 lines
2.3 KiB
Diff
59 lines
2.3 KiB
Diff
|
References: bnc#626262
|
||
|
|
||
|
# HG changeset patch
|
||
|
# User George Dunlap <george.dunlap@eu.citrix.com>
|
||
|
# Date 1281538581 -3600
|
||
|
# Node ID 6f059a340cdf60e59f58bbca755a62356f57ea0e
|
||
|
# Parent 3b839375d5bcb3a4b484170a890e340493b4738a
|
||
|
[Xen-devel] [PATCH] PoD: Fix domain build populate-on-demand cache allocation
|
||
|
|
||
|
Rather than trying to count the number of PoD entries we're putting in, we
|
||
|
simply pass the target # of pages - the vga hole, and let the hypervisor
|
||
|
do the calculation.
|
||
|
|
||
|
Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
|
||
|
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
||
|
|
||
|
--- a/tools/libxc/xc_hvm_build.c
|
||
|
+++ b/tools/libxc/xc_hvm_build.c
|
||
|
@@ -107,7 +107,6 @@ static int setup_guest(int xc_handle,
|
||
|
xen_pfn_t *page_array = NULL;
|
||
|
unsigned long i, nr_pages = (unsigned long)memsize << (20 - PAGE_SHIFT);
|
||
|
unsigned long target_pages = (unsigned long)target << (20 - PAGE_SHIFT);
|
||
|
- unsigned long pod_pages = 0;
|
||
|
unsigned long entry_eip, cur_pages;
|
||
|
struct xen_add_to_physmap xatp;
|
||
|
struct shared_info *shared_info;
|
||
|
@@ -208,11 +207,6 @@ static int setup_guest(int xc_handle,
|
||
|
if ( done > 0 )
|
||
|
{
|
||
|
done <<= SUPERPAGE_PFN_SHIFT;
|
||
|
- if ( pod_mode && target_pages > cur_pages )
|
||
|
- {
|
||
|
- int d = target_pages - cur_pages;
|
||
|
- pod_pages += ( done < d ) ? done : d;
|
||
|
- }
|
||
|
cur_pages += done;
|
||
|
count -= done;
|
||
|
}
|
||
|
@@ -224,15 +218,16 @@ static int setup_guest(int xc_handle,
|
||
|
rc = xc_domain_memory_populate_physmap(
|
||
|
xc_handle, dom, count, 0, 0, &page_array[cur_pages]);
|
||
|
cur_pages += count;
|
||
|
- if ( pod_mode )
|
||
|
- pod_pages -= count;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+ /* Subtract 0x20 from target_pages for the VGA "hole". Xen will
|
||
|
+ * adjust the PoD cache size so that domain tot_pages will be
|
||
|
+ * target_pages - 0x20 after this call. */
|
||
|
if ( pod_mode )
|
||
|
rc = xc_domain_memory_set_pod_target(xc_handle,
|
||
|
dom,
|
||
|
- pod_pages,
|
||
|
+ target_pages - 0x20,
|
||
|
NULL, NULL, NULL);
|
||
|
|
||
|
if ( rc != 0 )
|