Lines Matching defs:pv
270 * Data for the pv entry allocation mechanism
293 static void free_pv_entry(pmap_t pmap, pv_entry_t pv);
299 vaddr_t va, pv_entry_t pv, int freepte);
511 * Initialize the global pv list lock.
651 pv_to_chunk(pv_entry_t pv)
653 return ((struct pv_chunk *)((uintptr_t)pv & ~(uintptr_t)PAGE_MASK));
656 #define PV_PMAP(pv) (pv_to_chunk(pv)->pc_pmap)
685 * another pv entry chunk.
694 pv_entry_t pv;
735 pv = &pc->pc_pventry[idx];
736 va = pv->pv_va;
747 TAILQ_REMOVE(&m->mdpage.pv_list, pv, pv_list);
774 * One freed pv entry in locked_pmap is
805 free_pv_entry(pmap_t pmap, pv_entry_t pv)
815 pc = pv_to_chunk(pv);
816 idx = pv - &pc->pc_pventry[0];
868 pv_entry_t pv;
887 pv = &pc->pc_pventry[idx];
893 return (pv); /* not full, return */
898 return (pv);
924 pv = &pc->pc_pventry[0];
927 return (pv);
931 * Conditionally create a pv entry.
937 pv_entry_t pv;
941 if ((pv = get_pv_entry(pmap, true)) != NULL) {
942 pv->pv_va = va;
943 TAILQ_INSERT_TAIL(&m->mdpage.pv_list, pv, pv_list);
1050 pmap_remove_entry(pmap_t pmap, struct vm_page *m, vaddr_t va, pv_entry_t pv)
1054 if (!pv) {
1055 TAILQ_FOREACH(pv, &m->mdpage.pv_list, pv_list) {
1056 if (pmap == PV_PMAP(pv) && va == pv->pv_va)
1061 if (pv) {
1062 TAILQ_REMOVE(&m->mdpage.pv_list, pv, pv_list);
1068 free_pv_entry(pmap, pv);
1076 * Create a pv entry for page at pa for
1082 pv_entry_t pv;
1085 pv = get_pv_entry(pmap, false);
1086 pv->pv_va = va;
1087 TAILQ_INSERT_TAIL(&m->mdpage.pv_list, pv, pv_list);
1217 pv_entry_t pv, int freepte)
1239 error = pmap_remove_entry(pmap, m, va, pv);
2287 pv_entry_t pv;
2303 TAILQ_FOREACH(pv, &pg->mdpage.pv_list, pv_list) {
2304 pmap = PV_PMAP(pv);
2305 va = pv->pv_va;
2330 pv_entry_t pv;
2358 TAILQ_FOREACH(pv, &pg->mdpage.pv_list, pv_list) {
2359 pmap = PV_PMAP(pv);
2362 pte = pmap_find_vhpt(pv->pv_va);
2366 pmap_invalidate_page(pv->pv_va);
2392 pv_entry_t pv;
2404 TAILQ_FOREACH(pv, &pg->mdpage.pv_list, pv_list) {
2405 pmap = PV_PMAP(pv);
2408 pte = pmap_find_vhpt(pv->pv_va);
2413 pmap_invalidate_page(pv->pv_va);
2432 pv_entry_t pv;
2453 TAILQ_FOREACH(pv, &pg->mdpage.pv_list, pv_list) {
2454 pmap = PV_PMAP(pv);
2457 pte = pmap_find_vhpt(pv->pv_va);
2483 pv_entry_t pv;
2494 TAILQ_FOREACH(pv, &pg->mdpage.pv_list, pv_list) {
2495 pmap = PV_PMAP(pv);
2498 pte = pmap_find_vhpt(pv->pv_va);
2613 pv_entry_t pv;
2622 while ((pv = TAILQ_FIRST(&m->mdpage.pv_list)) != NULL) {
2624 pmap_t pmap = PV_PMAP(pv);
2625 vaddr_t va = pv->pv_va;
2634 pmap_remove_pte(pmap, pte, va, pv, 1);