Page MenuHomeFreeBSD

D14266.id39054.diff
No OneTemporary

D14266.id39054.diff

Index: head/sys/amd64/amd64/pmap.c
===================================================================
--- head/sys/amd64/amd64/pmap.c
+++ head/sys/amd64/amd64/pmap.c
@@ -2723,8 +2723,7 @@
/* Have to allocate a new pdp, recurse */
if (_pmap_allocpte(pmap, NUPDE + NUPDPE + pml4index,
lockp) == NULL) {
- --m->wire_count;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
return (NULL);
}
@@ -2756,8 +2755,7 @@
/* Have to allocate a new pd, recurse */
if (_pmap_allocpte(pmap, NUPDE + pdpindex,
lockp) == NULL) {
- --m->wire_count;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
return (NULL);
}
@@ -2770,9 +2768,7 @@
/* Have to allocate a new pd, recurse */
if (_pmap_allocpte(pmap, NUPDE + pdpindex,
lockp) == NULL) {
- --m->wire_count;
- atomic_subtract_int(&vm_cnt.v_wire_count,
- 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
return (NULL);
}
@@ -2904,18 +2900,16 @@
pmap->pm_pml4[DMPML4I + i] = 0;
pmap->pm_pml4[PML4PML4I] = 0; /* Recursive Mapping */
- m->wire_count--;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
if (pmap->pm_pml4u != NULL) {
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4u));
- m->wire_count--;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free(m);
}
}
-
+
static int
kvm_size(SYSCTL_HANDLER_ARGS)
{
@@ -7711,10 +7705,8 @@
{
KASSERT(m->wire_count > 0, ("page %p not wired", m));
- m->wire_count--;
- if (m->wire_count != 0)
+ if (!vm_page_unwire_noq(m))
return (false);
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
vm_page_free_zero(m);
return (true);
}
Index: head/sys/amd64/amd64/uma_machdep.c
===================================================================
--- head/sys/amd64/amd64/uma_machdep.c
+++ head/sys/amd64/amd64/uma_machdep.c
@@ -74,7 +74,6 @@
pa = DMAP_TO_PHYS((vm_offset_t)mem);
dump_drop_page(pa);
m = PHYS_TO_VM_PAGE(pa);
- m->wire_count--;
+ vm_page_unwire_noq(m);
vm_page_free(m);
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
}
Index: head/sys/arm64/arm64/pmap.c
===================================================================
--- head/sys/arm64/arm64/pmap.c
+++ head/sys/arm64/arm64/pmap.c
@@ -1362,12 +1362,7 @@
}
pmap_invalidate_page(pmap, va);
- /*
- * This is a release store so that the ordinary store unmapping
- * the page table page is globally performed before TLB shoot-
- * down is begun.
- */
- atomic_subtract_rel_int(&vm_cnt.v_wire_count, 1);
+ atomic_subtract_int(&vm_cnt.v_wire_count, 1);
/*
* Put page on a list so that it is released after
@@ -1493,9 +1488,7 @@
/* recurse for allocating page dir */
if (_pmap_alloc_l3(pmap, NUL2E + NUL1E + l0index,
lockp) == NULL) {
- --m->wire_count;
- /* XXX: release mem barrier? */
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
return (NULL);
}
@@ -1521,8 +1514,7 @@
/* recurse for allocating page dir */
if (_pmap_alloc_l3(pmap, NUL2E + l1index,
lockp) == NULL) {
- --m->wire_count;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
return (NULL);
}
@@ -1537,10 +1529,7 @@
/* recurse for allocating page dir */
if (_pmap_alloc_l3(pmap, NUL2E + l1index,
lockp) == NULL) {
- --m->wire_count;
- /* XXX: release mem barrier? */
- atomic_subtract_int(
- &vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
return (NULL);
}
@@ -1648,8 +1637,7 @@
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pmap->pm_l0));
- m->wire_count--;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
}
Index: head/sys/arm64/arm64/uma_machdep.c
===================================================================
--- head/sys/arm64/arm64/uma_machdep.c
+++ head/sys/arm64/arm64/uma_machdep.c
@@ -72,7 +72,6 @@
pa = DMAP_TO_PHYS((vm_offset_t)mem);
dump_drop_page(pa);
m = PHYS_TO_VM_PAGE(pa);
- m->wire_count--;
+ vm_page_unwire_noq(m);
vm_page_free(m);
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
}
Index: head/sys/i386/i386/pmap.c
===================================================================
--- head/sys/i386/i386/pmap.c
+++ head/sys/i386/i386/pmap.c
@@ -2057,10 +2057,9 @@
KASSERT(VM_PAGE_TO_PHYS(m) == (pmap->pm_pdpt[i] & PG_FRAME),
("pmap_release: got wrong ptd page"));
#endif
- m->wire_count--;
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
}
- atomic_subtract_int(&vm_cnt.v_wire_count, NPGPTD);
}
static int
Index: head/sys/mips/mips/pmap.c
===================================================================
--- head/sys/mips/mips/pmap.c
+++ head/sys/mips/mips/pmap.c
@@ -1159,8 +1159,7 @@
if (_pmap_allocpte(pmap, NUPDE + segindex,
flags) == NULL) {
/* alloc failed, release current */
- --m->wire_count;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
return (NULL);
}
@@ -1238,8 +1237,7 @@
ptdva = (vm_offset_t)pmap->pm_segtab;
ptdpg = PHYS_TO_VM_PAGE(MIPS_DIRECT_TO_PHYS(ptdva));
- ptdpg->wire_count--;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(ptdpg);
vm_page_free_zero(ptdpg);
}
Index: head/sys/mips/mips/uma_machdep.c
===================================================================
--- head/sys/mips/mips/uma_machdep.c
+++ head/sys/mips/mips/uma_machdep.c
@@ -94,7 +94,6 @@
pa = MIPS_DIRECT_TO_PHYS((vm_offset_t)mem);
dump_drop_page(pa);
m = PHYS_TO_VM_PAGE(pa);
- m->wire_count--;
+ vm_page_unwire_noq(m);
vm_page_free(m);
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
}
Index: head/sys/powerpc/powerpc/uma_machdep.c
===================================================================
--- head/sys/powerpc/powerpc/uma_machdep.c
+++ head/sys/powerpc/powerpc/uma_machdep.c
@@ -95,8 +95,7 @@
(vm_offset_t)mem + PAGE_SIZE);
m = PHYS_TO_VM_PAGE((vm_offset_t)mem);
- m->wire_count--;
+ vm_page_unwire_noq(m);
vm_page_free(m);
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
atomic_subtract_int(&hw_uma_mdpages, 1);
}
Index: head/sys/riscv/riscv/pmap.c
===================================================================
--- head/sys/riscv/riscv/pmap.c
+++ head/sys/riscv/riscv/pmap.c
@@ -1153,12 +1153,7 @@
}
pmap_invalidate_page(pmap, va);
- /*
- * This is a release store so that the ordinary store unmapping
- * the page table page is globally performed before TLB shoot-
- * down is begun.
- */
- atomic_subtract_rel_int(&vm_cnt.v_wire_count, 1);
+ atomic_subtract_int(&vm_cnt.v_wire_count, 1);
/*
* Put page on a list so that it is released after
@@ -1302,8 +1297,7 @@
/* recurse for allocating page dir */
if (_pmap_alloc_l3(pmap, NUPDE + l1index,
lockp) == NULL) {
- --m->wire_count;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
return (NULL);
}
@@ -1388,8 +1382,7 @@
pmap->pm_stats.resident_count));
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pmap->pm_l1));
- m->wire_count--;
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
+ vm_page_unwire_noq(m);
vm_page_free_zero(m);
/* Remove pmap from the allpmaps list */
Index: head/sys/sparc64/sparc64/vm_machdep.c
===================================================================
--- head/sys/sparc64/sparc64/vm_machdep.c
+++ head/sys/sparc64/sparc64/vm_machdep.c
@@ -429,9 +429,8 @@
PMAP_STATS_INC(uma_nsmall_free);
m = PHYS_TO_VM_PAGE(TLB_DIRECT_TO_PHYS((vm_offset_t)mem));
- m->wire_count--;
+ vm_page_unwire_noq(m);
vm_page_free(m);
- atomic_subtract_int(&vm_cnt.v_wire_count, 1);
}
void

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 14, 6:04 AM (29 m, 35 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29655999
Default Alt Text
D14266.id39054.diff (7 KB)

Event Timeline