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.
This commit is contained in:
commit
42ebfc61cf
@ -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);
|
||||
}
|
||||
|
||||
|
@ -166,7 +166,7 @@ void __init xen_swiotlb_init(int verbose)
|
||||
/*
|
||||
* 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) {
|
||||
m = "Cannot allocate Xen-SWIOTLB buffer!\n";
|
||||
goto error;
|
||||
@ -179,7 +179,7 @@ void __init xen_swiotlb_init(int verbose)
|
||||
bytes,
|
||||
xen_io_tlb_nslabs);
|
||||
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"\
|
||||
"You either: don't have the permissions, do not have"\
|
||||
" enough free memory under 4GB, or the hypervisor memory"\
|
||||
|
Loading…
Reference in New Issue
Block a user