Lines Matching refs:page_ext

128 				page_ext_size = sizeof(struct page_ext);  in invoke_need_callbacks()
156 static inline struct page_ext *get_entry(void *base, unsigned long index) in get_entry()
167 static struct page_ext *lookup_page_ext(const struct page *page) in lookup_page_ext()
171 struct page_ext *base; in lookup_page_ext()
190 struct page_ext *base; in alloc_node_page_ext()
242 static bool page_ext_invalid(struct page_ext *page_ext) in page_ext_invalid() argument
244 return !page_ext || (((unsigned long)page_ext & PAGE_EXT_INVALID) == PAGE_EXT_INVALID); in page_ext_invalid()
247 static struct page_ext *lookup_page_ext(const struct page *page) in lookup_page_ext()
251 struct page_ext *page_ext = READ_ONCE(section->page_ext); in lookup_page_ext() local
260 if (page_ext_invalid(page_ext)) in lookup_page_ext()
262 return get_entry(page_ext, pfn); in lookup_page_ext()
285 struct page_ext *base; in init_section_page_ext()
290 if (section->page_ext) in init_section_page_ext()
313 section->page_ext = (void *)base - page_ext_size * pfn; in init_section_page_ext()
339 struct page_ext *base; in __free_page_ext()
342 if (!ms || !ms->page_ext) in __free_page_ext()
345 base = READ_ONCE(ms->page_ext); in __free_page_ext()
352 WRITE_ONCE(ms->page_ext, NULL); in __free_page_ext()
364 if (!ms || !ms->page_ext) in __invalidate_page_ext()
366 val = (void *)ms->page_ext + PAGE_EXT_INVALID; in __invalidate_page_ext()
367 WRITE_ONCE(ms->page_ext, val); in __invalidate_page_ext()
502 struct page_ext *page_ext_lookup(unsigned long pfn) in page_ext_lookup()
518 struct page_ext *page_ext_get(const struct page *page) in page_ext_get()
520 struct page_ext *page_ext; in page_ext_get() local
523 page_ext = lookup_page_ext(page); in page_ext_get()
524 if (!page_ext) { in page_ext_get()
529 return page_ext; in page_ext_get()
545 struct page_ext *page_ext_from_phys(phys_addr_t phys) in page_ext_from_phys()
565 void page_ext_put(struct page_ext *page_ext) in page_ext_put() argument
567 if (unlikely(!page_ext)) in page_ext_put()