Lines Matching refs:m

157 static struct vnode *vm_page_alloc_init(vm_page_t m);
158 static void vm_page_clear_dirty_mask(vm_page_t m, vm_page_bits_t pagebits);
159 static void vm_page_enqueue(uint8_t queue, vm_page_t m);
162 static int vm_page_insert_after(vm_page_t m, vm_object_t object,
164 static void vm_page_insert_radixdone(vm_page_t m, vm_object_t object,
216 vm_page_t m; in vm_page_percpu_alloc() local
233 m = vm_phys_alloc_pages(object != NULL ? in vm_page_percpu_alloc()
235 if (m == NULL) in vm_page_percpu_alloc()
237 vm_phys_freecnt_adj(m, -1); in vm_page_percpu_alloc()
239 TAILQ_INSERT_TAIL(&ppcpu->vpp_pages, m, plinks.q); in vm_page_percpu_alloc()
243 m = NULL; in vm_page_percpu_alloc()
245 m = TAILQ_FIRST(&ppcpu->vpp_pages); in vm_page_percpu_alloc()
246 TAILQ_REMOVE(&ppcpu->vpp_pages, m, plinks.q); in vm_page_percpu_alloc()
251 return (m); in vm_page_percpu_alloc()
257 vm_page_percpu_free(vm_page_t m) in vm_page_percpu_free() argument
262 TAILQ_INSERT_HEAD(&ppcpu->vpp_pages, m, plinks.q); in vm_page_percpu_free()
267 m = TAILQ_FIRST(&ppcpu->vpp_pages); in vm_page_percpu_free()
268 TAILQ_REMOVE(&ppcpu->vpp_pages, m, plinks.q); in vm_page_percpu_free()
270 vm_phys_freecnt_adj(m, 1); in vm_page_percpu_free()
272 if (!vm_reserv_free_page(m)) in vm_page_percpu_free()
276 vm_phys_free_pages(m, 0); in vm_page_percpu_free()
402 vm_page_t m; in vm_page_blacklist_check() local
410 m = vm_phys_paddr_to_vm_page(pa); in vm_page_blacklist_check()
411 if (m == NULL) in vm_page_blacklist_check()
414 ret = vm_phys_unfree_page(m); in vm_page_blacklist_check()
417 TAILQ_INSERT_TAIL(&blacklist_head, m, listq); in vm_page_blacklist_check()
458 vm_page_t m; in sysctl_vm_page_blacklist() local
467 TAILQ_FOREACH(m, &blacklist_head, listq) { in sysctl_vm_page_blacklist()
469 (uintmax_t)m->phys_addr); in sysctl_vm_page_blacklist()
760 vm_page_reference(vm_page_t m) in vm_page_reference() argument
763 vm_page_aflag_set(m, PGA_REFERENCED); in vm_page_reference()
772 vm_page_busy_downgrade(vm_page_t m) in vm_page_busy_downgrade() argument
776 vm_page_assert_xbusied(m); in vm_page_busy_downgrade()
779 x = m->busy_lock; in vm_page_busy_downgrade()
781 if (atomic_cmpset_rel_int(&m->busy_lock, in vm_page_busy_downgrade()
793 vm_page_sbusied(vm_page_t m) in vm_page_sbusied() argument
797 x = m->busy_lock; in vm_page_sbusied()
807 vm_page_sunbusy(vm_page_t m) in vm_page_sunbusy() argument
811 vm_page_assert_sbusied(m); in vm_page_sunbusy()
814 x = m->busy_lock; in vm_page_sunbusy()
816 if (atomic_cmpset_int(&m->busy_lock, x, in vm_page_sunbusy()
824 if (atomic_cmpset_int(&m->busy_lock, in vm_page_sunbusy()
832 vm_page_lock(m); in vm_page_sunbusy()
833 if (!atomic_cmpset_int(&m->busy_lock, x, VPB_UNBUSIED)) { in vm_page_sunbusy()
834 vm_page_unlock(m); in vm_page_sunbusy()
837 wakeup(m); in vm_page_sunbusy()
838 vm_page_unlock(m); in vm_page_sunbusy()
852 vm_page_busy_sleep(vm_page_t m, const char *wmesg) in vm_page_busy_sleep() argument
856 vm_page_lock_assert(m, MA_OWNED); in vm_page_busy_sleep()
858 x = m->busy_lock; in vm_page_busy_sleep()
860 vm_page_unlock(m); in vm_page_busy_sleep()
864 !atomic_cmpset_int(&m->busy_lock, x, x | VPB_BIT_WAITERS)) { in vm_page_busy_sleep()
865 vm_page_unlock(m); in vm_page_busy_sleep()
868 msleep(m, vm_page_lockptr(m), PVM | PDROP, wmesg, 0); in vm_page_busy_sleep()
879 vm_page_trysbusy(vm_page_t m) in vm_page_trysbusy() argument
884 x = m->busy_lock; in vm_page_trysbusy()
887 if (atomic_cmpset_acq_int(&m->busy_lock, x, x + VPB_ONE_SHARER)) in vm_page_trysbusy()
899 vm_page_xunbusy_hard(vm_page_t m) in vm_page_xunbusy_hard() argument
902 vm_page_assert_xbusied(m); in vm_page_xunbusy_hard()
904 vm_page_lock(m); in vm_page_xunbusy_hard()
905 atomic_store_rel_int(&m->busy_lock, VPB_UNBUSIED); in vm_page_xunbusy_hard()
906 wakeup(m); in vm_page_xunbusy_hard()
907 vm_page_unlock(m); in vm_page_xunbusy_hard()
919 vm_page_flash(vm_page_t m) in vm_page_flash() argument
923 vm_page_lock_assert(m, MA_OWNED); in vm_page_flash()
926 x = m->busy_lock; in vm_page_flash()
929 if (atomic_cmpset_int(&m->busy_lock, x, in vm_page_flash()
933 wakeup(m); in vm_page_flash()
993 vm_page_t m; in PHYS_TO_VM_PAGE() local
996 m = vm_phys_paddr_to_vm_page(pa); in PHYS_TO_VM_PAGE()
997 if (m == NULL) in PHYS_TO_VM_PAGE()
998 m = vm_phys_fictitious_to_vm_page(pa); in PHYS_TO_VM_PAGE()
999 return (m); in PHYS_TO_VM_PAGE()
1005 m = &vm_page_array[pi - first_page]; in PHYS_TO_VM_PAGE()
1006 return (m); in PHYS_TO_VM_PAGE()
1024 vm_page_t m; in vm_page_getfake() local
1026 m = uma_zalloc(fakepg_zone, M_WAITOK | M_ZERO); in vm_page_getfake()
1027 vm_page_initfake(m, paddr, memattr); in vm_page_getfake()
1028 return (m); in vm_page_getfake()
1032 vm_page_initfake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr) in vm_page_initfake() argument
1035 if ((m->flags & PG_FICTITIOUS) != 0) { in vm_page_initfake()
1043 m->phys_addr = paddr; in vm_page_initfake()
1044 m->queue = PQ_NONE; in vm_page_initfake()
1046 m->flags = PG_FICTITIOUS; in vm_page_initfake()
1048 m->oflags = VPO_UNMANAGED; in vm_page_initfake()
1049 m->busy_lock = VPB_SINGLE_EXCLUSIVER; in vm_page_initfake()
1050 m->wire_count = 1; in vm_page_initfake()
1051 pmap_page_init(m); in vm_page_initfake()
1053 pmap_page_set_memattr(m, memattr); in vm_page_initfake()
1062 vm_page_putfake(vm_page_t m) in vm_page_putfake() argument
1065 KASSERT((m->oflags & VPO_UNMANAGED) != 0, ("managed %p", m)); in vm_page_putfake()
1066 KASSERT((m->flags & PG_FICTITIOUS) != 0, in vm_page_putfake()
1067 ("vm_page_putfake: bad page %p", m)); in vm_page_putfake()
1068 uma_zfree(fakepg_zone, m); in vm_page_putfake()
1078 vm_page_updatefake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr) in vm_page_updatefake() argument
1081 KASSERT((m->flags & PG_FICTITIOUS) != 0, in vm_page_updatefake()
1082 ("vm_page_updatefake: bad page %p", m)); in vm_page_updatefake()
1083 m->phys_addr = paddr; in vm_page_updatefake()
1084 pmap_page_set_memattr(m, memattr); in vm_page_updatefake()
1093 vm_page_free(vm_page_t m) in vm_page_free() argument
1096 m->flags &= ~PG_ZERO; in vm_page_free()
1097 vm_page_free_toq(m); in vm_page_free()
1106 vm_page_free_zero(vm_page_t m) in vm_page_free_zero() argument
1109 m->flags |= PG_ZERO; in vm_page_free_zero()
1110 vm_page_free_toq(m); in vm_page_free_zero()
1118 vm_page_readahead_finish(vm_page_t m) in vm_page_readahead_finish() argument
1122 KASSERT(m->valid != 0, ("%s: %p is invalid", __func__, m)); in vm_page_readahead_finish()
1130 vm_page_lock(m); in vm_page_readahead_finish()
1131 if ((m->busy_lock & VPB_BIT_WAITERS) != 0) in vm_page_readahead_finish()
1132 vm_page_activate(m); in vm_page_readahead_finish()
1134 vm_page_deactivate(m); in vm_page_readahead_finish()
1135 vm_page_unlock(m); in vm_page_readahead_finish()
1136 vm_page_xunbusy(m); in vm_page_readahead_finish()
1149 vm_page_sleep_if_busy(vm_page_t m, const char *msg) in vm_page_sleep_if_busy() argument
1153 vm_page_lock_assert(m, MA_NOTOWNED); in vm_page_sleep_if_busy()
1154 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_sleep_if_busy()
1156 if (vm_page_busied(m)) { in vm_page_sleep_if_busy()
1164 obj = m->object; in vm_page_sleep_if_busy()
1165 vm_page_lock(m); in vm_page_sleep_if_busy()
1167 vm_page_busy_sleep(m, msg); in vm_page_sleep_if_busy()
1187 vm_page_dirty_KBI(vm_page_t m) in vm_page_dirty_KBI() argument
1191 KASSERT(m->valid == VM_PAGE_BITS_ALL, in vm_page_dirty_KBI()
1193 m->dirty = VM_PAGE_BITS_ALL; in vm_page_dirty_KBI()
1204 vm_page_insert(vm_page_t m, vm_object_t object, vm_pindex_t pindex) in vm_page_insert() argument
1210 return (vm_page_insert_after(m, object, pindex, mpred)); in vm_page_insert()
1224 vm_page_insert_after(vm_page_t m, vm_object_t object, vm_pindex_t pindex, in vm_page_insert_after() argument
1232 KASSERT(m->object == NULL, in vm_page_insert_after()
1249 sobj = m->object; in vm_page_insert_after()
1250 sidx = m->pindex; in vm_page_insert_after()
1251 m->object = object; in vm_page_insert_after()
1252 m->pindex = pindex; in vm_page_insert_after()
1257 if (vm_radix_insert(&object->rtree, m)) { in vm_page_insert_after()
1258 m->object = sobj; in vm_page_insert_after()
1259 m->pindex = sidx; in vm_page_insert_after()
1262 vm_page_insert_radixdone(m, object, mpred); in vm_page_insert_after()
1278 vm_page_insert_radixdone(vm_page_t m, vm_object_t object, vm_page_t mpred) in vm_page_insert_radixdone() argument
1282 KASSERT(object != NULL && m->object == object, in vm_page_insert_radixdone()
1283 ("vm_page_insert_radixdone: page %p has inconsistent object", m)); in vm_page_insert_radixdone()
1287 KASSERT(mpred->pindex < m->pindex, in vm_page_insert_radixdone()
1292 TAILQ_INSERT_AFTER(&object->memq, mpred, m, listq); in vm_page_insert_radixdone()
1294 TAILQ_INSERT_HEAD(&object->memq, m, listq); in vm_page_insert_radixdone()
1311 if (pmap_page_is_write_mapped(m)) in vm_page_insert_radixdone()
1325 vm_page_remove(vm_page_t m) in vm_page_remove() argument
1330 if ((m->oflags & VPO_UNMANAGED) == 0) in vm_page_remove()
1331 vm_page_lock_assert(m, MA_OWNED); in vm_page_remove()
1332 if ((object = m->object) == NULL) in vm_page_remove()
1335 if (vm_page_xbusied(m)) { in vm_page_remove()
1337 if ((m->oflags & VPO_UNMANAGED) != 0 && in vm_page_remove()
1338 !mtx_owned(vm_page_lockptr(m))) { in vm_page_remove()
1340 vm_page_lock(m); in vm_page_remove()
1342 vm_page_flash(m); in vm_page_remove()
1343 atomic_store_rel_int(&m->busy_lock, VPB_UNBUSIED); in vm_page_remove()
1345 vm_page_unlock(m); in vm_page_remove()
1351 vm_radix_remove(&object->rtree, m->pindex); in vm_page_remove()
1352 TAILQ_REMOVE(&object->memq, m, listq); in vm_page_remove()
1365 m->object = NULL; in vm_page_remove()
1395 vm_page_t m; in vm_page_find_least() local
1398 if ((m = TAILQ_FIRST(&object->memq)) != NULL && m->pindex < pindex) in vm_page_find_least()
1399 m = vm_radix_lookup_ge(&object->rtree, pindex); in vm_page_find_least()
1400 return (m); in vm_page_find_least()
1410 vm_page_next(vm_page_t m) in vm_page_next() argument
1414 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_next()
1415 if ((next = TAILQ_NEXT(m, listq)) != NULL && in vm_page_next()
1416 next->pindex != m->pindex + 1) in vm_page_next()
1428 vm_page_prev(vm_page_t m) in vm_page_prev() argument
1432 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_prev()
1433 if ((prev = TAILQ_PREV(m, pglist, listq)) != NULL && in vm_page_prev()
1434 prev->pindex != m->pindex - 1) in vm_page_prev()
1503 vm_page_rename(vm_page_t m, vm_object_t new_object, vm_pindex_t new_pindex) in vm_page_rename() argument
1519 opidx = m->pindex; in vm_page_rename()
1520 m->pindex = new_pindex; in vm_page_rename()
1521 if (vm_radix_insert(&new_object->rtree, m)) { in vm_page_rename()
1522 m->pindex = opidx; in vm_page_rename()
1530 m->pindex = opidx; in vm_page_rename()
1531 vm_page_lock(m); in vm_page_rename()
1532 vm_page_remove(m); in vm_page_rename()
1535 m->pindex = new_pindex; in vm_page_rename()
1536 m->object = new_object; in vm_page_rename()
1537 vm_page_unlock(m); in vm_page_rename()
1538 vm_page_insert_radixdone(m, new_object, mpred); in vm_page_rename()
1539 vm_page_dirty(m); in vm_page_rename()
1573 vm_page_t m, mpred; in vm_page_alloc() local
1600 if ((m = vm_page_percpu_alloc(object)) != NULL) { in vm_page_alloc()
1620 OBJ_FICTITIOUS)) != OBJ_COLORED || (m = in vm_page_alloc()
1623 m = vm_phys_alloc_pages(object != NULL ? in vm_page_alloc()
1626 if (m == NULL && vm_reserv_reclaim_inactive()) { in vm_page_alloc()
1627 m = vm_phys_alloc_pages(object != NULL ? in vm_page_alloc()
1647 KASSERT(m != NULL, ("vm_page_alloc: missing page")); in vm_page_alloc()
1648 KASSERT(m->queue == PQ_NONE, in vm_page_alloc()
1649 ("vm_page_alloc: page %p has unexpected queue %d", m, m->queue)); in vm_page_alloc()
1650 KASSERT(m->wire_count == 0, ("vm_page_alloc: page %p is wired", m)); in vm_page_alloc()
1651 KASSERT(m->hold_count == 0, ("vm_page_alloc: page %p is held", m)); in vm_page_alloc()
1652 KASSERT(!vm_page_sbusied(m), in vm_page_alloc()
1653 ("vm_page_alloc: page %p is busy", m)); in vm_page_alloc()
1654 KASSERT(m->dirty == 0, ("vm_page_alloc: page %p is dirty", m)); in vm_page_alloc()
1655 KASSERT(pmap_page_get_memattr(m) == VM_MEMATTR_DEFAULT, in vm_page_alloc()
1656 ("vm_page_alloc: page %p has unexpected memattr %d", m, in vm_page_alloc()
1657 pmap_page_get_memattr(m))); in vm_page_alloc()
1658 KASSERT(m->valid == 0, in vm_page_alloc()
1659 ("vm_page_alloc: free page %p is valid", m)); in vm_page_alloc()
1660 vm_phys_freecnt_adj(m, -1); in vm_page_alloc()
1661 if ((m->flags & PG_ZERO) != 0) in vm_page_alloc()
1671 flags &= m->flags; in vm_page_alloc()
1675 m->flags = flags; in vm_page_alloc()
1676 m->aflags = 0; in vm_page_alloc()
1677 m->oflags = object == NULL || (object->flags & OBJ_UNMANAGED) != 0 ? in vm_page_alloc()
1679 m->busy_lock = VPB_UNBUSIED; in vm_page_alloc()
1681 m->busy_lock = VPB_SINGLE_EXCLUSIVER; in vm_page_alloc()
1683 m->busy_lock = VPB_SHARERS_WORD(1); in vm_page_alloc()
1690 m->wire_count = 1; in vm_page_alloc()
1692 m->act_count = 0; in vm_page_alloc()
1695 if (vm_page_insert_after(m, object, pindex, mpred)) { in vm_page_alloc()
1702 m->wire_count = 0; in vm_page_alloc()
1704 m->object = NULL; in vm_page_alloc()
1705 m->oflags = VPO_UNMANAGED; in vm_page_alloc()
1706 vm_page_free(m); in vm_page_alloc()
1713 pmap_page_set_memattr(m, object->memattr); in vm_page_alloc()
1715 m->pindex = pindex; in vm_page_alloc()
1733 return (m); in vm_page_alloc()
1792 vm_page_t m, m_tmp, m_ret; in vm_page_alloc_contig() local
1838 for (m = m_ret; m < &m_ret[npages]; m++) { in vm_page_alloc_contig()
1839 drop = vm_page_alloc_init(m); in vm_page_alloc_contig()
1844 m->plinks.s.pv = drop; in vm_page_alloc_contig()
1845 SLIST_INSERT_HEAD(&deferred_vdrop_list, m, in vm_page_alloc_contig()
1875 for (m = m_ret; m < &m_ret[npages]; m++) { in vm_page_alloc_contig()
1876 m->aflags = 0; in vm_page_alloc_contig()
1877 m->flags = (m->flags | PG_NODUMP) & flags; in vm_page_alloc_contig()
1878 m->busy_lock = VPB_UNBUSIED; in vm_page_alloc_contig()
1881 m->busy_lock = VPB_SINGLE_EXCLUSIVER; in vm_page_alloc_contig()
1883 m->busy_lock = VPB_SHARERS_WORD(1); in vm_page_alloc_contig()
1886 m->wire_count = 1; in vm_page_alloc_contig()
1888 m->oflags = VPO_UNMANAGED; in vm_page_alloc_contig()
1890 if (vm_page_insert(m, object, pindex)) { in vm_page_alloc_contig()
1898 for (m_tmp = m, m = m_ret; in vm_page_alloc_contig()
1899 m < &m_ret[npages]; m++) { in vm_page_alloc_contig()
1901 m->wire_count = 0; in vm_page_alloc_contig()
1902 if (m >= m_tmp) in vm_page_alloc_contig()
1903 m->object = NULL; in vm_page_alloc_contig()
1904 vm_page_free(m); in vm_page_alloc_contig()
1909 m->pindex = pindex; in vm_page_alloc_contig()
1911 pmap_page_set_memattr(m, memattr); in vm_page_alloc_contig()
1929 vm_page_alloc_init(vm_page_t m) in vm_page_alloc_init() argument
1933 KASSERT(m->queue == PQ_NONE, in vm_page_alloc_init()
1935 m, m->queue)); in vm_page_alloc_init()
1936 KASSERT(m->wire_count == 0, in vm_page_alloc_init()
1937 ("vm_page_alloc_init: page %p is wired", m)); in vm_page_alloc_init()
1938 KASSERT(m->hold_count == 0, in vm_page_alloc_init()
1939 ("vm_page_alloc_init: page %p is held", m)); in vm_page_alloc_init()
1940 KASSERT(!vm_page_sbusied(m), in vm_page_alloc_init()
1941 ("vm_page_alloc_init: page %p is busy", m)); in vm_page_alloc_init()
1942 KASSERT(m->dirty == 0, in vm_page_alloc_init()
1943 ("vm_page_alloc_init: page %p is dirty", m)); in vm_page_alloc_init()
1944 KASSERT(pmap_page_get_memattr(m) == VM_MEMATTR_DEFAULT, in vm_page_alloc_init()
1946 m, pmap_page_get_memattr(m))); in vm_page_alloc_init()
1949 KASSERT(m->valid == 0, in vm_page_alloc_init()
1950 ("vm_page_alloc_init: free page %p is valid", m)); in vm_page_alloc_init()
1951 vm_phys_freecnt_adj(m, -1); in vm_page_alloc_init()
1952 if ((m->flags & PG_ZERO) != 0) in vm_page_alloc_init()
1981 vm_page_t m; in vm_page_alloc_freelist() local
2001 m = vm_phys_alloc_freelist_pages(flind, VM_FREEPOOL_DIRECT, 0); in vm_page_alloc_freelist()
2009 if (m == NULL) { in vm_page_alloc_freelist()
2013 drop = vm_page_alloc_init(m); in vm_page_alloc_freelist()
2019 m->aflags = 0; in vm_page_alloc_freelist()
2023 m->flags &= flags; in vm_page_alloc_freelist()
2030 m->wire_count = 1; in vm_page_alloc_freelist()
2033 m->oflags = VPO_UNMANAGED; in vm_page_alloc_freelist()
2038 return (m); in vm_page_alloc_freelist()
2070 vm_page_t m, m_run; in vm_page_scan_contig() local
2082 for (m = m_start; m < m_end && run_len < npages; m += m_inc) { in vm_page_scan_contig()
2083 KASSERT((m->flags & (PG_FICTITIOUS | PG_MARKER)) == 0, in vm_page_scan_contig()
2084 ("page %p is PG_FICTITIOUS or PG_MARKER", m)); in vm_page_scan_contig()
2095 if (m + npages > m_end) in vm_page_scan_contig()
2097 pa = VM_PAGE_TO_PHYS(m); in vm_page_scan_contig()
2113 new_mtx = vm_page_lockptr(m); in vm_page_scan_contig()
2122 if (m->wire_count != 0 || m->hold_count != 0) in vm_page_scan_contig()
2125 else if ((level = vm_reserv_level(m)) >= 0 && in vm_page_scan_contig()
2129 pa = VM_PAGE_TO_PHYS(m); in vm_page_scan_contig()
2134 else if ((object = m->object) != NULL) { in vm_page_scan_contig()
2144 if (m->object != object) { in vm_page_scan_contig()
2150 } else if (m->wire_count != 0 || in vm_page_scan_contig()
2151 m->hold_count != 0) { in vm_page_scan_contig()
2156 KASSERT((m->flags & PG_UNHOLDFREE) == 0, in vm_page_scan_contig()
2157 ("page %p is PG_UNHOLDFREE", m)); in vm_page_scan_contig()
2163 else if (m != vm_page_lookup(object, m->pindex)) { in vm_page_scan_contig()
2177 if ((order = m->order) < VM_NFREEORDER) { in vm_page_scan_contig()
2194 (level = vm_reserv_level_iffullpop(m)) >= 0) { in vm_page_scan_contig()
2197 pa = VM_PAGE_TO_PHYS(m); in vm_page_scan_contig()
2202 m->queue != PQ_NONE && !vm_page_busied(m)) { in vm_page_scan_contig()
2208 KASSERT(pmap_page_get_memattr(m) == in vm_page_scan_contig()
2210 ("page %p has an unexpected memattr", m)); in vm_page_scan_contig()
2211 KASSERT((m->oflags & (VPO_SWAPINPROG | in vm_page_scan_contig()
2213 ("page %p has unexpected oflags", m)); in vm_page_scan_contig()
2229 } else if ((order = m->order) < VM_NFREEORDER) { in vm_page_scan_contig()
2262 m_run = m; in vm_page_scan_contig()
2303 vm_page_t m, m_end, m_new; in vm_page_reclaim_run() local
2310 m = m_run; in vm_page_reclaim_run()
2313 for (; error == 0 && m < m_end; m++) { in vm_page_reclaim_run()
2314 KASSERT((m->flags & (PG_FICTITIOUS | PG_MARKER)) == 0, in vm_page_reclaim_run()
2315 ("page %p is PG_FICTITIOUS or PG_MARKER", m)); in vm_page_reclaim_run()
2320 new_mtx = vm_page_lockptr(m); in vm_page_reclaim_run()
2328 if (m->wire_count != 0 || m->hold_count != 0) in vm_page_reclaim_run()
2330 else if ((object = m->object) != NULL) { in vm_page_reclaim_run()
2339 if (m->object != object) { in vm_page_reclaim_run()
2345 } else if (m->wire_count != 0 || in vm_page_reclaim_run()
2346 m->hold_count != 0) { in vm_page_reclaim_run()
2351 KASSERT((m->flags & PG_UNHOLDFREE) == 0, in vm_page_reclaim_run()
2352 ("page %p is PG_UNHOLDFREE", m)); in vm_page_reclaim_run()
2358 else if (m != vm_page_lookup(object, m->pindex)) { in vm_page_reclaim_run()
2367 else if (m->queue != PQ_NONE && !vm_page_busied(m)) { in vm_page_reclaim_run()
2368 KASSERT(pmap_page_get_memattr(m) == in vm_page_reclaim_run()
2370 ("page %p has an unexpected memattr", m)); in vm_page_reclaim_run()
2371 KASSERT((m->oflags & (VPO_SWAPINPROG | in vm_page_reclaim_run()
2373 ("page %p has unexpected oflags", m)); in vm_page_reclaim_run()
2375 if (m->valid != 0) { in vm_page_reclaim_run()
2386 if ((m->flags & PG_NODUMP) != 0) in vm_page_reclaim_run()
2417 ("page %p is wired", m)); in vm_page_reclaim_run()
2426 pmap_remove_all(m); in vm_page_reclaim_run()
2427 m_new->aflags = m->aflags; in vm_page_reclaim_run()
2429 ("page %p is managed", m)); in vm_page_reclaim_run()
2430 m_new->oflags = m->oflags & VPO_NOSYNC; in vm_page_reclaim_run()
2431 pmap_copy_page(m, m_new); in vm_page_reclaim_run()
2432 m_new->valid = m->valid; in vm_page_reclaim_run()
2433 m_new->dirty = m->dirty; in vm_page_reclaim_run()
2434 m->flags &= ~PG_ZERO; in vm_page_reclaim_run()
2435 vm_page_xbusy(m); in vm_page_reclaim_run()
2436 vm_page_remque(m); in vm_page_reclaim_run()
2438 m->pindex, m); in vm_page_reclaim_run()
2439 m->valid = 0; in vm_page_reclaim_run()
2440 vm_page_undirty(m); in vm_page_reclaim_run()
2454 m->flags &= ~PG_ZERO; in vm_page_reclaim_run()
2455 vm_page_remque(m); in vm_page_reclaim_run()
2456 vm_page_remove(m); in vm_page_reclaim_run()
2457 KASSERT(m->dirty == 0, in vm_page_reclaim_run()
2458 ("page %p is dirty", m)); in vm_page_reclaim_run()
2460 SLIST_INSERT_HEAD(&free, m, plinks.s.ss); in vm_page_reclaim_run()
2468 order = m->order; in vm_page_reclaim_run()
2478 m += (1 << order) - 1; in vm_page_reclaim_run()
2481 else if (vm_reserv_is_page_free(m)) in vm_page_reclaim_run()
2491 if ((m = SLIST_FIRST(&free)) != NULL) { in vm_page_reclaim_run()
2495 vm_phys_freecnt_adj(m, 1); in vm_page_reclaim_run()
2497 if (!vm_reserv_free_page(m)) in vm_page_reclaim_run()
2501 vm_phys_free_pages(m, 0); in vm_page_reclaim_run()
2502 } while ((m = SLIST_FIRST(&free)) != NULL); in vm_page_reclaim_run()
2674 vm_page_pagequeue(vm_page_t m) in vm_page_pagequeue() argument
2676 int queue = m->queue; in vm_page_pagequeue()
2677 struct vm_domain *dom = vm_phys_domain(m); in vm_page_pagequeue()
2683 vm_page_pagequeue_deferred(vm_page_t m) in vm_page_pagequeue_deferred() argument
2685 int queue = m->queue; in vm_page_pagequeue_deferred()
2686 struct vm_domain *dom = vm_phys_domain(m); in vm_page_pagequeue_deferred()
2688 vm_page_lock_assert(m, MA_OWNED); in vm_page_pagequeue_deferred()
2689 if ((queue == PQ_INACTIVE) && (m->flags & PG_PAQUEUE)) in vm_page_pagequeue_deferred()
2690 return (&dom->vmd_pagequeues[vm_page_queue_idx(m)]); in vm_page_pagequeue_deferred()
2696 vm_page_queue_fixup_locked(vm_page_t m) in vm_page_queue_fixup_locked() argument
2703 vmd = vm_phys_domain(m); in vm_page_queue_fixup_locked()
2704 vm_page_lock_assert(m, MA_OWNED); in vm_page_queue_fixup_locked()
2709 lvpq = &vmd->vmd_pagequeues[vm_page_queue_idx(m)]; in vm_page_queue_fixup_locked()
2739 vm_page_queue_fixup(vm_page_t m) in vm_page_queue_fixup() argument
2745 vmd = vm_phys_domain(m); in vm_page_queue_fixup()
2748 lvpq = &vmd->vmd_pagequeues[vm_page_queue_idx(m)]; in vm_page_queue_fixup()
2758 merged = vm_page_queue_fixup_locked(m); in vm_page_queue_fixup()
2771 vm_page_dequeue(vm_page_t m) in vm_page_dequeue() argument
2775 vm_page_assert_locked(m); in vm_page_dequeue()
2776 KASSERT(m->queue < PQ_COUNT, ("vm_page_dequeue: page %p is not queued", in vm_page_dequeue()
2777 m)); in vm_page_dequeue()
2778 pq = vm_page_pagequeue_deferred(m); in vm_page_dequeue()
2779 if (m->flags & PG_PAQUEUE) { in vm_page_dequeue()
2780 TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); in vm_page_dequeue()
2782 m->flags &= ~PG_PAQUEUE; in vm_page_dequeue()
2786 TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); in vm_page_dequeue()
2790 m->queue = PQ_NONE; in vm_page_dequeue()
2801 vm_page_dequeue_locked(vm_page_t m) in vm_page_dequeue_locked() argument
2805 vm_page_lock_assert(m, MA_OWNED); in vm_page_dequeue_locked()
2806 pq = vm_page_pagequeue_deferred(m); in vm_page_dequeue_locked()
2807 if (m->flags & PG_PAQUEUE) { in vm_page_dequeue_locked()
2808 m->flags &= ~PG_PAQUEUE; in vm_page_dequeue_locked()
2812 m->queue = PQ_NONE; in vm_page_dequeue_locked()
2813 TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); in vm_page_dequeue_locked()
2825 vm_page_enqueue(uint8_t queue, vm_page_t m) in vm_page_enqueue() argument
2829 vm_page_lock_assert(m, MA_OWNED); in vm_page_enqueue()
2832 queue, m)); in vm_page_enqueue()
2835 pq = &vm_phys_domain(m)->vmd_pagequeues[vm_page_queue_idx(m)]; in vm_page_enqueue()
2836 m->queue = queue; in vm_page_enqueue()
2838 m->flags |= PG_PAQUEUE; in vm_page_enqueue()
2839 TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); in vm_page_enqueue()
2843 vm_page_queue_fixup(m); in vm_page_enqueue()
2845 pq = &vm_phys_domain(m)->vmd_pagequeues[queue]; in vm_page_enqueue()
2847 m->queue = queue; in vm_page_enqueue()
2848 TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); in vm_page_enqueue()
2862 vm_page_requeue(vm_page_t m) in vm_page_requeue() argument
2866 vm_page_lock_assert(m, MA_OWNED); in vm_page_requeue()
2867 KASSERT(m->queue != PQ_NONE, in vm_page_requeue()
2868 ("vm_page_requeue: page %p is not queued", m)); in vm_page_requeue()
2869 pq = vm_page_pagequeue_deferred(m); in vm_page_requeue()
2870 if (m->flags & PG_PAQUEUE) { in vm_page_requeue()
2871 TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); in vm_page_requeue()
2872 TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); in vm_page_requeue()
2875 TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); in vm_page_requeue()
2876 TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); in vm_page_requeue()
2889 vm_page_requeue_locked(vm_page_t m) in vm_page_requeue_locked() argument
2893 KASSERT(m->queue != PQ_NONE, in vm_page_requeue_locked()
2894 ("vm_page_requeue_locked: page %p is not queued", m)); in vm_page_requeue_locked()
2898 if (m->flags & PG_PAQUEUE) in vm_page_requeue_locked()
2900 pq = vm_page_pagequeue(m); in vm_page_requeue_locked()
2902 TAILQ_REMOVE(&pq->pq_pl, m, plinks.q); in vm_page_requeue_locked()
2903 TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); in vm_page_requeue_locked()
2916 vm_page_activate(vm_page_t m) in vm_page_activate() argument
2920 vm_page_lock_assert(m, MA_OWNED); in vm_page_activate()
2921 if ((queue = m->queue) != PQ_ACTIVE) { in vm_page_activate()
2922 if (m->wire_count == 0 && (m->oflags & VPO_UNMANAGED) == 0) { in vm_page_activate()
2923 if (m->act_count < ACT_INIT) in vm_page_activate()
2924 m->act_count = ACT_INIT; in vm_page_activate()
2926 vm_page_dequeue(m); in vm_page_activate()
2927 vm_page_enqueue(PQ_ACTIVE, m); in vm_page_activate()
2930 ("vm_page_activate: wired page %p is queued", m)); in vm_page_activate()
2932 if (m->act_count < ACT_INIT) in vm_page_activate()
2933 m->act_count = ACT_INIT; in vm_page_activate()
2980 vm_page_free_toq(vm_page_t m) in vm_page_free_toq() argument
2984 if ((m->oflags & VPO_UNMANAGED) == 0) { in vm_page_free_toq()
2985 vm_page_lock_assert(m, MA_OWNED); in vm_page_free_toq()
2986 KASSERT(!pmap_page_is_mapped(m), in vm_page_free_toq()
2987 ("vm_page_free_toq: freeing mapped page %p", m)); in vm_page_free_toq()
2989 KASSERT(m->queue == PQ_NONE, in vm_page_free_toq()
2990 ("vm_page_free_toq: unmanaged page %p is queued", m)); in vm_page_free_toq()
2993 if (vm_page_sbusied(m)) in vm_page_free_toq()
2994 panic("vm_page_free: freeing busy page %p", m); in vm_page_free_toq()
2996 if (m->object != NULL) { in vm_page_free_toq()
2997 VM_OBJECT_ASSERT_LOCKED(m->object); in vm_page_free_toq()
2998 can_cache = ((m->object->flags & OBJ_COLORED) == 0); in vm_page_free_toq()
3008 vm_page_remque(m); in vm_page_free_toq()
3009 vm_page_remove(m); in vm_page_free_toq()
3015 if ((m->flags & PG_FICTITIOUS) != 0) { in vm_page_free_toq()
3019 m->valid = 0; in vm_page_free_toq()
3020 vm_page_undirty(m); in vm_page_free_toq()
3022 if (m->wire_count != 0) in vm_page_free_toq()
3023 panic("vm_page_free: freeing wired page %p", m); in vm_page_free_toq()
3024 if (m->hold_count != 0) { in vm_page_free_toq()
3025 m->flags &= ~PG_ZERO; in vm_page_free_toq()
3026 KASSERT((m->flags & PG_UNHOLDFREE) == 0, in vm_page_free_toq()
3027 ("vm_page_free: freeing PG_UNHOLDFREE page %p", m)); in vm_page_free_toq()
3028 m->flags |= PG_UNHOLDFREE; in vm_page_free_toq()
3033 if (pmap_page_get_memattr(m) != VM_MEMATTR_DEFAULT) in vm_page_free_toq()
3034 pmap_page_set_memattr(m, VM_MEMATTR_DEFAULT); in vm_page_free_toq()
3037 vm_page_percpu_free(m); in vm_page_free_toq()
3045 vm_phys_freecnt_adj(m, 1); in vm_page_free_toq()
3047 if (!vm_reserv_free_page(m)) in vm_page_free_toq()
3051 vm_phys_free_pages(m, 0); in vm_page_free_toq()
3052 if ((m->flags & PG_ZERO) != 0) in vm_page_free_toq()
3073 vm_page_wire(vm_page_t m) in vm_page_wire() argument
3081 vm_page_lock_assert(m, MA_OWNED); in vm_page_wire()
3082 if ((m->flags & PG_FICTITIOUS) != 0) { in vm_page_wire()
3083 KASSERT(m->wire_count == 1, in vm_page_wire()
3085 m)); in vm_page_wire()
3088 if (m->wire_count == 0) { in vm_page_wire()
3089 KASSERT((m->oflags & VPO_UNMANAGED) == 0 || in vm_page_wire()
3090 m->queue == PQ_NONE, in vm_page_wire()
3091 ("vm_page_wire: unmanaged page %p is queued", m)); in vm_page_wire()
3092 vm_page_remque(m); in vm_page_wire()
3095 m->wire_count++; in vm_page_wire()
3096 KASSERT(m->wire_count != 0, ("vm_page_wire: wire_count overflow m=%p", m)); in vm_page_wire()
3116 vm_page_unwire(vm_page_t m, uint8_t queue) in vm_page_unwire() argument
3121 queue, m)); in vm_page_unwire()
3122 if ((m->oflags & VPO_UNMANAGED) == 0) in vm_page_unwire()
3123 vm_page_assert_locked(m); in vm_page_unwire()
3124 if ((m->flags & PG_FICTITIOUS) != 0) { in vm_page_unwire()
3125 KASSERT(m->wire_count == 1, in vm_page_unwire()
3126 ("vm_page_unwire: fictitious page %p's wire count isn't one", m)); in vm_page_unwire()
3129 if (m->wire_count > 0) { in vm_page_unwire()
3130 m->wire_count--; in vm_page_unwire()
3131 if (m->wire_count == 0) { in vm_page_unwire()
3133 if ((m->oflags & VPO_UNMANAGED) == 0 && in vm_page_unwire()
3134 m->object != NULL && queue != PQ_NONE) { in vm_page_unwire()
3136 m->flags &= ~PG_WINATCFLS; in vm_page_unwire()
3137 vm_page_enqueue(queue, m); in vm_page_unwire()
3143 panic("vm_page_unwire: page %p's wire count is zero", m); in vm_page_unwire()
3169 _vm_page_deactivate(vm_page_t m, boolean_t noreuse) in _vm_page_deactivate() argument
3174 vm_page_assert_locked(m); in _vm_page_deactivate()
3180 if ((queue = m->queue) == PQ_INACTIVE && !noreuse) in _vm_page_deactivate()
3182 if (m->wire_count == 0 && (m->oflags & VPO_UNMANAGED) == 0) { in _vm_page_deactivate()
3183 pq = &vm_phys_domain(m)->vmd_pagequeues[PQ_INACTIVE]; in _vm_page_deactivate()
3187 vm_page_dequeue_locked(m); in _vm_page_deactivate()
3190 vm_page_dequeue(m); in _vm_page_deactivate()
3191 m->flags &= ~PG_WINATCFLS; in _vm_page_deactivate()
3194 m->queue = PQ_INACTIVE; in _vm_page_deactivate()
3196 TAILQ_INSERT_BEFORE(&vm_phys_domain(m)->vmd_inacthead, in _vm_page_deactivate()
3197 m, plinks.q); in _vm_page_deactivate()
3199 TAILQ_INSERT_TAIL(&pq->pq_pl, m, plinks.q); in _vm_page_deactivate()
3211 vm_page_deactivate(vm_page_t m) in vm_page_deactivate() argument
3214 _vm_page_deactivate(m, FALSE); in vm_page_deactivate()
3224 vm_page_deactivate_noreuse(vm_page_t m) in vm_page_deactivate_noreuse() argument
3227 _vm_page_deactivate(m, TRUE); in vm_page_deactivate_noreuse()
3237 vm_page_try_to_free(vm_page_t m) in vm_page_try_to_free() argument
3240 vm_page_lock_assert(m, MA_OWNED); in vm_page_try_to_free()
3241 if (m->object != NULL) in vm_page_try_to_free()
3242 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_try_to_free()
3243 if (m->dirty || m->hold_count || m->wire_count || in vm_page_try_to_free()
3244 (m->oflags & VPO_UNMANAGED) != 0 || vm_page_busied(m)) in vm_page_try_to_free()
3246 pmap_remove_all(m); in vm_page_try_to_free()
3247 if (m->dirty) in vm_page_try_to_free()
3249 vm_page_free(m); in vm_page_try_to_free()
3261 vm_page_advise(vm_page_t m, int advice) in vm_page_advise() argument
3264 vm_page_assert_locked(m); in vm_page_advise()
3265 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_advise()
3280 m->dirty = 0; in vm_page_advise()
3288 vm_page_aflag_clear(m, PGA_REFERENCED); in vm_page_advise()
3290 if (advice != MADV_FREE && m->dirty == 0 && pmap_is_modified(m)) in vm_page_advise()
3291 vm_page_dirty(m); in vm_page_advise()
3298 _vm_page_deactivate(m, m->dirty == 0); in vm_page_advise()
3315 vm_page_t m; in vm_page_grab() local
3323 if ((m = vm_page_lookup(object, pindex)) != NULL) { in vm_page_grab()
3325 vm_page_xbusied(m) : vm_page_busied(m); in vm_page_grab()
3334 vm_page_aflag_set(m, PGA_REFERENCED); in vm_page_grab()
3335 vm_page_lock(m); in vm_page_grab()
3337 vm_page_busy_sleep(m, "pgrbwt"); in vm_page_grab()
3342 vm_page_lock(m); in vm_page_grab()
3343 vm_page_wire(m); in vm_page_grab()
3344 vm_page_unlock(m); in vm_page_grab()
3348 vm_page_xbusy(m); in vm_page_grab()
3350 vm_page_sbusy(m); in vm_page_grab()
3351 return (m); in vm_page_grab()
3354 m = vm_page_alloc(object, pindex, allocflags); in vm_page_grab()
3355 if (m == NULL) { in vm_page_grab()
3362 } else if (m->valid != 0) in vm_page_grab()
3363 return (m); in vm_page_grab()
3364 if (allocflags & VM_ALLOC_ZERO && (m->flags & PG_ZERO) == 0) in vm_page_grab()
3365 pmap_zero_page(m); in vm_page_grab()
3366 return (m); in vm_page_grab()
3406 vm_page_set_valid_range(vm_page_t m, int base, int size) in vm_page_set_valid_range() argument
3410 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_set_valid_range()
3420 (m->valid & (1 << (base >> DEV_BSHIFT))) == 0) in vm_page_set_valid_range()
3421 pmap_zero_page_area(m, frag, base - frag); in vm_page_set_valid_range()
3430 (m->valid & (1 << (endoff >> DEV_BSHIFT))) == 0) in vm_page_set_valid_range()
3431 pmap_zero_page_area(m, endoff, in vm_page_set_valid_range()
3438 KASSERT((~m->valid & vm_page_bits(base, size) & m->dirty) == 0, in vm_page_set_valid_range()
3439 ("vm_page_set_valid_range: page %p is dirty", m)); in vm_page_set_valid_range()
3444 m->valid |= vm_page_bits(base, size); in vm_page_set_valid_range()
3451 vm_page_clear_dirty_mask(vm_page_t m, vm_page_bits_t pagebits) in vm_page_clear_dirty_mask() argument
3463 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_clear_dirty_mask()
3464 if (!vm_page_xbusied(m) && !pmap_page_is_write_mapped(m)) in vm_page_clear_dirty_mask()
3465 m->dirty &= ~pagebits; in vm_page_clear_dirty_mask()
3478 addr = (uintptr_t)&m->dirty; in vm_page_clear_dirty_mask()
3491 shift = (sizeof(uint32_t) - sizeof(m->dirty) - shift) * NBBY; in vm_page_clear_dirty_mask()
3512 vm_page_set_validclean(vm_page_t m, int base, int size) in vm_page_set_validclean() argument
3517 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_set_validclean()
3527 (m->valid & ((vm_page_bits_t)1 << (base >> DEV_BSHIFT))) == 0) in vm_page_set_validclean()
3528 pmap_zero_page_area(m, frag, base - frag); in vm_page_set_validclean()
3537 (m->valid & ((vm_page_bits_t)1 << (endoff >> DEV_BSHIFT))) == 0) in vm_page_set_validclean()
3538 pmap_zero_page_area(m, endoff, in vm_page_set_validclean()
3552 oldvalid = m->valid; in vm_page_set_validclean()
3554 m->valid |= pagebits; in vm_page_set_validclean()
3580 pmap_clear_modify(m); in vm_page_set_validclean()
3581 m->dirty = 0; in vm_page_set_validclean()
3582 m->oflags &= ~VPO_NOSYNC; in vm_page_set_validclean()
3584 m->dirty &= ~pagebits; in vm_page_set_validclean()
3586 vm_page_clear_dirty_mask(m, pagebits); in vm_page_set_validclean()
3590 vm_page_clear_dirty(vm_page_t m, int base, int size) in vm_page_clear_dirty() argument
3593 vm_page_clear_dirty_mask(m, vm_page_bits(base, size)); in vm_page_clear_dirty()
3603 vm_page_set_invalid(vm_page_t m, int base, int size) in vm_page_set_invalid() argument
3608 object = m->object; in vm_page_set_invalid()
3610 if (object->type == OBJT_VNODE && base == 0 && IDX_TO_OFF(m->pindex) + in vm_page_set_invalid()
3615 if (object->ref_count != 0 && m->valid == VM_PAGE_BITS_ALL && in vm_page_set_invalid()
3617 pmap_remove_all(m); in vm_page_set_invalid()
3618 KASSERT((bits == 0 && m->valid == VM_PAGE_BITS_ALL) || in vm_page_set_invalid()
3619 !pmap_page_is_mapped(m), in vm_page_set_invalid()
3620 ("vm_page_set_invalid: page %p is mapped", m)); in vm_page_set_invalid()
3621 m->valid &= ~bits; in vm_page_set_invalid()
3622 m->dirty &= ~bits; in vm_page_set_invalid()
3637 vm_page_zero_invalid(vm_page_t m, boolean_t setvalid) in vm_page_zero_invalid() argument
3642 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_zero_invalid()
3651 (m->valid & ((vm_page_bits_t)1 << i))) { in vm_page_zero_invalid()
3653 pmap_zero_page_area(m, in vm_page_zero_invalid()
3666 m->valid = VM_PAGE_BITS_ALL; in vm_page_zero_invalid()
3677 vm_page_is_valid(vm_page_t m, int base, int size) in vm_page_is_valid() argument
3681 VM_OBJECT_ASSERT_LOCKED(m->object); in vm_page_is_valid()
3683 return (m->valid != 0 && (m->valid & bits) == bits); in vm_page_is_valid()
3692 vm_page_ps_is_valid(vm_page_t m) in vm_page_ps_is_valid() argument
3696 VM_OBJECT_ASSERT_LOCKED(m->object); in vm_page_ps_is_valid()
3697 npages = atop(pagesizes[m->psind]); in vm_page_ps_is_valid()
3705 if (m[i].valid != VM_PAGE_BITS_ALL) in vm_page_ps_is_valid()
3715 vm_page_test_dirty(vm_page_t m) in vm_page_test_dirty() argument
3718 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_test_dirty()
3719 if (m->dirty != VM_PAGE_BITS_ALL && pmap_is_modified(m)) in vm_page_test_dirty()
3720 vm_page_dirty(m); in vm_page_test_dirty()
3724 vm_page_lock_KBI(vm_page_t m, const char *file, int line) in vm_page_lock_KBI() argument
3727 mtx_lock_flags_(vm_page_lockptr(m), 0, file, line); in vm_page_lock_KBI()
3731 vm_page_unlock_KBI(vm_page_t m, const char *file, int line) in vm_page_unlock_KBI() argument
3734 mtx_unlock_flags_(vm_page_lockptr(m), 0, file, line); in vm_page_unlock_KBI()
3738 vm_page_trylock_KBI(vm_page_t m, const char *file, int line) in vm_page_trylock_KBI() argument
3741 return (mtx_trylock_flags_(vm_page_lockptr(m), 0, file, line)); in vm_page_trylock_KBI()
3746 vm_page_assert_locked_KBI(vm_page_t m, const char *file, int line) in vm_page_assert_locked_KBI() argument
3749 vm_page_lock_assert_KBI(m, MA_OWNED, file, line); in vm_page_assert_locked_KBI()
3753 vm_page_lock_assert_KBI(vm_page_t m, int a, const char *file, int line) in vm_page_lock_assert_KBI() argument
3756 mtx_assert_(vm_page_lockptr(m), a, file, line); in vm_page_lock_assert_KBI()
3762 vm_page_object_lock_assert(vm_page_t m) in vm_page_object_lock_assert() argument
3771 if (m->object != NULL && !vm_page_xbusied(m)) in vm_page_object_lock_assert()
3772 VM_OBJECT_ASSERT_WLOCKED(m->object); in vm_page_object_lock_assert()
3776 vm_page_assert_pga_writeable(vm_page_t m, uint8_t bits) in vm_page_assert_pga_writeable() argument
3787 KASSERT((m->oflags & VPO_UNMANAGED) == 0, in vm_page_assert_pga_writeable()
3789 if (!vm_page_xbusied(m)) in vm_page_assert_pga_writeable()
3790 VM_OBJECT_ASSERT_LOCKED(m->object); in vm_page_assert_pga_writeable()
3831 vm_page_t m; in DB_SHOW_COMMAND() local
3841 m = PHYS_TO_VM_PAGE(addr); in DB_SHOW_COMMAND()
3843 m = (vm_page_t)addr; in DB_SHOW_COMMAND()
3847 m, m->object, (uintmax_t)m->pindex, (uintmax_t)m->phys_addr, in DB_SHOW_COMMAND()
3848 m->queue, m->hold_count, m->wire_count, m->aflags, m->oflags, in DB_SHOW_COMMAND()
3849 m->flags, m->act_count, m->busy_lock, m->valid, m->dirty); in DB_SHOW_COMMAND()