Lines Matching defs:pve

1508 pmap_enter_pv(struct vm_page *pg, struct pv_entry *pve, pmap_t pm,
1515 pve->pv_pmap = kernel_pmap;
1516 pve->pv_va = pg->md.pv_kva;
1517 pve->pv_flags = PVF_WRITE | PVF_UNMAN;
1520 TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list);
1521 TAILQ_INSERT_HEAD(&kernel_pmap->pm_pvlist, pve, pv_plist);
1525 if ((pve = pmap_get_pv_entry()) == NULL)
1528 pve->pv_pmap = pm;
1529 pve->pv_va = va;
1530 pve->pv_flags = flags;
1531 TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list);
1532 TAILQ_INSERT_HEAD(&pm->pm_pvlist, pve, pv_plist);
1534 if (pve->pv_flags & PVF_WIRED)
1586 * => we return the removed pve
1590 pmap_nuke_pv(struct vm_page *pg, pmap_t pm, struct pv_entry *pve)
1596 TAILQ_REMOVE(&pg->md.pv_list, pve, pv_list);
1597 TAILQ_REMOVE(&pm->pm_pvlist, pve, pv_plist);
1598 if (pve->pv_flags & PVF_WIRED)
1606 if ((pve->pv_flags & PVF_NC) && ((pm == kernel_pmap) ||
1607 (pve->pv_flags & PVF_WRITE) || !(pve->pv_flags & PVF_MWC)))
1609 else if (pve->pv_flags & PVF_WRITE) {
1610 TAILQ_FOREACH(pve, &pg->md.pv_list, pv_list)
1611 if (pve->pv_flags & PVF_WRITE)
1613 if (!pve) {
1638 struct pv_entry *pve;
1641 pve = TAILQ_FIRST(&pg->md.pv_list);
1643 while (pve) {
1644 if (pve->pv_pmap == pm && pve->pv_va == va) { /* match? */
1645 pmap_nuke_pv(pg, pm, pve);
1648 pve = TAILQ_NEXT(pve, pv_list);
1651 if (pve == NULL && pg->md.pv_kva == va)
1654 return(pve); /* return removed pve */
2652 struct pv_entry *pve;
2693 if ((pve = pmap_get_pv_entry()) == NULL)
2696 pmap_enter_pv(m, pve, kernel_pmap, va,
2781 struct pv_entry *pve;
2803 (pve = pmap_remove_pv(m, kernel_pmap, va)))
2804 pmap_free_pv_entry(pve);
3218 struct pv_entry *pve = NULL;
3355 if ((pve = pmap_remove_pv(opg, pmap, va))) {
3358 * because PG_FICTITIOUS pages could free the pve
3360 oflags = pve->pv_flags;
3386 pmap_free_pv_entry(pve);
3387 pve = NULL;
3392 pve = pmap_get_pv_entry();
3396 pve = pmap_get_pv_entry();
3402 KASSERT(pve != NULL, ("No pv"));
3404 pmap_enter_pv(m, pve, pmap, va, nflags);
3411 KASSERT(pve != NULL, ("No pv"));
3412 pmap_enter_pv(m, pve, pmap, va, nflags);
3898 struct pv_entry *pve;
3900 pve = pmap_remove_pv(pg, pm, sva);
3901 if (pve) {
3902 is_exec = PV_BEEN_EXECD(pve->pv_flags);
3903 is_refd = PV_BEEN_REFD(pve->pv_flags);
3904 pmap_free_pv_entry(pve);