summaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-12-15 19:52:40 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2011-12-15 19:52:40 +0100
commit42ebfc61cfcb13af3e638db1c497dcbde7abfed8 (patch)
treea347967678d8f8a8a8ade7f37796ab62fb487308 /arch/x86
parentMerge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux (diff)
parentxen/swiotlb: Use page alignment for early buffer allocation. (diff)
downloadlinux-42ebfc61cfcb13af3e638db1c497dcbde7abfed8.tar.xz
linux-42ebfc61cfcb13af3e638db1c497dcbde7abfed8.zip
Merge branch 'stable/for-linus-fixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
* 'stable/for-linus-fixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: xen/swiotlb: Use page alignment for early buffer allocation. xen: only limit memory map to maximum reservation for domain 0.
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/xen/setup.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 1093f80c162d..b2c7179fa263 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -173,9 +173,21 @@ static unsigned long __init xen_get_max_pages(void)
domid_t domid = DOMID_SELF;
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);
}