* alloc_xenballooned_pages - get pages that have been ballooned out
* @nr_pages: Number of pages to get
* @pages: pages returned
- * @highmem: highmem or lowmem pages
+ + * @highmem: allow highmem pages
* @return 0 on success, error otherwise
*/
-int alloc_xenballooned_pages(int nr_pages, struct page** pages)
+int alloc_xenballooned_pages(int nr_pages, struct page **pages, bool highmem)
{
int pgno = 0;
-- struct page* page;
++ struct page *page;
mutex_lock(&balloon_mutex);
while (pgno < nr_pages) {
- page = balloon_retrieve(true);
- if (page) {
+ page = balloon_retrieve(highmem);
- if (page && PageHighMem(page) == highmem) {
+ + if (page && (highmem || !PageHighMem(page))) {
pages[pgno++] = page;
} else {
enum bp_state st;
if (NULL == add)
return NULL;
- - add->grants = kzalloc(sizeof(add->grants[0]) * count, GFP_KERNEL);
- - add->map_ops = kzalloc(sizeof(add->map_ops[0]) * count, GFP_KERNEL);
- - add->unmap_ops = kzalloc(sizeof(add->unmap_ops[0]) * count, GFP_KERNEL);
- add->kmap_ops = kzalloc(sizeof(add->kmap_ops[0]) * count, GFP_KERNEL);
- - add->pages = kzalloc(sizeof(add->pages[0]) * count, GFP_KERNEL);
+ + add->grants = kcalloc(count, sizeof(add->grants[0]), GFP_KERNEL);
+ + add->map_ops = kcalloc(count, sizeof(add->map_ops[0]), GFP_KERNEL);
+ + add->unmap_ops = kcalloc(count, sizeof(add->unmap_ops[0]), GFP_KERNEL);
+ + add->kmap_ops = kcalloc(count, sizeof(add->kmap_ops[0]), GFP_KERNEL);
+ + add->pages = kcalloc(count, sizeof(add->pages[0]), GFP_KERNEL);
if (NULL == add->grants ||
NULL == add->map_ops ||
NULL == add->unmap_ops ||