Page MenuHomeFreeBSD

D50161.1784149774.diff
No OneTemporary

Size
20 KB
Referenced Files
None
Subscribers
None

D50161.1784149774.diff

Index: sys/amd64/acpica/acpi_wakeup.c
===================================================================
--- sys/amd64/acpica/acpi_wakeup.c
+++ sys/amd64/acpica/acpi_wakeup.c
@@ -367,7 +367,7 @@
free(*wakeaddr, M_DEVBUF);
for (i = 0; i < ACPI_WAKEPT_PAGES; i++) {
if (wakept_m[i] != NULL)
- vm_page_free(wakept_m[i]);
+ vm_page_free_noobj(wakept_m[i]);
}
*wakeaddr = NULL;
}
Index: sys/amd64/amd64/mp_machdep.c
===================================================================
--- sys/amd64/amd64/mp_machdep.c
+++ sys/amd64/amd64/mp_machdep.c
@@ -453,13 +453,13 @@
kernel_pmap->pm_pmltop[0] = old_pml45;
invlpg(0);
if (la57)
- vm_page_free(m_pml4);
- vm_page_free(m_pd[3]);
- vm_page_free(m_pd[2]);
- vm_page_free(m_pd[1]);
- vm_page_free(m_pd[0]);
- vm_page_free(m_pdp);
- vm_page_free(m_boottramp);
+ vm_page_free_noobj(m_pml4);
+ vm_page_free_noobj(m_pd[3]);
+ vm_page_free_noobj(m_pd[2]);
+ vm_page_free_noobj(m_pd[1]);
+ vm_page_free_noobj(m_pd[0]);
+ vm_page_free_noobj(m_pdp);
+ vm_page_free_noobj(m_boottramp);
/* number of APs actually started */
return (mp_naps);
Index: sys/amd64/amd64/pmap.c
===================================================================
--- sys/amd64/amd64/pmap.c
+++ sys/amd64/amd64/pmap.c
@@ -2284,10 +2284,10 @@
*/
pte_clear(&v_pml5[pmap_pml5e_index(VM_PAGE_TO_PHYS(m_code))]);
invlpg((vm_offset_t)v_code);
- vm_page_free(m_code);
- vm_page_free(m_pdp);
- vm_page_free(m_pd);
- vm_page_free(m_pt);
+ vm_page_free_noobj(m_code);
+ vm_page_free_noobj(m_pdp);
+ vm_page_free_noobj(m_pd);
+ vm_page_free_noobj(m_pt);
/*
* Recursively map PML5 to itself in order to get PTmap and
@@ -4464,7 +4464,7 @@
if (zerofilled)
vm_page_free_zero(m);
else
- vm_page_free(m);
+ vm_page_free_noobj(m);
pmap_pt_page_count_adj(pmap, -1);
}
@@ -5557,7 +5557,7 @@
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
dump_drop_page(m->phys_addr);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
static void
Index: sys/arm/arm/pmap-v6.c
===================================================================
--- sys/arm/arm/pmap-v6.c
+++ sys/arm/arm/pmap-v6.c
@@ -2947,7 +2947,7 @@
m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
pmap_qremove((vm_offset_t)pc, 1);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
pmap_pte2list_free(&pv_vafree, (vm_offset_t)pc);
}
Index: sys/arm/nvidia/drm2/tegra_bo.c
===================================================================
--- sys/arm/nvidia/drm2/tegra_bo.c
+++ sys/arm/nvidia/drm2/tegra_bo.c
@@ -68,7 +68,7 @@
cdev_mgtdev_pager_free_page(&pages, m);
m->flags &= ~PG_FICTITIOUS;
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
VM_OBJECT_WUNLOCK(bo->cdev_pager);
Index: sys/arm64/arm64/pmap.c
===================================================================
--- sys/arm64/arm64/pmap.c
+++ sys/arm64/arm64/pmap.c
@@ -3442,7 +3442,7 @@
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
dump_drop_page(m->phys_addr);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
static void
@@ -5776,7 +5776,7 @@
uwptpg->pindex = pmap_l2_pindex(va);
if (pmap_insert_pt_page(pmap, uwptpg, true, false)) {
vm_page_unwire_noq(uwptpg);
- vm_page_free(uwptpg);
+ vm_page_free_noobj(uwptpg);
pmap_abort_ptp(pmap, va, l2pg);
return (KERN_RESOURCE_SHORTAGE);
}
@@ -5798,7 +5798,7 @@
pmap_resident_count_dec(pmap, 1);
uwptpg->ref_count = 1;
vm_page_unwire_noq(uwptpg);
- vm_page_free(uwptpg);
+ vm_page_free_noobj(uwptpg);
}
CTR2(KTR_PMAP,
"pmap_enter_l2: failure for va %#lx in pmap %p",
Index: sys/arm64/iommu/iommu_pmap.c
===================================================================
--- sys/arm64/iommu/iommu_pmap.c
+++ sys/arm64/iommu/iommu_pmap.c
@@ -841,18 +841,18 @@
vm_page_unwire_noq(m1);
vm_page_unwire_noq(m);
smmu_pmap_resident_count_dec(pmap, 1);
- vm_page_free(m);
+ vm_page_free_noobj(m);
smmu_pmap_clear(&l2[k]);
}
vm_page_unwire_noq(m0);
smmu_pmap_resident_count_dec(pmap, 1);
- vm_page_free(m1);
+ vm_page_free_noobj(m1);
smmu_pmap_clear(&l1[j]);
}
smmu_pmap_resident_count_dec(pmap, 1);
- vm_page_free(m0);
+ vm_page_free_noobj(m0);
smmu_pmap_clear(&pmap->sp_l0[i]);
}
Index: sys/arm64/vmm/vmm_mmu.c
===================================================================
--- sys/arm64/vmm/vmm_mmu.c
+++ sys/arm64/vmm/vmm_mmu.c
@@ -85,7 +85,7 @@
m = PHYS_TO_VM_PAGE(l2e & ~ATTR_MASK);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
static void
@@ -104,7 +104,7 @@
m = PHYS_TO_VM_PAGE(l1e & ~ATTR_MASK);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
static void
@@ -123,7 +123,7 @@
m = PHYS_TO_VM_PAGE(l0e & ~ATTR_MASK);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
void
@@ -141,7 +141,7 @@
m = PHYS_TO_VM_PAGE(l0_paddr);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
mtx_destroy(&vmmpmap_mtx);
}
Index: sys/compat/linuxkpi/common/src/linux_page.c
===================================================================
--- sys/compat/linuxkpi/common/src/linux_page.c
+++ sys/compat/linuxkpi/common/src/linux_page.c
@@ -166,7 +166,7 @@
vm_page_t pgo = page + x;
if (vm_page_unwire_noq(pgo))
- vm_page_free(pgo);
+ vm_page_free_noobj(pgo);
}
} else {
vm_offset_t vaddr;
Index: sys/dev/drm2/ttm/ttm_bo.c
===================================================================
--- sys/dev/drm2/ttm/ttm_bo.c
+++ sys/dev/drm2/ttm/ttm_bo.c
@@ -1470,7 +1470,7 @@
{
ttm_mem_unregister_shrink(glob->mem_glob, &glob->shrink);
- vm_page_free(glob->dummy_read_page);
+ vm_page_free_noobj(glob->dummy_read_page);
}
void ttm_bo_global_release(struct drm_global_reference *ref)
@@ -1523,7 +1523,7 @@
return (0);
out_no_shrink:
- vm_page_free(glob->dummy_read_page);
+ vm_page_free_noobj(glob->dummy_read_page);
out_no_drp:
free(glob, M_DRM_GLOBAL);
return ret;
Index: sys/dev/drm2/ttm/ttm_page_alloc.c
===================================================================
--- sys/dev/drm2/ttm/ttm_page_alloc.c
+++ sys/dev/drm2/ttm/ttm_page_alloc.c
@@ -136,7 +136,7 @@
m->flags &= ~PG_FICTITIOUS;
m->oflags |= VPO_UNMANAGED;
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
static vm_memattr_t
Index: sys/dev/gve/gve_qpl.c
===================================================================
--- sys/dev/gve/gve_qpl.c
+++ sys/dev/gve/gve_qpl.c
@@ -62,7 +62,7 @@
pmap_qremove((vm_offset_t)qpl->dmas[i].cpu_addr, 1);
kva_free((vm_offset_t)qpl->dmas[i].cpu_addr, PAGE_SIZE);
}
- vm_page_free(qpl->pages[i]);
+ vm_page_free_noobj(qpl->pages[i]);
}
priv->num_registered_pages--;
@@ -254,6 +254,6 @@
if (__predict_false(vm_page_unwire_noq(page))) {
pmap_qremove(va, 1);
kva_free(va, PAGE_SIZE);
- vm_page_free(page);
+ vm_page_free_noobj(page);
}
}
Index: sys/dev/ti/if_ti.c
===================================================================
--- sys/dev/ti/if_ti.c
+++ sys/dev/ti/if_ti.c
@@ -1626,7 +1626,7 @@
sf[i] = sf_buf_alloc(frame, SFB_NOWAIT);
if (sf[i] == NULL) {
vm_page_unwire_noq(frame);
- vm_page_free(frame);
+ vm_page_free_noobj(frame);
device_printf(sc->ti_dev, "buffer allocation "
"failed -- packet dropped!\n");
printf(" index %d page %d\n", idx, i);
Index: sys/dev/virtio/balloon/virtio_balloon.c
===================================================================
--- sys/dev/virtio/balloon/virtio_balloon.c
+++ sys/dev/virtio/balloon/virtio_balloon.c
@@ -466,7 +466,7 @@
vtballoon_free_page(struct vtballoon_softc *sc, vm_page_t m)
{
- vm_page_free(m);
+ vm_page_free_noobj(m);
sc->vtballoon_current_npages--;
}
Index: sys/dev/xen/balloon/balloon.c
===================================================================
--- sys/dev/xen/balloon/balloon.c
+++ sys/dev/xen/balloon/balloon.c
@@ -196,7 +196,7 @@
KASSERT(xen_feature(XENFEAT_auto_translated_physmap),
("auto translated physmap but mapping is valid"));
- vm_page_free(page);
+ vm_page_free_noobj(page);
}
bs.current_pages += nr_pages;
Index: sys/dev/xen/gntdev/gntdev.c
===================================================================
--- sys/dev/xen/gntdev/gntdev.c
+++ sys/dev/xen/gntdev/gntdev.c
@@ -276,7 +276,7 @@
gnttab_free_grant_reference(gref->gref_id);
}
vm_page_unwire_noq(gref->page);
- vm_page_free(gref->page);
+ vm_page_free_noobj(gref->page);
gref->page = NULL;
}
if (gref->page == NULL) {
Index: sys/fs/nfsserver/nfs_nfsdport.c
===================================================================
--- sys/fs/nfsserver/nfs_nfsdport.c
+++ sys/fs/nfsserver/nfs_nfsdport.c
@@ -7091,7 +7091,7 @@
for (i = mb->m_epg_npgs - 1; i > bextpg; i--) {
pg = PHYS_TO_VM_PAGE(mb->m_epg_pa[i]);
vm_page_unwire_noq(pg);
- vm_page_free(pg);
+ vm_page_free_noobj(pg);
}
mb->m_epg_npgs = bextpg + 1;
if (bextpg == 0)
Index: sys/fs/nfsserver/nfs_nfsdsubs.c
===================================================================
--- sys/fs/nfsserver/nfs_nfsdsubs.c
+++ sys/fs/nfsserver/nfs_nfsdsubs.c
@@ -1336,7 +1336,7 @@
/* Free page. */
pg = PHYS_TO_VM_PAGE(m->m_epg_pa[pgno]);
vm_page_unwire_noq(pg);
- vm_page_free(pg);
+ vm_page_free_noobj(pg);
trim -= plen;
m->m_epg_npgs--;
pgno--;
Index: sys/i386/i386/pmap.c
===================================================================
--- sys/i386/i386/pmap.c
+++ sys/i386/i386/pmap.c
@@ -2227,7 +2227,7 @@
("pmap_release: got wrong ptd page"));
#endif
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
}
@@ -2482,7 +2482,7 @@
m = PHYS_TO_VM_PAGE(pmap_kextract((vm_offset_t)pc));
pmap_qremove((vm_offset_t)pc, 1);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
pmap_ptelist_free(&pv_vafree, (vm_offset_t)pc);
}
@@ -4029,7 +4029,7 @@
uwptpg->pindex = va >> PDRSHIFT;
if (pmap_insert_pt_page(pmap, uwptpg, true, false)) {
vm_page_unwire_noq(uwptpg);
- vm_page_free(uwptpg);
+ vm_page_free_noobj(uwptpg);
return (KERN_RESOURCE_SHORTAGE);
}
pmap->pm_stats.resident_count++;
@@ -4048,7 +4048,7 @@
pmap->pm_stats.resident_count--;
uwptpg->ref_count = 1;
vm_page_unwire_noq(uwptpg);
- vm_page_free(uwptpg);
+ vm_page_free_noobj(uwptpg);
}
CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx"
" in pmap %p", va, pmap);
Index: sys/kern/uipc_ktls.c
===================================================================
--- sys/kern/uipc_ktls.c
+++ sys/kern/uipc_ktls.c
@@ -464,7 +464,7 @@
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)store[i]));
for (j = 0; j < atop(ktls_maxlen); j++) {
(void)vm_page_unwire_noq(m + j);
- vm_page_free(m + j);
+ vm_page_free_noobj(m + j);
}
}
}
@@ -2870,7 +2870,7 @@
for (i = 0; i < m->m_epg_npgs; i++) {
pg = PHYS_TO_VM_PAGE(state->parray[i]);
(void)vm_page_unwire_noq(pg);
- vm_page_free(pg);
+ vm_page_free_noobj(pg);
}
}
}
Index: sys/kern/uipc_mbuf.c
===================================================================
--- sys/kern/uipc_mbuf.c
+++ sys/kern/uipc_mbuf.c
@@ -1852,7 +1852,7 @@
for (int i = 0; i < m->m_epg_npgs; i++) {
pg = PHYS_TO_VM_PAGE(m->m_epg_pa[i]);
vm_page_unwire_noq(pg);
- vm_page_free(pg);
+ vm_page_free_noobj(pg);
}
}
Index: sys/kern/vfs_bio.c
===================================================================
--- sys/kern/vfs_bio.c
+++ sys/kern/vfs_bio.c
@@ -5069,7 +5069,7 @@
p = bp->b_pages[index];
bp->b_pages[index] = NULL;
vm_page_unwire_noq(p);
- vm_page_free(p);
+ vm_page_free_noobj(p);
}
bp->b_npages = newnpages;
}
Index: sys/powerpc/aim/mmu_radix.c
===================================================================
--- sys/powerpc/aim/mmu_radix.c
+++ sys/powerpc/aim/mmu_radix.c
@@ -1591,7 +1591,7 @@
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
dump_drop_page(m->phys_addr);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
/*
@@ -3275,7 +3275,7 @@
uwptpg->pindex = pmap_l3e_pindex(va);
if (pmap_insert_pt_page(pmap, uwptpg)) {
vm_page_unwire_noq(uwptpg);
- vm_page_free(uwptpg);
+ vm_page_free_noobj(uwptpg);
pmap_abort_ptp(pmap, va, pdpg);
return (KERN_RESOURCE_SHORTAGE);
}
@@ -3298,7 +3298,7 @@
pmap_resident_count_dec(pmap, 1);
uwptpg->ref_count = 1;
vm_page_unwire_noq(uwptpg);
- vm_page_free(uwptpg);
+ vm_page_free_noobj(uwptpg);
}
CTR2(KTR_PMAP, "pmap_enter_pde: failure for va %#lx"
" in pmap %p", va, pmap);
Index: sys/powerpc/booke/pmap_32.c
===================================================================
--- sys/powerpc/booke/pmap_32.c
+++ sys/powerpc/booke/pmap_32.c
@@ -265,7 +265,7 @@
if (nosleep) {
ptbl_free_pmap_ptbl(pmap, ptbl);
for (j = 0; j < i; j++)
- vm_page_free(mtbl[j]);
+ vm_page_free_noobj(mtbl[j]);
vm_wire_sub(i);
return (NULL);
}
Index: sys/powerpc/powerpc/uma_machdep.c
===================================================================
--- sys/powerpc/powerpc/uma_machdep.c
+++ sys/powerpc/powerpc/uma_machdep.c
@@ -92,6 +92,6 @@
dump_drop_page(VM_PAGE_TO_PHYS(m));
#endif
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
atomic_subtract_int(&hw_uma_mdpages, 1);
}
Index: sys/riscv/riscv/pmap.c
===================================================================
--- sys/riscv/riscv/pmap.c
+++ sys/riscv/riscv/pmap.c
@@ -1842,7 +1842,7 @@
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pmap->pm_top));
for (i = 0; i < npages; i++) {
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
m++;
}
}
@@ -2036,7 +2036,7 @@
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pc));
dump_drop_page(m->phys_addr);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
/*
@@ -3546,7 +3546,7 @@
uwptpg->pindex = pmap_l2_pindex(va);
if (pmap_insert_pt_page(pmap, uwptpg, true, false)) {
vm_page_unwire_noq(uwptpg);
- vm_page_free(uwptpg);
+ vm_page_free_noobj(uwptpg);
pmap_abort_ptp(pmap, va, l2pg);
return (KERN_RESOURCE_SHORTAGE);
}
@@ -3567,7 +3567,7 @@
pmap_resident_count_dec(pmap, 1);
uwptpg->ref_count = 1;
vm_page_unwire_noq(uwptpg);
- vm_page_free(uwptpg);
+ vm_page_free_noobj(uwptpg);
}
CTR2(KTR_PMAP,
"pmap_enter_l2: failed to create PV entry"
Index: sys/vm/uma_core.c
===================================================================
--- sys/vm/uma_core.c
+++ sys/vm/uma_core.c
@@ -1923,7 +1923,7 @@
dump_drop_page(VM_PAGE_TO_PHYS(m));
#endif
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
}
@@ -1999,7 +1999,7 @@
fail:
TAILQ_FOREACH_SAFE(p, &alloctail, plinks.q, p_next) {
vm_page_unwire_noq(p);
- vm_page_free(p);
+ vm_page_free_noobj(p);
}
return (NULL);
}
@@ -2046,7 +2046,7 @@
*/
TAILQ_FOREACH_SAFE(p, &alloctail, plinks.q, p_next) {
vm_page_unwire_noq(p);
- vm_page_free(p);
+ vm_page_free_noobj(p);
}
return (NULL);
}
@@ -2153,7 +2153,7 @@
paddr = pmap_kextract(curva);
m = PHYS_TO_VM_PAGE(paddr);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
pmap_qremove(sva, size >> PAGE_SHIFT);
kva_free(sva, size);
@@ -2170,7 +2170,7 @@
dump_drop_page(pa);
m = PHYS_TO_VM_PAGE(pa);
vm_page_unwire_noq(m);
- vm_page_free(m);
+ vm_page_free_noobj(m);
}
#endif
Index: sys/vm/vm_kern.c
===================================================================
--- sys/vm/vm_kern.c
+++ sys/vm/vm_kern.c
@@ -955,7 +955,7 @@
vmd = vm_pagequeue_domain(m);
vm_domain_free_lock(vmd);
- vm_phys_free_pages(m, m->pool, 0);
+ vm_phys_free_pages(m, VM_FREEPOOL_DIRECT, 0);
vm_domain_free_unlock(vmd);
vm_domain_freecnt_inc(vmd, 1);
Index: sys/vm/vm_page.h
===================================================================
--- sys/vm/vm_page.h
+++ sys/vm/vm_page.h
@@ -602,6 +602,7 @@
void vm_page_busy_sleep_unlocked(vm_object_t obj, vm_page_t m,
vm_pindex_t pindex, const char *wmesg, int allocflags);
void vm_page_free(vm_page_t m);
+void vm_page_free_noobj(vm_page_t m);
void vm_page_free_zero(vm_page_t m);
void vm_page_activate (vm_page_t);
Index: sys/vm/vm_page.c
===================================================================
--- sys/vm/vm_page.c
+++ sys/vm/vm_page.c
@@ -169,7 +169,7 @@
static void vm_page_clear_dirty_mask(vm_page_t m, vm_page_bits_t pagebits);
static void vm_page_enqueue(vm_page_t m, uint8_t queue);
static bool vm_page_free_prep(vm_page_t m);
-static void vm_page_free_toq(vm_page_t m);
+static void vm_page_free_toq(vm_page_t m, int pool);
static void vm_page_init(void *dummy);
static void vm_page_insert_radixdone(vm_page_t m, vm_object_t object,
vm_page_t mpred);
@@ -1371,14 +1371,27 @@
/*
* vm_page_free:
*
- * Free a page.
+ * Free an object-mapped page.
*/
void
vm_page_free(vm_page_t m)
{
m->flags &= ~PG_ZERO;
- vm_page_free_toq(m);
+ vm_page_free_toq(m, VM_FREEPOOL_DEFAULT);
+}
+
+/*
+ * vm_page_free_noobj:
+ *
+ * Free a non-object-mapped page.
+ */
+void
+vm_page_free_noobj(vm_page_t m)
+{
+
+ m->flags &= ~PG_ZERO;
+ vm_page_free_toq(m, VM_FREEPOOL_DIRECT);
}
/*
@@ -1391,7 +1404,7 @@
{
m->flags |= PG_ZERO;
- vm_page_free_toq(m);
+ vm_page_free_toq(m, VM_FREEPOOL_DIRECT);
}
/*
@@ -1693,8 +1706,7 @@
vm_radix_iter_remove(pages);
vm_page_free_object_prep(m);
vm_page_xunbusy(m);
- m->flags &= ~PG_ZERO;
- vm_page_free_toq(m);
+ vm_page_free(m);
}
/*
@@ -2220,7 +2232,6 @@
m->flags = flags;
m->a.flags = 0;
m->oflags = (object->flags & OBJ_UNMANAGED) != 0 ? VPO_UNMANAGED : 0;
- m->pool = VM_FREEPOOL_DEFAULT;
if ((req & (VM_ALLOC_NOBUSY | VM_ALLOC_SBUSY)) == 0)
m->busy_lock = VPB_CURTHREAD_EXCLUSIVE;
else if ((req & VM_ALLOC_SBUSY) != 0)
@@ -2242,7 +2253,7 @@
m->oflags = VPO_UNMANAGED;
m->busy_lock = VPB_UNBUSIED;
/* Don't change PG_ZERO. */
- vm_page_free_toq(m);
+ vm_page_free_toq(m, VM_FREEPOOL_DEFAULT);
if (req & VM_ALLOC_WAITFAIL) {
VM_OBJECT_WUNLOCK(object);
vm_radix_wait();
@@ -2440,7 +2451,6 @@
m->ref_count = 1;
m->a.act_count = 0;
m->oflags = oflags;
- m->pool = VM_FREEPOOL_DEFAULT;
if (vm_page_iter_insert(&pages, m, object, pindex, mpred)) {
if ((req & VM_ALLOC_WIRED) != 0)
vm_wire_sub(npages);
@@ -2454,7 +2464,7 @@
m->oflags = VPO_UNMANAGED;
m->busy_lock = VPB_UNBUSIED;
/* Don't change PG_ZERO. */
- vm_page_free_toq(m);
+ vm_page_free_toq(m, VM_FREEPOOL_DEFAULT);
}
if (req & VM_ALLOC_WAITFAIL) {
VM_OBJECT_WUNLOCK(object);
@@ -2538,7 +2548,6 @@
m->flags = (m->flags & PG_ZERO) | flags;
m->a.flags = 0;
m->oflags = VPO_UNMANAGED;
- m->pool = VM_FREEPOOL_DIRECT;
m->busy_lock = VPB_UNBUSIED;
if ((req & VM_ALLOC_WIRED) != 0) {
vm_wire_add(1);
@@ -2714,7 +2723,6 @@
m->ref_count = 1;
m->a.act_count = 0;
m->oflags = VPO_UNMANAGED;
- m->pool = VM_FREEPOOL_DIRECT;
/*
* Zero the page before updating any mappings since the page is
@@ -3178,7 +3186,7 @@
do {
MPASS(vm_page_domain(m) == domain);
SLIST_REMOVE_HEAD(&free, plinks.s.ss);
- vm_phys_free_pages(m, m->pool, 0);
+ vm_phys_free_pages(m, VM_FREEPOOL_DEFAULT, 0);
cnt++;
} while ((m = SLIST_FIRST(&free)) != NULL);
vm_domain_free_unlock(vmd);
@@ -4167,7 +4175,7 @@
* belongs to an object.
*/
static void
-vm_page_free_toq(vm_page_t m)
+vm_page_free_toq(vm_page_t m, int pool)
{
struct vm_domain *vmd;
uma_zone_t zone;
@@ -4180,13 +4188,13 @@
vm_page_free_nofree(vmd, m);
return;
}
- zone = vmd->vmd_pgcache[m->pool].zone;
+ zone = vmd->vmd_pgcache[pool].zone;
if ((m->flags & PG_PCPU_CACHE) != 0 && zone != NULL) {
uma_zfree(zone, m);
return;
}
vm_domain_free_lock(vmd);
- vm_phys_free_pages(m, m->pool, 0);
+ vm_phys_free_pages(m, pool, 0);
vm_domain_free_unlock(vmd);
vm_domain_freecnt_inc(vmd, 1);
}
@@ -4194,9 +4202,8 @@
/*
* vm_page_free_pages_toq:
*
- * Returns a list of pages to the free list, disassociating it
- * from any VM object. In other words, this is equivalent to
- * calling vm_page_free_toq() for each page of a list of VM objects.
+ * Returns a list of pages to the free list. Each page is
+ * not associated with an object.
*/
int
vm_page_free_pages_toq(struct spglist *free, bool update_wire_count)
@@ -4211,7 +4218,7 @@
while ((m = SLIST_FIRST(free)) != NULL) {
count++;
SLIST_REMOVE_HEAD(free, plinks.s.ss);
- vm_page_free_toq(m);
+ vm_page_free_toq(m, VM_FREEPOOL_DIRECT);
}
if (update_wire_count)

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 15, 9:09 PM (5 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29147590
Default Alt Text
D50161.1784149774.diff (20 KB)

Event Timeline