• Home
  • Raw
  • Download

Lines Matching refs:page

68 static bool page_handle_poison(struct page *page, bool hugepage_or_freepage, bool release)  in page_handle_poison()  argument
75 if (dissolve_free_huge_page(page) || !take_page_off_buddy(page)) in page_handle_poison()
86 SetPageHWPoison(page); in page_handle_poison()
88 put_page(page); in page_handle_poison()
89 page_ref_inc(page); in page_handle_poison()
108 static int hwpoison_filter_dev(struct page *p) in hwpoison_filter_dev()
138 static int hwpoison_filter_flags(struct page *p) in hwpoison_filter_flags()
163 static int hwpoison_filter_task(struct page *p) in hwpoison_filter_task()
174 static int hwpoison_filter_task(struct page *p) { return 0; } in hwpoison_filter_task()
177 int hwpoison_filter(struct page *p) in hwpoison_filter()
194 int hwpoison_filter(struct page *p) in hwpoison_filter()
269 void shake_page(struct page *p, int access) in shake_page()
292 static unsigned long dev_pagemap_mapping_shift(struct page *page, in dev_pagemap_mapping_shift() argument
295 unsigned long address = vma_address(page, vma); in dev_pagemap_mapping_shift()
335 static void add_to_kill(struct task_struct *tsk, struct page *p, in add_to_kill()
472 static void collect_procs_anon(struct page *page, struct list_head *to_kill, in collect_procs_anon() argument
480 av = page_lock_anon_vma_read(page, NULL); in collect_procs_anon()
484 pgoff = page_to_pgoff(page); in collect_procs_anon()
495 if (!page_mapped_in_vma(page, vma)) in collect_procs_anon()
498 add_to_kill(t, page, vma, to_kill); in collect_procs_anon()
508 static void collect_procs_file(struct page *page, struct list_head *to_kill, in collect_procs_file() argument
513 struct address_space *mapping = page->mapping; in collect_procs_file()
518 pgoff = page_to_pgoff(page); in collect_procs_file()
534 add_to_kill(t, page, vma, to_kill); in collect_procs_file()
544 static void collect_procs(struct page *page, struct list_head *tokill, in collect_procs() argument
547 if (!page->mapping) in collect_procs()
550 if (PageAnon(page)) in collect_procs()
551 collect_procs_anon(page, tokill, force_early); in collect_procs()
553 collect_procs_file(page, tokill, force_early); in collect_procs()
595 static int delete_from_lru_cache(struct page *p) in delete_from_lru_cache()
620 static int truncate_error_page(struct page *p, unsigned long pfn, in truncate_error_page()
658 static int me_kernel(struct page *p, unsigned long pfn) in me_kernel()
666 static int me_unknown(struct page *p, unsigned long pfn) in me_unknown()
675 static int me_pagecache_clean(struct page *p, unsigned long pfn) in me_pagecache_clean()
716 static int me_pagecache_dirty(struct page *p, unsigned long pfn) in me_pagecache_dirty()
782 static int me_swapcache_dirty(struct page *p, unsigned long pfn) in me_swapcache_dirty()
794 static int me_swapcache_clean(struct page *p, unsigned long pfn) in me_swapcache_clean()
810 static int me_huge_page(struct page *p, unsigned long pfn) in me_huge_page()
813 struct page *hpage = compound_head(p); in me_huge_page()
865 int (*action)(struct page *p, unsigned long pfn);
922 static int page_action(struct page_state *ps, struct page *p, in page_action()
955 static int get_hwpoison_page(struct page *page) in get_hwpoison_page() argument
957 struct page *head = compound_head(page); in get_hwpoison_page()
968 page_to_pfn(page)); in get_hwpoison_page()
974 if (head == compound_head(page)) in get_hwpoison_page()
978 page_to_pfn(page)); in get_hwpoison_page()
989 static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, in hwpoison_user_mappings()
990 int flags, struct page **hpagep) in hwpoison_user_mappings()
997 struct page *hpage = *hpagep; in hwpoison_user_mappings()
1108 static int identify_page_state(unsigned long pfn, struct page *p, in identify_page_state()
1131 static int try_to_split_thp_page(struct page *page, const char *msg) in try_to_split_thp_page() argument
1133 lock_page(page); in try_to_split_thp_page()
1134 if (!PageAnon(page) || unlikely(split_huge_page(page))) { in try_to_split_thp_page()
1135 unsigned long pfn = page_to_pfn(page); in try_to_split_thp_page()
1137 unlock_page(page); in try_to_split_thp_page()
1138 if (!PageAnon(page)) in try_to_split_thp_page()
1142 put_page(page); in try_to_split_thp_page()
1145 unlock_page(page); in try_to_split_thp_page()
1152 struct page *p = pfn_to_page(pfn); in memory_failure_hugetlb()
1153 struct page *head = compound_head(p); in memory_failure_hugetlb()
1225 struct page *page = pfn_to_page(pfn); in memory_failure_dev_pagemap() local
1238 put_page(page); in memory_failure_dev_pagemap()
1253 cookie = dax_lock_page(page); in memory_failure_dev_pagemap()
1257 if (hwpoison_filter(page)) { in memory_failure_dev_pagemap()
1274 SetPageHWPoison(page); in memory_failure_dev_pagemap()
1283 collect_procs(page, &tokill, flags & MF_ACTION_REQUIRED); in memory_failure_dev_pagemap()
1295 start = (page->index << PAGE_SHIFT) & ~(size - 1); in memory_failure_dev_pagemap()
1296 unmap_mapping_range(page->mapping, start, size, 0); in memory_failure_dev_pagemap()
1301 dax_unlock_page(page, cookie); in memory_failure_dev_pagemap()
1328 struct page *p; in memory_failure()
1329 struct page *hpage; in memory_failure()
1330 struct page *orig_head; in memory_failure()
1613 struct page *page; in unpoison_memory() local
1614 struct page *p; in unpoison_memory()
1623 page = compound_head(p); in unpoison_memory()
1631 if (page_count(page) > 1) { in unpoison_memory()
1637 if (page_mapped(page)) { in unpoison_memory()
1643 if (page_mapping(page)) { in unpoison_memory()
1654 if (!PageHuge(page) && PageTransHuge(page)) { in unpoison_memory()
1668 lock_page(page); in unpoison_memory()
1675 if (TestClearPageHWPoison(page)) { in unpoison_memory()
1681 unlock_page(page); in unpoison_memory()
1683 put_page(page); in unpoison_memory()
1685 put_page(page); in unpoison_memory()
1698 static int get_any_page(struct page *p, int flags) in get_any_page()
1741 static bool isolate_page(struct page *page, struct list_head *pagelist) in isolate_page() argument
1744 bool lru = PageLRU(page); in isolate_page()
1746 if (PageHuge(page)) { in isolate_page()
1747 isolated = !isolate_hugetlb(page, pagelist); in isolate_page()
1750 isolated = !isolate_lru_page(page); in isolate_page()
1752 isolated = !isolate_movable_page(page, ISOLATE_UNEVICTABLE); in isolate_page()
1755 list_add(&page->lru, pagelist); in isolate_page()
1759 inc_node_page_state(page, NR_ISOLATED_ANON + in isolate_page()
1760 page_is_file_lru(page)); in isolate_page()
1769 put_page(page); in isolate_page()
1778 static int __soft_offline_page(struct page *page) in __soft_offline_page() argument
1781 unsigned long pfn = page_to_pfn(page); in __soft_offline_page()
1782 struct page *hpage = compound_head(page); in __soft_offline_page()
1784 bool huge = PageHuge(page); in __soft_offline_page()
1797 lock_page(page); in __soft_offline_page()
1798 if (!PageHuge(page)) in __soft_offline_page()
1799 wait_on_page_writeback(page); in __soft_offline_page()
1800 if (PageHWPoison(page)) { in __soft_offline_page()
1801 unlock_page(page); in __soft_offline_page()
1802 put_page(page); in __soft_offline_page()
1807 if (!PageHuge(page)) in __soft_offline_page()
1812 ret = invalidate_inode_page(page); in __soft_offline_page()
1813 unlock_page(page); in __soft_offline_page()
1821 page_handle_poison(page, false, true); in __soft_offline_page()
1831 if (!page_handle_poison(page, huge, release)) in __soft_offline_page()
1838 pfn, msg_page[huge], ret, page->flags, &page->flags); in __soft_offline_page()
1844 pfn, msg_page[huge], page_count(page), page->flags, &page->flags); in __soft_offline_page()
1850 static int soft_offline_in_use_page(struct page *page) in soft_offline_in_use_page() argument
1852 struct page *hpage = compound_head(page); in soft_offline_in_use_page()
1854 if (!PageHuge(page) && PageTransHuge(hpage)) in soft_offline_in_use_page()
1855 if (try_to_split_thp_page(page, "soft offline") < 0) in soft_offline_in_use_page()
1857 return __soft_offline_page(page); in soft_offline_in_use_page()
1860 static void put_ref_page(struct page *page) in put_ref_page() argument
1862 if (page) in put_ref_page()
1863 put_page(page); in put_ref_page()
1892 struct page *page, *ref_page = NULL; in soft_offline_page() local
1902 page = pfn_to_online_page(pfn); in soft_offline_page()
1903 if (!page) { in soft_offline_page()
1908 if (PageHWPoison(page)) { in soft_offline_page()
1916 ret = get_any_page(page, flags); in soft_offline_page()
1920 ret = soft_offline_in_use_page(page); in soft_offline_page()
1922 if (!page_handle_poison(page, true, false)) { in soft_offline_page()
1932 __func__, pfn, page->flags, &page->flags); in soft_offline_page()