summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2015-06-09 18:04:28 +0000
committeralc <alc@FreeBSD.org>2015-06-09 18:04:28 +0000
commitcbefd9b195657f8741054c39aafa0d5a87cbb77c (patch)
tree45d84fdd0abdc3bc2182dc5688d25cdb9f19b0a2
parentfbb65db559d0b64c307a0596093200c0290eedf3 (diff)
downloadFreeBSD-src-cbefd9b195657f8741054c39aafa0d5a87cbb77c.zip
FreeBSD-src-cbefd9b195657f8741054c39aafa0d5a87cbb77c.tar.gz
Account for superpage mappings that are created by pmap_copy().
-rw-r--r--sys/amd64/amd64/pmap.c1
-rw-r--r--sys/arm/arm/pmap-v6-new.c1
-rw-r--r--sys/i386/i386/pmap.c1
3 files changed, 3 insertions, 0 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 7f256cd..6a3de60 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -4844,6 +4844,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len,
PG_PS_FRAME, &lock))) {
*pde = srcptepaddr & ~PG_W;
pmap_resident_count_inc(dst_pmap, NBPDR / PAGE_SIZE);
+ atomic_add_long(&pmap_pde_mappings, 1);
} else
dstmpde->wire_count--;
continue;
diff --git a/sys/arm/arm/pmap-v6-new.c b/sys/arm/arm/pmap-v6-new.c
index 89a806c..13a97de 100644
--- a/sys/arm/arm/pmap-v6-new.c
+++ b/sys/arm/arm/pmap-v6-new.c
@@ -5768,6 +5768,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len,
~PTE1_W;
dst_pmap->pm_stats.resident_count +=
PTE1_SIZE / PAGE_SIZE;
+ pmap_pte1_mappings++;
}
continue;
} else if (!pte1_is_link(src_pte1))
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 029a277..a642d10 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -4035,6 +4035,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len,
~PG_W;
dst_pmap->pm_stats.resident_count +=
NBPDR / PAGE_SIZE;
+ pmap_pde_mappings++;
}
continue;
}
OpenPOWER on IntegriCloud