Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F147711343
D50161.1784149774.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
20 KB
Referenced Files
None
Subscribers
None
D50161.1784149774.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D50161: vm_page_free_noobj: for freeing into the direct pool
Attached
Detach File
Event Timeline
Log In to Comment