Increase kernel VA from 256Mb to 512Mb by shifting the segment used
for user copyinout down to 12, and keeping segments 13/14 for kernel VA. It would be nice to have more available, but segments lower than this are reserved for either memory or 1:1 mapped device i/o, and seg 15 is OpenFirmware ROM. Also, the effort to keep OpenFirmware available for callbacks limits the use of VA-mapped segments. Fortunately UMA_MD_SMALL_ALLOC takes away a lot of VM pressure. Obtained from: NetBSD
This commit is contained in:
parent
9c3078173a
commit
4daf20b2f1
@ -698,6 +698,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
*/
|
||||
pmap_pinit(&ofw_pmap);
|
||||
ofw_pmap.pm_sr[KERNEL_SR] = KERNEL_SEGMENT;
|
||||
ofw_pmap.pm_sr[KERNEL2_SR] = KERNEL2_SEGMENT;
|
||||
if ((chosen = OF_finddevice("/chosen")) == -1)
|
||||
panic("pmap_bootstrap: can't find /chosen");
|
||||
OF_getprop(chosen, "mmu", &mmui, 4);
|
||||
@ -751,6 +752,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
kernel_pmap->pm_sr[i] = EMPTY_SEGMENT;
|
||||
}
|
||||
kernel_pmap->pm_sr[KERNEL_SR] = KERNEL_SEGMENT;
|
||||
kernel_pmap->pm_sr[KERNEL2_SR] = KERNEL_SEGMENT;
|
||||
kernel_pmap->pm_active = ~0;
|
||||
|
||||
/*
|
||||
@ -1385,6 +1387,8 @@ pmap_pinit(pmap_t pmap)
|
||||
int i, mask;
|
||||
u_int entropy;
|
||||
|
||||
KASSERT((int)pmap < VM_MIN_KERNEL_ADDRESS, ("pmap_pinit: virt pmap"));
|
||||
|
||||
entropy = 0;
|
||||
__asm __volatile("mftb %0" : "=r"(entropy));
|
||||
|
||||
|
@ -42,10 +42,12 @@
|
||||
#define SR_VSID_MASK 0x00ffffff /* Virtual Segment ID mask */
|
||||
|
||||
/* Kernel segment register usage */
|
||||
#define USER_SR 13
|
||||
#define KERNEL_SR 14
|
||||
#define USER_SR 12
|
||||
#define KERNEL_SR 13
|
||||
#define KERNEL2_SR 14
|
||||
#define KERNEL_VSIDBITS 0xfffff
|
||||
#define KERNEL_SEGMENT (0xfffff0 + KERNEL_SR)
|
||||
#define KERNEL2_SEGMENT (0xfffff0 + KERNEL2_SR)
|
||||
#define EMPTY_SEGMENT 0xfffff0
|
||||
#define USER_ADDR ((void *)(USER_SR << ADDR_SR_SHFT))
|
||||
#define SEGMENT_LENGTH 0x10000000
|
||||
|
@ -94,7 +94,7 @@
|
||||
#define VM_MAXUSER_ADDRESS ((vm_offset_t)0x7ffff000)
|
||||
#define VM_MAX_ADDRESS VM_MAXUSER_ADDRESS
|
||||
#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)(KERNEL_SR << ADDR_SR_SHFT))
|
||||
#define VM_MAX_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS + SEGMENT_LENGTH - 1)
|
||||
#define VM_MAX_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS + 2*SEGMENT_LENGTH - 1)
|
||||
|
||||
#define KERNBASE 0x100000 /* start of kernel virtual */
|
||||
|
||||
|
@ -698,6 +698,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
*/
|
||||
pmap_pinit(&ofw_pmap);
|
||||
ofw_pmap.pm_sr[KERNEL_SR] = KERNEL_SEGMENT;
|
||||
ofw_pmap.pm_sr[KERNEL2_SR] = KERNEL2_SEGMENT;
|
||||
if ((chosen = OF_finddevice("/chosen")) == -1)
|
||||
panic("pmap_bootstrap: can't find /chosen");
|
||||
OF_getprop(chosen, "mmu", &mmui, 4);
|
||||
@ -751,6 +752,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
kernel_pmap->pm_sr[i] = EMPTY_SEGMENT;
|
||||
}
|
||||
kernel_pmap->pm_sr[KERNEL_SR] = KERNEL_SEGMENT;
|
||||
kernel_pmap->pm_sr[KERNEL2_SR] = KERNEL_SEGMENT;
|
||||
kernel_pmap->pm_active = ~0;
|
||||
|
||||
/*
|
||||
@ -1385,6 +1387,8 @@ pmap_pinit(pmap_t pmap)
|
||||
int i, mask;
|
||||
u_int entropy;
|
||||
|
||||
KASSERT((int)pmap < VM_MIN_KERNEL_ADDRESS, ("pmap_pinit: virt pmap"));
|
||||
|
||||
entropy = 0;
|
||||
__asm __volatile("mftb %0" : "=r"(entropy));
|
||||
|
||||
|
@ -698,6 +698,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
*/
|
||||
pmap_pinit(&ofw_pmap);
|
||||
ofw_pmap.pm_sr[KERNEL_SR] = KERNEL_SEGMENT;
|
||||
ofw_pmap.pm_sr[KERNEL2_SR] = KERNEL2_SEGMENT;
|
||||
if ((chosen = OF_finddevice("/chosen")) == -1)
|
||||
panic("pmap_bootstrap: can't find /chosen");
|
||||
OF_getprop(chosen, "mmu", &mmui, 4);
|
||||
@ -751,6 +752,7 @@ pmap_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend)
|
||||
kernel_pmap->pm_sr[i] = EMPTY_SEGMENT;
|
||||
}
|
||||
kernel_pmap->pm_sr[KERNEL_SR] = KERNEL_SEGMENT;
|
||||
kernel_pmap->pm_sr[KERNEL2_SR] = KERNEL_SEGMENT;
|
||||
kernel_pmap->pm_active = ~0;
|
||||
|
||||
/*
|
||||
@ -1385,6 +1387,8 @@ pmap_pinit(pmap_t pmap)
|
||||
int i, mask;
|
||||
u_int entropy;
|
||||
|
||||
KASSERT((int)pmap < VM_MIN_KERNEL_ADDRESS, ("pmap_pinit: virt pmap"));
|
||||
|
||||
entropy = 0;
|
||||
__asm __volatile("mftb %0" : "=r"(entropy));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user