Lines Matching refs:page
82 static int hwpoison_filter_dev(struct page *p) in hwpoison_filter_dev()
112 static int hwpoison_filter_flags(struct page *p) in hwpoison_filter_flags()
137 static int hwpoison_filter_task(struct page *p) in hwpoison_filter_task()
148 static int hwpoison_filter_task(struct page *p) { return 0; } in hwpoison_filter_task()
151 int hwpoison_filter(struct page *p) in hwpoison_filter()
168 int hwpoison_filter(struct page *p) in hwpoison_filter()
182 unsigned long pfn, struct page *page, int flags) in kill_proc() argument
196 si.si_addr_lsb = compound_order(compound_head(page)) + PAGE_SHIFT; in kill_proc()
221 void shake_page(struct page *p, int access) in shake_page()
280 static void add_to_kill(struct task_struct *tsk, struct page *p, in add_to_kill()
326 int fail, struct page *page, unsigned long pfn, in kill_procs() argument
352 pfn, page, flags) < 0) in kill_procs()
405 static void collect_procs_anon(struct page *page, struct list_head *to_kill, in collect_procs_anon() argument
413 av = page_lock_anon_vma_read(page); in collect_procs_anon()
417 pgoff = page_to_pgoff(page); in collect_procs_anon()
428 if (!page_mapped_in_vma(page, vma)) in collect_procs_anon()
431 add_to_kill(t, page, vma, to_kill, tkc); in collect_procs_anon()
441 static void collect_procs_file(struct page *page, struct list_head *to_kill, in collect_procs_file() argument
446 struct address_space *mapping = page->mapping; in collect_procs_file()
451 pgoff_t pgoff = page_to_pgoff(page); in collect_procs_file()
466 add_to_kill(t, page, vma, to_kill, tkc); in collect_procs_file()
479 static void collect_procs(struct page *page, struct list_head *tokill, in collect_procs() argument
484 if (!page->mapping) in collect_procs()
490 if (PageAnon(page)) in collect_procs()
491 collect_procs_anon(page, tokill, &tk, force_early); in collect_procs()
493 collect_procs_file(page, tokill, &tk, force_early); in collect_procs()
533 static int delete_from_lru_cache(struct page *p) in delete_from_lru_cache()
556 static int me_kernel(struct page *p, unsigned long pfn) in me_kernel()
564 static int me_unknown(struct page *p, unsigned long pfn) in me_unknown()
573 static int me_pagecache_clean(struct page *p, unsigned long pfn) in me_pagecache_clean()
638 static int me_pagecache_dirty(struct page *p, unsigned long pfn) in me_pagecache_dirty()
704 static int me_swapcache_dirty(struct page *p, unsigned long pfn) in me_swapcache_dirty()
716 static int me_swapcache_clean(struct page *p, unsigned long pfn) in me_swapcache_clean()
732 static int me_huge_page(struct page *p, unsigned long pfn) in me_huge_page()
735 struct page *hpage = compound_head(p); in me_huge_page()
786 int (*action)(struct page *p, unsigned long pfn);
847 static int page_action(struct page_state *ps, struct page *p, in page_action()
881 int get_hwpoison_page(struct page *page) in get_hwpoison_page() argument
883 struct page *head = compound_head(page); in get_hwpoison_page()
902 page_to_pfn(page)); in get_hwpoison_page()
907 if (PageTail(page)) in get_hwpoison_page()
908 get_page(page); in get_hwpoison_page()
915 return get_page_unless_zero(page); in get_hwpoison_page()
923 void put_hwpoison_page(struct page *page) in put_hwpoison_page() argument
925 struct page *head = compound_head(page); in put_hwpoison_page()
933 if (page != head) in put_hwpoison_page()
936 put_page(page); in put_hwpoison_page()
944 static int hwpoison_user_mappings(struct page *p, unsigned long pfn, in hwpoison_user_mappings()
945 int trapno, int flags, struct page **hpagep) in hwpoison_user_mappings()
952 struct page *hpage = *hpagep; in hwpoison_user_mappings()
1034 static void set_page_hwpoison_huge_page(struct page *hpage) in set_page_hwpoison_huge_page()
1042 static void clear_page_hwpoison_huge_page(struct page *hpage) in clear_page_hwpoison_huge_page()
1071 struct page *p; in memory_failure()
1072 struct page *hpage; in memory_failure()
1073 struct page *orig_head; in memory_failure()
1420 struct page *page; in unpoison_memory() local
1421 struct page *p; in unpoison_memory()
1431 page = compound_head(p); in unpoison_memory()
1439 if (page_count(page) > 1) { in unpoison_memory()
1445 if (page_mapped(page)) { in unpoison_memory()
1451 if (page_mapping(page)) { in unpoison_memory()
1462 if (!PageHuge(page) && PageTransHuge(page)) { in unpoison_memory()
1468 nr_pages = 1 << compound_order(page); in unpoison_memory()
1477 if (PageHuge(page)) { in unpoison_memory()
1489 lock_page(page); in unpoison_memory()
1496 if (TestClearPageHWPoison(page)) { in unpoison_memory()
1501 if (PageHuge(page)) in unpoison_memory()
1502 clear_page_hwpoison_huge_page(page); in unpoison_memory()
1504 unlock_page(page); in unpoison_memory()
1506 put_hwpoison_page(page); in unpoison_memory()
1508 put_hwpoison_page(page); in unpoison_memory()
1514 static struct page *new_page(struct page *p, unsigned long private, int **x) in new_page()
1530 static int __get_any_page(struct page *p, unsigned long pfn, int flags) in __get_any_page()
1560 static int get_any_page(struct page *page, unsigned long pfn, int flags) in get_any_page() argument
1562 int ret = __get_any_page(page, pfn, flags); in get_any_page()
1564 if (ret == 1 && !PageHuge(page) && !PageLRU(page)) { in get_any_page()
1568 put_hwpoison_page(page); in get_any_page()
1569 shake_page(page, 1); in get_any_page()
1574 ret = __get_any_page(page, pfn, 0); in get_any_page()
1575 if (ret == 1 && !PageLRU(page)) { in get_any_page()
1577 put_hwpoison_page(page); in get_any_page()
1579 pfn, page->flags); in get_any_page()
1586 static int soft_offline_huge_page(struct page *page, int flags) in soft_offline_huge_page() argument
1589 unsigned long pfn = page_to_pfn(page); in soft_offline_huge_page()
1590 struct page *hpage = compound_head(page); in soft_offline_huge_page()
1621 pfn, ret, page->flags); in soft_offline_huge_page()
1632 if (PageHuge(page)) { in soft_offline_huge_page()
1637 SetPageHWPoison(page); in soft_offline_huge_page()
1644 static int __soft_offline_page(struct page *page, int flags) in __soft_offline_page() argument
1647 unsigned long pfn = page_to_pfn(page); in __soft_offline_page()
1655 lock_page(page); in __soft_offline_page()
1656 wait_on_page_writeback(page); in __soft_offline_page()
1657 if (PageHWPoison(page)) { in __soft_offline_page()
1658 unlock_page(page); in __soft_offline_page()
1659 put_hwpoison_page(page); in __soft_offline_page()
1667 ret = invalidate_inode_page(page); in __soft_offline_page()
1668 unlock_page(page); in __soft_offline_page()
1674 put_hwpoison_page(page); in __soft_offline_page()
1676 SetPageHWPoison(page); in __soft_offline_page()
1686 ret = isolate_lru_page(page); in __soft_offline_page()
1691 put_hwpoison_page(page); in __soft_offline_page()
1694 inc_zone_page_state(page, NR_ISOLATED_ANON + in __soft_offline_page()
1695 page_is_file_cache(page)); in __soft_offline_page()
1696 list_add(&page->lru, &pagelist); in __soft_offline_page()
1701 list_del(&page->lru); in __soft_offline_page()
1702 dec_zone_page_state(page, NR_ISOLATED_ANON + in __soft_offline_page()
1703 page_is_file_cache(page)); in __soft_offline_page()
1704 putback_lru_page(page); in __soft_offline_page()
1708 pfn, ret, page->flags); in __soft_offline_page()
1714 pfn, ret, page_count(page), page->flags); in __soft_offline_page()
1741 int soft_offline_page(struct page *page, int flags) in soft_offline_page() argument
1744 unsigned long pfn = page_to_pfn(page); in soft_offline_page()
1745 struct page *hpage = compound_head(page); in soft_offline_page()
1747 if (PageHWPoison(page)) { in soft_offline_page()
1750 put_hwpoison_page(page); in soft_offline_page()
1753 if (!PageHuge(page) && PageTransHuge(hpage)) { in soft_offline_page()
1758 put_hwpoison_page(page); in soft_offline_page()
1765 ret = get_any_page(page, pfn, flags); in soft_offline_page()
1768 if (PageHuge(page)) in soft_offline_page()
1769 ret = soft_offline_huge_page(page, flags); in soft_offline_page()
1771 ret = __soft_offline_page(page, flags); in soft_offline_page()
1773 if (PageHuge(page)) { in soft_offline_page()
1778 if (!TestSetPageHWPoison(page)) in soft_offline_page()