summaryrefslogtreecommitdiffstats
path: root/sys/sparc64/sparc64/pmap.c
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2011-06-21 20:47:03 +0000
committermarius <marius@FreeBSD.org>2011-06-21 20:47:03 +0000
commitcee084b03f7ae8330633fa6bdac66995e9d3c1ca (patch)
treee80f91ec7ff392a55a9cc280689ff4254b6366ae /sys/sparc64/sparc64/pmap.c
parent3eae89419641f05c8322f7d392d24d7e97e7af77 (diff)
downloadFreeBSD-src-cee084b03f7ae8330633fa6bdac66995e9d3c1ca.zip
FreeBSD-src-cee084b03f7ae8330633fa6bdac66995e9d3c1ca.tar.gz
On machines where we don't need to lock the kernel TSB into the dTLB and
thus may basically use the entire 64-bit kernel address space increase the kernel virtual memory to not be limited by VM_KMEM_SIZE_MAX.
Diffstat (limited to 'sys/sparc64/sparc64/pmap.c')
-rw-r--r--sys/sparc64/sparc64/pmap.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c
index 876dce3..f917af9 100644
--- a/sys/sparc64/sparc64/pmap.c
+++ b/sys/sparc64/sparc64/pmap.c
@@ -384,11 +384,12 @@ pmap_bootstrap(u_int cpu_impl)
* public documentation is available for these, the latter just might
* not support it, yet.
*/
- virtsz = roundup(physsz, PAGE_SIZE_4M << (PAGE_SHIFT - TTE_SHIFT));
if (cpu_impl == CPU_IMPL_SPARC64V ||
- cpu_impl >= CPU_IMPL_ULTRASPARCIIIp)
+ cpu_impl >= CPU_IMPL_ULTRASPARCIIIp) {
tsb_kernel_ldd_phys = 1;
- else {
+ virtsz = roundup(5 / 3 * physsz, PAGE_SIZE_4M <<
+ (PAGE_SHIFT - TTE_SHIFT));
+ } else {
dtlb_slots_avail = 0;
for (i = 0; i < dtlb_slots; i++) {
data = dtlb_get_data(i);
@@ -401,6 +402,8 @@ pmap_bootstrap(u_int cpu_impl)
if (cpu_impl >= CPU_IMPL_ULTRASPARCI &&
cpu_impl < CPU_IMPL_ULTRASPARCIII)
dtlb_slots_avail /= 2;
+ virtsz = roundup(physsz, PAGE_SIZE_4M <<
+ (PAGE_SHIFT - TTE_SHIFT));
virtsz = MIN(virtsz, (dtlb_slots_avail * PAGE_SIZE_4M) <<
(PAGE_SHIFT - TTE_SHIFT));
}
OpenPOWER on IntegriCloud