Lines Matching defs:mdpg
418 pmap_page_clear_attributes(struct vm_page_md *mdpg, u_long clear_attributes)
420 volatile u_long * const attrp = &mdpg->mdpg_attrs;
441 pmap_page_set_attributes(struct vm_page_md *mdpg, u_long set_attributes)
444 atomic_or_ulong(&mdpg->mdpg_attrs, set_attributes);
446 mdpg->mdpg_attrs |= set_attributes;
458 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
459 pv_entry_t pv = &mdpg->mdpg_first;
467 VM_PAGEMD_PVLIST_READLOCK(mdpg);
468 pmap_pvlist_check(mdpg);
490 pmap_pvlist_check(mdpg);
491 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
493 pmap_md_page_syncicache(mdpg, onproc);
895 pmap_page_remove(struct vm_page_md *mdpg)
898 VM_PAGEMD_PVLIST_LOCK(mdpg);
899 pmap_pvlist_check(mdpg);
902 VM_PAGEMD_VMPAGE_P(mdpg) ? VM_MD_TO_PAGE(mdpg) : NULL;
906 UVMHIST_CALLARGS(pmaphist, "mdpg %#jx pg %#jx (pa %#jx): "
907 "execpage cleared", (uintptr_t)mdpg, (uintptr_t)pg,
910 UVMHIST_CALLARGS(pmaphist, "mdpg %#jx", (uintptr_t)mdpg, 0,
915 pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE | VM_PAGEMD_UNCACHED);
917 pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE);
921 pv_entry_t pv = &mdpg->mdpg_first;
923 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
958 pv_entry_t fpv = &mdpg->mdpg_first;
1012 pmap_pvlist_check(mdpg);
1013 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
1037 struct vm_page_md *mdpg = PMAP_PAGE_TO_MD(pp);
1038 pmap_page_remove(mdpg);
1191 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
1208 pv = &mdpg->mdpg_first;
1210 VM_PAGEMD_PVLIST_READLOCK(mdpg);
1211 pmap_pvlist_check(mdpg);
1227 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
1231 if (gen != VM_PAGEMD_PVLIST_READLOCK(mdpg)) {
1232 pv = &mdpg->mdpg_first;
1236 pmap_pvlist_check(mdpg);
1239 pmap_pvlist_check(mdpg);
1240 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
1246 pmap_page_remove(mdpg);
1274 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
1275 if (VM_PAGEMD_EXECPAGE_P(mdpg)) {
1276 KASSERT(!VM_PAGEMD_PVLIST_EMPTY_P(mdpg));
1278 if (VM_PAGEMD_CACHED_P(mdpg)) {
1345 pmap_page_cache(struct vm_page_md *mdpg, bool cached)
1348 const bool vmpage_p = VM_PAGEMD_VMPAGE_P(mdpg);
1349 struct vm_page * const pg = vmpage_p ? VM_MD_TO_PAGE(mdpg) : NULL;
1353 UVMHIST_CALLARGS(pmaphist, "(mdpg=%#jx (pa %#jx) cached=%jd vmpage %jd)",
1354 (uintptr_t)mdpg, pg ? VM_PAGE_TO_PHYS(pg) : 0, cached, vmpage_p);
1357 KASSERT(VM_PAGEMD_PVLIST_LOCKED_P(mdpg));
1360 pmap_page_clear_attributes(mdpg, VM_PAGEMD_UNCACHED);
1363 pmap_page_set_attributes(mdpg, VM_PAGEMD_UNCACHED);
1367 for (pv_entry_t pv = &mdpg->mdpg_first; pv != NULL; pv = pv->pv_next) {
1439 struct vm_page_md * const mdpg = (pg ? VM_PAGE_TO_MD(pg) : NULL);
1447 if (mdpg) {
1450 pmap_page_set_attributes(mdpg, VM_PAGEMD_MODIFIED | VM_PAGEMD_REFERENCED);
1452 pmap_page_set_attributes(mdpg, VM_PAGEMD_REFERENCED);
1456 if (!VM_PAGEMD_CACHED_P(mdpg)) {
1465 pmap_page_set_attributes(mdpg, VM_PAGEMD_REFERENCED);
1481 KASSERTMSG(mdpg == NULL || mdpp == NULL || is_efirt_pmap_p,
1482 "mdpg %p mdpp %p efirt %s", mdpg, mdpp,
1485 struct vm_page_md *md = (mdpg != NULL) ? mdpg : mdpp;
1543 KASSERT(mdpg != NULL);
1545 if (!VM_PAGEMD_EXECPAGE_P(mdpg) && pte_cached_p(npte)) {
1551 pmap_page_set_attributes(mdpg,
1565 KASSERT(mdpg != NULL);
1569 pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE);
1584 struct vm_page_md * const mdpg = (pg ? VM_PAGE_TO_MD(pg) : NULL);
1591 if (mdpg == NULL) {
1600 pt_entry_t npte = pte_make_kenter_pa(pa, mdpg, prot, flags);
1614 pmap_enter_pv(pmap, va, pa, mdpg, &npte, PV_KENTER);
1846 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
1852 bool rv = pmap_page_clear_attributes(mdpg, VM_PAGEMD_REFERENCED);
1877 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
1878 pv_entry_t pv = &mdpg->mdpg_first;
1886 if (VM_PAGEMD_EXECPAGE_P(mdpg)) {
1891 pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE);
1901 if (!pmap_page_clear_attributes(mdpg, VM_PAGEMD_MODIFIED)) {
1916 VM_PAGEMD_PVLIST_READLOCK(mdpg);
1917 pmap_pvlist_check(mdpg);
1934 const uintptr_t gen = VM_PAGEMD_PVLIST_UNLOCK(mdpg);
1940 if (__predict_false(gen != VM_PAGEMD_PVLIST_READLOCK(mdpg))) {
1944 pv_next = &mdpg->mdpg_first;
1945 pmap_pvlist_check(mdpg);
1948 pmap_pvlist_check(mdpg);
1949 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
1977 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
1978 pmap_page_set_attributes(mdpg, VM_PAGEMD_MODIFIED | VM_PAGEMD_REFERENCED);
1984 pmap_pvlist_check(struct vm_page_md *mdpg)
1987 pv_entry_t pv = &mdpg->mdpg_first;
2004 || VM_PAGEMD_UNCACHED_P(mdpg), "colors=%#x uncached=%u",
2005 colors, VM_PAGEMD_UNCACHED_P(mdpg));
2018 pmap_enter_pv(pmap_t pmap, vaddr_t va, paddr_t pa, struct vm_page_md *mdpg,
2024 struct vm_page *pg = VM_PAGEMD_VMPAGE_P(mdpg) ? VM_MD_TO_PAGE(mdpg) :
2040 VM_PAGEMD_PVLIST_LOCK(mdpg);
2042 pv = &mdpg->mdpg_first;
2043 pmap_pvlist_check(mdpg);
2055 KASSERT(VM_PAGEMD_CACHED_P(mdpg));
2059 pmap_md_vca_clean(mdpg, PMAP_WBINV);
2066 if (pmap_md_vca_add(mdpg, va, nptep)) {
2092 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
2108 pmap_pvlist_check(mdpg);
2109 const uintptr_t gen = VM_PAGEMD_PVLIST_UNLOCK(mdpg);
2119 if (gen != VM_PAGEMD_PVLIST_LOCK(mdpg))
2144 pmap_pvlist_check(mdpg);
2145 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
2163 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
2174 pv = &mdpg->mdpg_first;
2176 VM_PAGEMD_PVLIST_LOCK(mdpg);
2177 pmap_pvlist_check(mdpg);
2194 pmap_page_clear_attributes(mdpg, VM_PAGEMD_UNCACHED);
2211 pmap_pvlist_check(mdpg);
2212 VM_PAGEMD_PVLIST_UNLOCK(mdpg);
2223 if (VM_PAGEMD_EXECPAGE_P(mdpg) && dirty) {
2232 pmap_page_clear_attributes(mdpg, VM_PAGEMD_EXECPAGE);
2281 pmap_pvlist_lock_addr(struct vm_page_md *mdpg)
2284 kmutex_t *lock = mdpg->mdpg_lock;
2298 lock = atomic_cas_ptr(&mdpg->mdpg_lock, NULL, new_lock);
2319 pmap_pvlist_lock_addr(struct vm_page_md *mdpg)
2324 if (__predict_false(mdpg->mdpg_lock == NULL)) {
2325 mdpg->mdpg_lock = &pmap_pvlist_mutex;
2331 return mdpg->mdpg_lock;
2410 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
2411 KASSERT(!VM_PAGEMD_EXECPAGE_P(mdpg));
2413 pmap_page_set_attributes(mdpg, VM_PAGEMD_POOLPAGE);
2439 struct vm_page_md * const mdpg = VM_PAGE_TO_MD(pg);
2440 pv_entry_t pv = &mdpg->mdpg_first;
2448 if (VM_PAGEMD_VMPAGE_P(mdpg)) {
2452 if (VM_PAGEMD_POOLPAGE_P(mdpg)) {
2459 if (VM_PAGEMD_UNCACHED_P(mdpg)) {
2468 if (VM_PAGEMD_REFERENCED_P(mdpg)) {
2472 if (VM_PAGEMD_MODIFIED_P(mdpg)) {
2478 if (VM_PAGEMD_EXECPAGE_P(mdpg)) {