Lines Matching refs:pfn
237 static struct rmpentry *get_rmpentry(u64 pfn)
239 if (WARN_ON_ONCE(pfn > rmptable_max_pfn))
242 return &rmptable[pfn];
245 static struct rmpentry *__snp_lookup_rmpentry(u64 pfn, int *level)
252 entry = get_rmpentry(pfn);
261 large_entry = get_rmpentry(pfn & PFN_PMD_MASK);
270 int snp_lookup_rmpentry(u64 pfn, bool *assigned, int *level)
274 e = __snp_lookup_rmpentry(pfn, level);
289 static void dump_rmpentry(u64 pfn)
295 e = __snp_lookup_rmpentry(pfn, &level);
298 pfn, PTR_ERR(e));
304 pfn, e->lo, e->hi);
316 pfn_i = ALIGN_DOWN(pfn, PTRS_PER_PMD);
320 pfn, pfn_i, pfn_end);
361 int psmash(u64 pfn)
363 unsigned long paddr = pfn << PAGE_SHIFT;
369 if (!pfn_valid(pfn))
408 static int adjust_direct_map(u64 pfn, int rmp_level)
419 vaddr = (unsigned long)pfn_to_kaddr(pfn);
425 if (!pfn_valid(pfn))
429 (!IS_ALIGNED(pfn, PTRS_PER_PMD) || !pfn_valid(pfn + PTRS_PER_PMD - 1)))
452 pfn, ret);
470 static int rmpupdate(u64 pfn, struct rmp_state *state)
472 unsigned long paddr = pfn << PAGE_SHIFT;
480 if (adjust_direct_map(pfn, level))
493 pfn, level, ret);
494 dump_rmpentry(pfn);
503 int rmp_make_private(u64 pfn, u64 gpa, enum pg_level level, u32 asid, bool immutable)
514 return rmpupdate(pfn, &state);
519 int rmp_make_shared(u64 pfn, enum pg_level level)
526 return rmpupdate(pfn, &state);
530 void snp_leak_pages(u64 pfn, unsigned int npages)
532 struct page *page = pfn_to_page(pfn);
534 pr_warn("Leaking PFN range 0x%llx-0x%llx\n", pfn, pfn + npages);
553 dump_rmpentry(pfn);
555 pfn++;