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.
This commit is contained in:
marius 2011-06-21 20:47:03 +00:00
parent 3eae894196
commit cee084b03f

View File

@ -384,11 +384,12 @@ pmap_bootstrap(u_int cpu_impl)
* public documentation is available for these, the latter just might * public documentation is available for these, the latter just might
* not support it, yet. * not support it, yet.
*/ */
virtsz = roundup(physsz, PAGE_SIZE_4M << (PAGE_SHIFT - TTE_SHIFT));
if (cpu_impl == CPU_IMPL_SPARC64V || if (cpu_impl == CPU_IMPL_SPARC64V ||
cpu_impl >= CPU_IMPL_ULTRASPARCIIIp) cpu_impl >= CPU_IMPL_ULTRASPARCIIIp) {
tsb_kernel_ldd_phys = 1; tsb_kernel_ldd_phys = 1;
else { virtsz = roundup(5 / 3 * physsz, PAGE_SIZE_4M <<
(PAGE_SHIFT - TTE_SHIFT));
} else {
dtlb_slots_avail = 0; dtlb_slots_avail = 0;
for (i = 0; i < dtlb_slots; i++) { for (i = 0; i < dtlb_slots; i++) {
data = dtlb_get_data(i); data = dtlb_get_data(i);
@ -401,6 +402,8 @@ pmap_bootstrap(u_int cpu_impl)
if (cpu_impl >= CPU_IMPL_ULTRASPARCI && if (cpu_impl >= CPU_IMPL_ULTRASPARCI &&
cpu_impl < CPU_IMPL_ULTRASPARCIII) cpu_impl < CPU_IMPL_ULTRASPARCIII)
dtlb_slots_avail /= 2; dtlb_slots_avail /= 2;
virtsz = roundup(physsz, PAGE_SIZE_4M <<
(PAGE_SHIFT - TTE_SHIFT));
virtsz = MIN(virtsz, (dtlb_slots_avail * PAGE_SIZE_4M) << virtsz = MIN(virtsz, (dtlb_slots_avail * PAGE_SIZE_4M) <<
(PAGE_SHIFT - TTE_SHIFT)); (PAGE_SHIFT - TTE_SHIFT));
} }