mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
[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>
This commit is contained in:
1 parent
e6bde27c82
commit
2fb2bf3c28
1 file changed
+4
-14
@@ -123,7 +123,6 @@ static int setup_guest(xc_interface *xch,
|
||||
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;
|
||||
void *hvm_info_page;
|
||||
uint32_t *ident_pt;
|
||||
@@ -238,11 +237,6 @@ static int setup_guest(xc_interface *xch,
|
||||
{
|
||||
stat_1gb_pages += done;
|
||||
done <<= SUPERPAGE_1GB_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;
|
||||
}
|
||||
@@ -285,11 +279,6 @@ static int setup_guest(xc_interface *xch,
|
||||
{
|
||||
stat_2mb_pages += done;
|
||||
done <<= SUPERPAGE_2MB_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;
|
||||
}
|
||||
@@ -303,15 +292,16 @@ static int setup_guest(xc_interface *xch,
|
||||
xch, dom, count, 0, 0, &page_array[cur_pages]);
|
||||
cur_pages += count;
|
||||
stat_normal_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(xch,
|
||||
dom,
|
||||
pod_pages,
|
||||
target_pages - 0x20,
|
||||
NULL, NULL, NULL);
|
||||
|
||||
if ( rc != 0 )
|
||||
|
||||