Commit 42ebfc61 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'stable/for-linus-fixes-3.2' of...

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.
parents 55b02d2f 63a74175
...@@ -173,9 +173,21 @@ static unsigned long __init xen_get_max_pages(void) ...@@ -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) * For the initial domain we use the maximum reservation as
max_pages = ret; * 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);
} }
......
...@@ -166,7 +166,7 @@ void __init xen_swiotlb_init(int verbose) ...@@ -166,7 +166,7 @@ void __init xen_swiotlb_init(int verbose)
/* /*
* Get IO TLB memory from any location. * Get IO TLB memory from any location.
*/ */
xen_io_tlb_start = alloc_bootmem(bytes); xen_io_tlb_start = alloc_bootmem_pages(PAGE_ALIGN(bytes));
if (!xen_io_tlb_start) { if (!xen_io_tlb_start) {
m = "Cannot allocate Xen-SWIOTLB buffer!\n"; m = "Cannot allocate Xen-SWIOTLB buffer!\n";
goto error; goto error;
...@@ -179,7 +179,7 @@ void __init xen_swiotlb_init(int verbose) ...@@ -179,7 +179,7 @@ void __init xen_swiotlb_init(int verbose)
bytes, bytes,
xen_io_tlb_nslabs); xen_io_tlb_nslabs);
if (rc) { if (rc) {
free_bootmem(__pa(xen_io_tlb_start), bytes); free_bootmem(__pa(xen_io_tlb_start), PAGE_ALIGN(bytes));
m = "Failed to get contiguous memory for DMA from Xen!\n"\ m = "Failed to get contiguous memory for DMA from Xen!\n"\
"You either: don't have the permissions, do not have"\ "You either: don't have the permissions, do not have"\
" enough free memory under 4GB, or the hypervisor memory"\ " enough free memory under 4GB, or the hypervisor memory"\
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment