|
@@ -173,9 +173,21 @@ static unsigned long __init xen_get_max_pages(void)
|
|
domid_t domid = DOMID_SELF;
|
|
domid_t domid = DOMID_SELF;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
- ret = HYPERVISOR_memory_op(XENMEM_maximum_reservation, &domid);
|
|
|
|
- if (ret > 0)
|
|
|
|
- max_pages = ret;
|
|
|
|
|
|
+ /*
|
|
|
|
+ * For the initial domain we use the maximum reservation as
|
|
|
|
+ * the maximum page.
|
|
|
|
+ *
|
|
|
|
+ * For guest domains the current maximum reservation reflects
|
|
|
|
+ * the current maximum rather than the static maximum. In this
|
|
|
|
+ * case the e820 map provided to us will cover the static
|
|
|
|
+ * maximum region.
|
|
|
|
+ */
|
|
|
|
+ if (xen_initial_domain()) {
|
|
|
|
+ ret = HYPERVISOR_memory_op(XENMEM_maximum_reservation, &domid);
|
|
|
|
+ if (ret > 0)
|
|
|
|
+ max_pages = ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
return min(max_pages, MAX_DOMAIN_PAGES);
|
|
return min(max_pages, MAX_DOMAIN_PAGES);
|
|
}
|
|
}
|
|
|
|
|