Lines Matching refs:page

109 static void scrub_page(struct page *page)  in scrub_page()  argument
112 clear_highpage(page); in scrub_page()
117 static void __balloon_append(struct page *page) in __balloon_append() argument
120 if (PageHighMem(page)) { in __balloon_append()
121 list_add_tail(&page->lru, &ballooned_pages); in __balloon_append()
124 list_add(&page->lru, &ballooned_pages); in __balloon_append()
129 static void balloon_append(struct page *page) in balloon_append() argument
131 __balloon_append(page); in balloon_append()
132 adjust_managed_page_count(page, -1); in balloon_append()
136 static struct page *balloon_retrieve(bool prefer_highmem) in balloon_retrieve()
138 struct page *page; in balloon_retrieve() local
144 page = list_entry(ballooned_pages.prev, struct page, lru); in balloon_retrieve()
146 page = list_entry(ballooned_pages.next, struct page, lru); in balloon_retrieve()
147 list_del(&page->lru); in balloon_retrieve()
149 if (PageHighMem(page)) in balloon_retrieve()
154 adjust_managed_page_count(page, 1); in balloon_retrieve()
156 return page; in balloon_retrieve()
159 static struct page *balloon_next_page(struct page *page) in balloon_next_page() argument
161 struct list_head *next = page->lru.next; in balloon_next_page()
164 return list_entry(next, struct page, lru); in balloon_next_page()
270 static void xen_online_page(struct page *page) in xen_online_page() argument
272 __online_page_set_limits(page); in xen_online_page()
276 __balloon_append(page); in xen_online_page()
330 struct page *page; in increase_reservation() local
349 page = list_first_entry_or_null(&ballooned_pages, struct page, lru); in increase_reservation()
351 if (!page) { in increase_reservation()
355 frame_list[i] = page_to_pfn(page); in increase_reservation()
356 page = balloon_next_page(page); in increase_reservation()
366 page = balloon_retrieve(false); in increase_reservation()
367 BUG_ON(page == NULL); in increase_reservation()
369 pfn = page_to_pfn(page); in increase_reservation()
376 if (!PageHighMem(page)) { in increase_reservation()
388 __free_reserved_page(page); in increase_reservation()
400 struct page *page; in decrease_reservation() local
421 page = alloc_page(gfp); in decrease_reservation()
422 if (page == NULL) { in decrease_reservation()
427 scrub_page(page); in decrease_reservation()
429 frame_list[i] = page_to_pfn(page); in decrease_reservation()
445 page = pfn_to_page(pfn); in decrease_reservation()
449 if (!PageHighMem(page)) { in decrease_reservation()
459 balloon_append(page); in decrease_reservation()
531 int alloc_xenballooned_pages(int nr_pages, struct page **pages, bool highmem) in alloc_xenballooned_pages()
534 struct page *page; in alloc_xenballooned_pages() local
537 page = balloon_retrieve(highmem); in alloc_xenballooned_pages()
538 if (page && (highmem || !PageHighMem(page))) { in alloc_xenballooned_pages()
539 pages[pgno++] = page; in alloc_xenballooned_pages()
542 if (page) in alloc_xenballooned_pages()
543 balloon_append(page); in alloc_xenballooned_pages()
567 void free_xenballooned_pages(int nr_pages, struct page **pages) in free_xenballooned_pages()
590 struct page *page; in balloon_add_region() local
600 page = pfn_to_page(pfn); in balloon_add_region()
604 __balloon_append(page); in balloon_add_region()