Don't waste a page of KVA for the boot-time memory test on x86. For amd64,
reuse the first page of the crashdumpmap as CMAP1/CADDR1. For i386, remove CMAP1/CADDR1 entirely and reuse CMAP3/CADDR3 for the memory test. Reviewed by: alc, peter MFC after: 2 weeks
This commit is contained in:
parent
2db08c03f0
commit
4f67a8c5e9
@ -812,7 +812,7 @@ void
|
|||||||
pmap_bootstrap(vm_paddr_t *firstaddr)
|
pmap_bootstrap(vm_paddr_t *firstaddr)
|
||||||
{
|
{
|
||||||
vm_offset_t va;
|
vm_offset_t va;
|
||||||
pt_entry_t *pte, *unused;
|
pt_entry_t *pte;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create an initial set of page tables to run the kernel in.
|
* Create an initial set of page tables to run the kernel in.
|
||||||
@ -858,14 +858,11 @@ pmap_bootstrap(vm_paddr_t *firstaddr)
|
|||||||
pte = vtopte(va);
|
pte = vtopte(va);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CMAP1 is only used for the memory test.
|
* Crashdump maps. The first page is reused as CMAP1 for the
|
||||||
|
* memory test.
|
||||||
*/
|
*/
|
||||||
SYSMAP(caddr_t, CMAP1, CADDR1, 1)
|
SYSMAP(caddr_t, CMAP1, crashdumpmap, MAXDUMPPGS)
|
||||||
|
CADDR1 = crashdumpmap;
|
||||||
/*
|
|
||||||
* Crashdump maps.
|
|
||||||
*/
|
|
||||||
SYSMAP(caddr_t, unused, crashdumpmap, MAXDUMPPGS)
|
|
||||||
|
|
||||||
virtual_avail = va;
|
virtual_avail = va;
|
||||||
|
|
||||||
|
@ -2403,7 +2403,7 @@ physmap_done:
|
|||||||
phys_avail[pa_indx++] = physmap[0];
|
phys_avail[pa_indx++] = physmap[0];
|
||||||
phys_avail[pa_indx] = physmap[0];
|
phys_avail[pa_indx] = physmap[0];
|
||||||
dump_avail[da_indx] = physmap[0];
|
dump_avail[da_indx] = physmap[0];
|
||||||
pte = CMAP1;
|
pte = CMAP3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get dcons buffer address
|
* Get dcons buffer address
|
||||||
@ -2425,7 +2425,7 @@ physmap_done:
|
|||||||
end = trunc_page(physmap[i + 1]);
|
end = trunc_page(physmap[i + 1]);
|
||||||
for (pa = round_page(physmap[i]); pa < end; pa += PAGE_SIZE) {
|
for (pa = round_page(physmap[i]); pa < end; pa += PAGE_SIZE) {
|
||||||
int tmp, page_bad, full;
|
int tmp, page_bad, full;
|
||||||
int *ptr = (int *)CADDR1;
|
int *ptr = (int *)CADDR3;
|
||||||
|
|
||||||
full = FALSE;
|
full = FALSE;
|
||||||
/*
|
/*
|
||||||
|
@ -256,11 +256,10 @@ struct sysmaps {
|
|||||||
caddr_t CADDR2;
|
caddr_t CADDR2;
|
||||||
};
|
};
|
||||||
static struct sysmaps sysmaps_pcpu[MAXCPU];
|
static struct sysmaps sysmaps_pcpu[MAXCPU];
|
||||||
pt_entry_t *CMAP1 = 0;
|
pt_entry_t *CMAP3;
|
||||||
static pt_entry_t *CMAP3;
|
|
||||||
static pd_entry_t *KPTD;
|
static pd_entry_t *KPTD;
|
||||||
caddr_t CADDR1 = 0, ptvmmap = 0;
|
caddr_t ptvmmap = 0;
|
||||||
static caddr_t CADDR3;
|
caddr_t CADDR3;
|
||||||
struct msgbuf *msgbufp = 0;
|
struct msgbuf *msgbufp = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -434,7 +433,6 @@ pmap_bootstrap(vm_paddr_t firstaddr)
|
|||||||
SYSMAP(caddr_t, sysmaps->CMAP1, sysmaps->CADDR1, 1)
|
SYSMAP(caddr_t, sysmaps->CMAP1, sysmaps->CADDR1, 1)
|
||||||
SYSMAP(caddr_t, sysmaps->CMAP2, sysmaps->CADDR2, 1)
|
SYSMAP(caddr_t, sysmaps->CMAP2, sysmaps->CADDR2, 1)
|
||||||
}
|
}
|
||||||
SYSMAP(caddr_t, CMAP1, CADDR1, 1)
|
|
||||||
SYSMAP(caddr_t, CMAP3, CADDR3, 1)
|
SYSMAP(caddr_t, CMAP3, CADDR3, 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -420,8 +420,8 @@ struct pv_chunk {
|
|||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
|
|
||||||
extern caddr_t CADDR1;
|
extern caddr_t CADDR3;
|
||||||
extern pt_entry_t *CMAP1;
|
extern pt_entry_t *CMAP3;
|
||||||
extern vm_paddr_t phys_avail[];
|
extern vm_paddr_t phys_avail[];
|
||||||
extern vm_paddr_t dump_avail[];
|
extern vm_paddr_t dump_avail[];
|
||||||
extern int pseflag;
|
extern int pseflag;
|
||||||
|
@ -249,9 +249,9 @@ struct sysmaps {
|
|||||||
caddr_t CADDR2;
|
caddr_t CADDR2;
|
||||||
};
|
};
|
||||||
static struct sysmaps sysmaps_pcpu[MAXCPU];
|
static struct sysmaps sysmaps_pcpu[MAXCPU];
|
||||||
static pt_entry_t *CMAP3;
|
pt_entry_t *CMAP3;
|
||||||
caddr_t ptvmmap = 0;
|
caddr_t ptvmmap = 0;
|
||||||
static caddr_t CADDR3;
|
caddr_t CADDR3;
|
||||||
struct msgbuf *msgbufp = 0;
|
struct msgbuf *msgbufp = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1961,7 +1961,7 @@ getmemsize(int first)
|
|||||||
phys_avail[pa_indx++] = physmap[0];
|
phys_avail[pa_indx++] = physmap[0];
|
||||||
phys_avail[pa_indx] = physmap[0];
|
phys_avail[pa_indx] = physmap[0];
|
||||||
dump_avail[da_indx] = physmap[0];
|
dump_avail[da_indx] = physmap[0];
|
||||||
pte = CMAP1;
|
pte = CMAP3;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get dcons buffer address
|
* Get dcons buffer address
|
||||||
@ -1982,7 +1982,7 @@ getmemsize(int first)
|
|||||||
end = trunc_page(physmap[i + 1]);
|
end = trunc_page(physmap[i + 1]);
|
||||||
for (pa = round_page(physmap[i]); pa < end; pa += PAGE_SIZE) {
|
for (pa = round_page(physmap[i]); pa < end; pa += PAGE_SIZE) {
|
||||||
int tmp, page_bad, full;
|
int tmp, page_bad, full;
|
||||||
int *ptr = (int *)CADDR1;
|
int *ptr = (int *)CADDR3;
|
||||||
|
|
||||||
full = FALSE;
|
full = FALSE;
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user