Lines Matching defs:pfn

79 void num_poisoned_pages_inc(unsigned long pfn)
82 memblk_nr_poison_inc(pfn);
85 void num_poisoned_pages_sub(unsigned long pfn, long i)
88 if (pfn != -1UL)
89 memblk_nr_poison_sub(pfn, i);
350 static int kill_proc(struct to_kill *tk, unsigned long pfn, int flags)
357 pfn, t->comm, task_pid_nr(t));
527 unsigned long pfn, int flags)
535 pfn, tk->tsk->comm, task_pid_nr(tk->tsk));
546 else if (kill_proc(tk, pfn, flags) < 0)
548 pfn, tk->tsk->comm, task_pid_nr(tk->tsk));
745 unsigned long pfn;
758 unsigned long pfn = 0;
761 pfn = pte_pfn(pte);
766 pfn = swp_offset_pfn(swp);
769 if (!pfn || pfn != poisoned_pfn)
781 unsigned long pfn;
786 pfn = pmd_pfn(pmd);
787 if (pfn <= hwp->pfn && hwp->pfn < pfn + HPAGE_PMD_NR) {
788 hwpoison_vaddr = addr + ((hwp->pfn - pfn) << PAGE_SHIFT);
824 hwp->pfn, &hwp->tk);
848 hwp->pfn, &hwp->tk);
875 static int kill_accessing_process(struct task_struct *p, unsigned long pfn,
880 .pfn = pfn,
897 kill_proc(&priv.tk, pfn, flags);
986 static int truncate_error_folio(struct folio *folio, unsigned long pfn,
995 pr_info("%#lx: Failed to punch page: %d\n", pfn, err);
997 pr_info("%#lx: failed to release buffers\n", pfn);
1008 pr_info("%#lx: Failed to invalidate\n", pfn);
1302 static void update_per_node_mf_stats(unsigned long pfn,
1308 nid = pfn_to_nid(pfn);
1310 WARN_ONCE(1, "Memory failure: pfn=%#lx, invalid nid=%d", pfn, nid);
1339 static int action_result(unsigned long pfn, enum mf_action_page_type type,
1342 trace_memory_failure_event(pfn, type, result);
1344 num_poisoned_pages_inc(pfn);
1346 update_per_node_mf_stats(pfn, result);
1349 pfn, action_page_types[type], action_name[result]);
1355 unsigned long pfn)
1367 return action_result(pfn, ps->type, result);
1574 int unmap_poisoned_folio(struct folio *folio, unsigned long pfn, bool must_kill)
1580 pr_err("%#lx: keeping poisoned page in swap cache\n", pfn);
1598 pfn);
1631 unsigned long pfn, int flags)
1662 unmap_success = !unmap_poisoned_folio(folio, pfn, flags & MF_MUST_KILL);
1665 pfn, folio_mapcount(folio));
1686 kill_procs(&tokill, forcekill, pfn, flags);
1691 static int identify_page_state(unsigned long pfn, struct page *p,
1711 return page_action(ps, p, pfn);
1733 static void unmap_and_kill(struct list_head *to_kill, unsigned long pfn,
1755 kill_procs(to_kill, flags & MF_MUST_KILL, pfn, flags);
1767 static int mf_generic_kill_procs(unsigned long long pfn, int flags,
1770 struct folio *folio = pfn_folio(pfn);
1779 * also prevents changes to the mapping of this pfn until
1819 unmap_and_kill(&to_kill, pfn, folio->mapping, folio->index, flags);
2021 int __get_huge_page_for_hwpoison(unsigned long pfn, int flags,
2024 struct page *page = pfn_to_page(pfn);
2074 static int try_memory_failure_hugetlb(unsigned long pfn, int flags, int *hugetlb)
2077 struct page *p = pfn_to_page(pfn);
2084 res = get_huge_page_for_hwpoison(pfn, flags, &migratable_cleared);
2089 pr_err("%#lx: already hardware poisoned\n", pfn);
2093 action_result(pfn, MF_MSG_ALREADY_POISONED, MF_FAILED);
2101 return action_result(pfn, MF_MSG_GET_HWPOISON, MF_IGNORED);
2129 return action_result(pfn, MF_MSG_FREE_HUGE, res);
2134 if (!hwpoison_user_mappings(folio, p, pfn, flags)) {
2136 return action_result(pfn, MF_MSG_UNMAP_FAILED, MF_FAILED);
2139 return identify_page_state(pfn, p, page_flags);
2143 static inline int try_memory_failure_hugetlb(unsigned long pfn, int flags, int *hugetlb)
2155 static void put_ref_page(unsigned long pfn, int flags)
2160 put_page(pfn_to_page(pfn));
2163 static int memory_failure_dev_pagemap(unsigned long pfn, int flags,
2169 if (!pgmap_pfn_valid(pgmap, pfn))
2177 rc = pgmap->ops->memory_failure(pgmap, pfn, 1, flags);
2186 rc = mf_generic_kill_procs(pfn, flags, pgmap);
2191 action_result(pfn, MF_MSG_DAX, rc ? MF_FAILED : MF_RECOVERED);
2202 static void kill_procs_now(struct page *p, unsigned long pfn, int flags,
2208 kill_procs(&tokill, true, pfn, flags);
2213 * @pfn: Page Number of the corrupted page
2236 int memory_failure(unsigned long pfn, int flags)
2247 panic("Memory failure on page %lx", pfn);
2254 p = pfn_to_online_page(pfn);
2256 res = arch_memory_failure(pfn, flags);
2260 if (pfn_valid(pfn)) {
2261 pgmap = get_dev_pagemap(pfn, NULL);
2262 put_ref_page(pfn, flags);
2264 res = memory_failure_dev_pagemap(pfn, flags,
2269 pr_err("%#lx: memory outside kernel control\n", pfn);
2275 res = try_memory_failure_hugetlb(pfn, flags, &hugetlb);
2280 pr_err("%#lx: already hardware poisoned\n", pfn);
2283 res = kill_accessing_process(current, pfn, flags);
2286 action_result(pfn, MF_MSG_ALREADY_POISONED, MF_FAILED);
2317 res = action_result(pfn, MF_MSG_BUDDY, res);
2319 res = action_result(pfn, MF_MSG_KERNEL_HIGH_ORDER, MF_IGNORED);
2323 res = action_result(pfn, MF_MSG_GET_HWPOISON, MF_IGNORED);
2358 kill_procs_now(p, pfn, flags, folio);
2360 action_result(pfn, MF_MSG_UNSPLIT_THP, MF_FAILED);
2413 if (!hwpoison_user_mappings(folio, p, pfn, flags)) {
2414 res = action_result(pfn, MF_MSG_UNMAP_FAILED, MF_FAILED);
2423 res = action_result(pfn, MF_MSG_TRUNCATED_LRU, MF_IGNORED);
2428 res = identify_page_state(pfn, p, page_flags);
2443 unsigned long pfn;
2458 * @pfn: Page Number of the corrupted page
2472 void memory_failure_queue(unsigned long pfn, int flags)
2478 .pfn = pfn,
2491 pfn);
2510 soft_offline_page(entry.pfn, entry.flags);
2512 memory_failure(entry.pfn, entry.flags);
2536 #define unpoison_pr_info(fmt, pfn, rs) \
2539 pr_info(fmt, pfn); \
2544 * @pfn: Page number of the to be unpoisoned page
2554 int unpoison_memory(unsigned long pfn)
2564 if (!pfn_valid(pfn))
2567 p = pfn_to_page(pfn);
2574 pfn, &unpoison_rs);
2581 pfn, &unpoison_rs);
2588 pfn, &unpoison_rs);
2594 pfn, &unpoison_rs);
2604 pfn, &unpoison_rs);
2610 pfn, &unpoison_rs);
2629 pfn, &unpoison_rs);
2652 num_poisoned_pages_sub(pfn, 1);
2671 unsigned long pfn = page_to_pfn(page);
2685 pr_info("%#lx: thp split failed\n", pfn);
2697 pr_info("%#lx: page already poisoned\n", pfn);
2710 pr_info("%#lx: invalidated\n", pfn);
2739 pfn, msg_page[huge], ret, &page->flags);
2745 pfn, msg_page[huge], page_count(page), &page->flags);
2753 * @pfn: pfn to soft-offline
2776 int soft_offline_page(unsigned long pfn, int flags)
2782 if (!pfn_valid(pfn)) {
2788 page = pfn_to_online_page(pfn);
2790 put_ref_page(pfn, flags);
2796 put_ref_page(pfn, flags);
2803 pr_info("%#lx: page already poisoned\n", pfn);
2804 put_ref_page(pfn, flags);