summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2009-03-14 08:28:02 +0000
committeralc <alc@FreeBSD.org>2009-03-14 08:28:02 +0000
commit69680f169ccd4273c491e709b2406f6aec2ad77e (patch)
tree6ef867c8f183c3897a0c534c91d78b1b28926caf
parent72d28b3f411899b5af82a64b66e3ebb86d4f77b8 (diff)
downloadFreeBSD-src-69680f169ccd4273c491e709b2406f6aec2ad77e.zip
FreeBSD-src-69680f169ccd4273c491e709b2406f6aec2ad77e.tar.gz
Update the pmap's resident page count when a page table page is freed in
pmap_remove_pde() and pmap_remove_pages(). MFC after: 6 weeks
-rw-r--r--sys/amd64/amd64/pmap.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index e367944..7760ab0 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -2342,6 +2342,7 @@ pmap_remove_pde(pmap_t pmap, pd_entry_t *pdq, vm_offset_t sva,
mpte = pmap_lookup_pt_page(pmap, sva);
if (mpte != NULL) {
pmap_remove_pt_page(pmap, mpte);
+ pmap->pm_stats.resident_count--;
KASSERT(mpte->wire_count == NPTEPG,
("pmap_remove_pde: pte page wire count error"));
mpte->wire_count = 0;
@@ -3851,6 +3852,7 @@ pmap_remove_pages(pmap_t pmap)
mpte = pmap_lookup_pt_page(pmap, pv->pv_va);
if (mpte != NULL) {
pmap_remove_pt_page(pmap, mpte);
+ pmap->pm_stats.resident_count--;
KASSERT(mpte->wire_count == NPTEPG,
("pmap_remove_pages: pte page wire count error"));
mpte->wire_count = 0;
OpenPOWER on IntegriCloud