Lines Matching refs:page
162 static void scrub_page(struct page *page) in scrub_page() argument
165 clear_highpage(page); in scrub_page()
170 static void __balloon_append(struct page *page) in __balloon_append() argument
173 if (PageHighMem(page)) { in __balloon_append()
174 list_add_tail(&page->lru, &ballooned_pages); in __balloon_append()
177 list_add(&page->lru, &ballooned_pages); in __balloon_append()
183 static void balloon_append(struct page *page) in balloon_append() argument
185 __balloon_append(page); in balloon_append()
186 adjust_managed_page_count(page, -1); in balloon_append()
190 static struct page *balloon_retrieve(bool require_lowmem) in balloon_retrieve()
192 struct page *page; in balloon_retrieve() local
197 page = list_entry(ballooned_pages.next, struct page, lru); in balloon_retrieve()
198 if (require_lowmem && PageHighMem(page)) in balloon_retrieve()
200 list_del(&page->lru); in balloon_retrieve()
202 if (PageHighMem(page)) in balloon_retrieve()
207 adjust_managed_page_count(page, 1); in balloon_retrieve()
209 return page; in balloon_retrieve()
212 static struct page *balloon_next_page(struct page *page) in balloon_next_page() argument
214 struct list_head *next = page->lru.next; in balloon_next_page()
217 return list_entry(next, struct page, lru); in balloon_next_page()
371 static void xen_online_page(struct page *page) in xen_online_page() argument
373 __online_page_set_limits(page); in xen_online_page()
377 __balloon_append(page); in xen_online_page()
416 struct page *page; in increase_reservation() local
426 page = list_first_entry_or_null(&ballooned_pages, struct page, lru); in increase_reservation()
428 if (!page) { in increase_reservation()
436 frame_list[i] = page_to_xen_pfn(page); in increase_reservation()
437 page = balloon_next_page(page); in increase_reservation()
447 page = balloon_retrieve(false); in increase_reservation()
448 BUG_ON(page == NULL); in increase_reservation()
458 unsigned long pfn = page_to_pfn(page); in increase_reservation()
463 if (!PageHighMem(page)) { in increase_reservation()
475 __free_reserved_page(page); in increase_reservation()
487 struct page *page, *tmp; in decrease_reservation() local
500 page = alloc_page(gfp); in decrease_reservation()
501 if (page == NULL) { in decrease_reservation()
506 scrub_page(page); in decrease_reservation()
507 list_add(&page->lru, &pages); in decrease_reservation()
524 list_for_each_entry_safe(page, tmp, &pages, lru) { in decrease_reservation()
526 frame_list[i++] = xen_page_to_gfn(page); in decrease_reservation()
536 unsigned long pfn = page_to_pfn(page); in decrease_reservation()
538 if (!PageHighMem(page)) { in decrease_reservation()
547 list_del(&page->lru); in decrease_reservation()
549 balloon_append(page); in decrease_reservation()
641 int alloc_xenballooned_pages(int nr_pages, struct page **pages) in alloc_xenballooned_pages()
644 struct page *page; in alloc_xenballooned_pages() local
652 page = balloon_retrieve(true); in alloc_xenballooned_pages()
653 if (page) { in alloc_xenballooned_pages()
654 pages[pgno++] = page; in alloc_xenballooned_pages()
662 ret = xen_alloc_p2m_entry(page_to_pfn(page)); in alloc_xenballooned_pages()
686 void free_xenballooned_pages(int nr_pages, struct page **pages) in free_xenballooned_pages()
711 struct page *page; in balloon_add_region() local
721 page = pfn_to_page(pfn); in balloon_add_region()
725 __balloon_append(page); in balloon_add_region()