Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vm_page.c
Show First 20 Lines • Show All 3,540 Lines • ▼ Show 20 Lines | if (PMAP_HAS_DMAP && (m->flags & PG_ZERO) != 0) { | ||||
uint64_t *p; | uint64_t *p; | ||||
int i; | int i; | ||||
p = (uint64_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)); | p = (uint64_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)); | ||||
for (i = 0; i < PAGE_SIZE / sizeof(uint64_t); i++, p++) | for (i = 0; i < PAGE_SIZE / sizeof(uint64_t); i++, p++) | ||||
KASSERT(*p == 0, ("vm_page_free_prep %p PG_ZERO %d %jx", | KASSERT(*p == 0, ("vm_page_free_prep %p PG_ZERO %d %jx", | ||||
m, i, (uintmax_t)*p)); | m, i, (uintmax_t)*p)); | ||||
} | } | ||||
#endif | #endif | ||||
if ((m->oflags & VPO_UNMANAGED) == 0) | if ((m->oflags & VPO_UNMANAGED) == 0) { | ||||
KASSERT(!pmap_page_is_mapped(m), | KASSERT(!pmap_page_is_mapped(m), | ||||
("vm_page_free_prep: freeing mapped page %p", m)); | ("vm_page_free_prep: freeing mapped page %p", m)); | ||||
else | KASSERT((m->aflags & (PGA_EXECUTABLE | PGA_WRITEABLE)) == 0, | ||||
("vm_page_free_prep: mapping flags set in page %p", m)); | |||||
} else { | |||||
KASSERT(m->queue == PQ_NONE, | KASSERT(m->queue == PQ_NONE, | ||||
("vm_page_free_prep: unmanaged page %p is queued", m)); | ("vm_page_free_prep: unmanaged page %p is queued", m)); | ||||
} | |||||
VM_CNT_INC(v_tfree); | VM_CNT_INC(v_tfree); | ||||
if (vm_page_sbusied(m)) | if (vm_page_sbusied(m)) | ||||
panic("vm_page_free_prep: freeing busy page %p", m); | panic("vm_page_free_prep: freeing busy page %p", m); | ||||
if (m->object != NULL) { | if (m->object != NULL) { | ||||
vm_page_object_remove(m); | vm_page_object_remove(m); | ||||
▲ Show 20 Lines • Show All 1,365 Lines • Show Last 20 Lines |