On 05/17/2018 04:26 AM, Oleksandr Andrushchenko wrote: > From: Oleksandr Andrushchenko <oleksandr_andrushche...@epam.com>
A commit message would be useful. > > Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushche...@epam.com> > > for (i = 0; i < nr_pages; i++) { > - page = alloc_page(gfp); > - if (page == NULL) { > - nr_pages = i; > - state = BP_EAGAIN; > - break; > + if (ext_pages) { > + page = ext_pages[i]; > + } else { > + page = alloc_page(gfp); > + if (page == NULL) { > + nr_pages = i; > + state = BP_EAGAIN; > + break; > + } > } > scrub_page(page); > list_add(&page->lru, &pages); > @@ -529,7 +565,7 @@ static enum bp_state decrease_reservation(unsigned long > nr_pages, gfp_t gfp) > i = 0; > list_for_each_entry_safe(page, tmp, &pages, lru) { > /* XENMEM_decrease_reservation requires a GFN */ > - frame_list[i++] = xen_page_to_gfn(page); > + frames[i++] = xen_page_to_gfn(page); > > #ifdef CONFIG_XEN_HAVE_PVMMU > /* > @@ -552,18 +588,22 @@ static enum bp_state decrease_reservation(unsigned long > nr_pages, gfp_t gfp) > #endif > list_del(&page->lru); > > - balloon_append(page); > + if (!ext_pages) > + balloon_append(page); So what you are proposing is not really ballooning. You are just piggybacking on existing interfaces, aren't you? -boris