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:
@@ -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 @@ retry:
|
|||||||
/*
|
/*
|
||||||
* 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 @@ retry:
|
|||||||
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"\
|
||||||
|
Reference in New Issue
Block a user