Lines Matching defs:folio

598 static void collect_procs_anon(struct folio *folio, struct page *page,
606 av = folio_lock_anon_vma_read(folio, NULL);
635 static void collect_procs_file(struct folio *folio, struct page *page,
640 struct address_space *mapping = folio->mapping;
706 static void collect_procs(struct folio *folio, struct page *page,
709 if (!folio->mapping)
714 collect_procs_anon(folio, page, tokill, force_early);
716 collect_procs_file(folio, page, tokill, force_early);
935 struct folio *folio = page_folio(p);
940 else if (!filemap_release_folio(folio, GFP_NOIO))
1162 struct folio *folio = page_folio(p);
1165 delete_from_swap_cache(folio);
1168 folio_unlock(folio);
1383 struct folio *folio = page_folio(page);
1387 ret = get_hwpoison_hugetlb_folio(folio, &hugetlb, false);
1390 if (folio == page_folio(page))
1393 folio_put(folio);
1394 folio = page_folio(page);
1400 * unsupported type of folio in order to reduce the risk of unexpected
1401 * races caused by taking a folio refcount.
1403 if (!HWPoisonHandlable(&folio->page, flags))
1406 if (folio_try_get(folio)) {
1407 if (folio == page_folio(page))
1411 folio_put(folio);
1480 struct folio *folio = page_folio(page);
1484 ret = get_hwpoison_hugetlb_folio(folio, &hugetlb, true);
1487 if (folio == page_folio(page))
1490 folio_put(folio);
1552 struct folio *folio = page_folio(hpage);
1604 collect_procs(folio, p, &tokill, flags & MF_ACTION_REQUIRED);
1616 try_to_unmap(folio, ttu|TTU_RMAP_LOCKED);
1621 try_to_unmap(folio, ttu);
1727 struct folio *folio = pfn_folio(pfn);
1739 cookie = dax_lock_folio(folio);
1743 if (hwpoison_filter(&folio->page)) {
1765 SetPageHWPoison(&folio->page);
1774 collect_procs(folio, &folio->page, &to_kill, true);
1776 unmap_and_kill(&to_kill, pfn, folio->mapping, folio->index, flags);
1778 dax_unlock_folio(folio, cookie);
1825 * constructing singly linked list from ->_hugetlb_hwpoison field of folio.
1832 static inline struct llist_head *raw_hwp_list_head(struct folio *folio)
1834 return (struct llist_head *)&folio->_hugetlb_hwpoison;
1841 struct folio *folio = page_folio(page);
1844 if (!folio_test_hwpoison(folio))
1847 if (!folio_test_hugetlb(folio))
1854 if (folio_test_hugetlb_raw_hwp_unreliable(folio))
1859 raw_hwp_head = raw_hwp_list_head(folio);
1872 static unsigned long __folio_free_raw_hwp(struct folio *folio, bool move_flag)
1878 head = llist_del_all(raw_hwp_list_head(folio));
1890 static int folio_set_hugetlb_hwpoison(struct folio *folio, struct page *page)
1895 int ret = folio_test_set_hwpoison(folio) ? -EHWPOISON : 0;
1902 if (folio_test_hugetlb_raw_hwp_unreliable(folio))
1904 head = raw_hwp_list_head(folio);
1923 folio_set_hugetlb_raw_hwp_unreliable(folio);
1928 __folio_free_raw_hwp(folio, false);
1933 static unsigned long folio_free_raw_hwp(struct folio *folio, bool move_flag)
1939 if (move_flag && folio_test_hugetlb_vmemmap_optimized(folio))
1946 if (folio_test_hugetlb_raw_hwp_unreliable(folio))
1949 return __folio_free_raw_hwp(folio, move_flag);
1952 void folio_clear_hugetlb_hwpoison(struct folio *folio)
1954 if (folio_test_hugetlb_raw_hwp_unreliable(folio))
1956 if (folio_test_hugetlb_vmemmap_optimized(folio))
1958 folio_clear_hwpoison(folio);
1959 folio_free_raw_hwp(folio, true);
1976 struct folio *folio = page_folio(page);
1980 if (!folio_test_hugetlb(folio))
1986 } else if (folio_test_hugetlb_freed(folio)) {
1988 } else if (folio_test_hugetlb_migratable(folio)) {
1989 ret = folio_try_get(folio);
1998 if (folio_set_hugetlb_hwpoison(folio, page)) {
2007 if (count_increased && folio_test_hugetlb_migratable(folio)) {
2008 folio_clear_hugetlb_migratable(folio);
2015 folio_put(folio);
2029 struct folio *folio;
2042 folio = page_folio(p);
2043 res = kill_accessing_process(current, folio_pfn(folio), flags);
2054 folio = page_folio(p);
2055 folio_lock(folio);
2058 folio_clear_hugetlb_hwpoison(folio);
2060 folio_set_hugetlb_migratable(folio);
2061 folio_unlock(folio);
2063 folio_put(folio);
2072 folio_unlock(folio);
2082 page_flags = folio->flags;
2084 if (!hwpoison_user_mappings(p, pfn, flags, &folio->page)) {
2085 folio_unlock(folio);
2098 static inline unsigned long folio_free_raw_hwp(struct folio *folio, bool flag)
2503 struct folio *folio;
2515 folio = page_folio(p);
2532 if (folio_ref_count(folio) > 1) {
2538 if (folio_test_slab(folio) || PageTable(&folio->page) ||
2539 folio_test_reserved(folio) || PageOffline(&folio->page))
2543 * Note that folio->_mapcount is overloaded in SLAB, so the simple test
2546 if (folio_mapped(folio)) {
2552 if (folio_mapping(folio)) {
2562 count = folio_free_raw_hwp(folio, false);
2566 ret = folio_test_clear_hwpoison(folio) ? 0 : -EBUSY;
2578 count = folio_free_raw_hwp(folio, false);
2580 folio_put(folio);
2585 folio_put(folio);
2587 folio_put(folio);