svn commit: r215650 - in projects/sbruno_64cpus/sys/amd64: amd64 include

Sean Bruno sbruno at FreeBSD.org
Mon Nov 22 01:22:24 UTC 2010


Author: sbruno
Date: Mon Nov 22 01:22:24 2010
New Revision: 215650
URL: http://svn.freebsd.org/changeset/base/215650

Log:
  Patch from alc@ to test large memory systems.
  
  I can't   quite see how to build a release ISO from
  a local directory, so commit this here for testing.

Modified:
  projects/sbruno_64cpus/sys/amd64/amd64/pmap.c
  projects/sbruno_64cpus/sys/amd64/include/pmap.h
  projects/sbruno_64cpus/sys/amd64/include/vmparam.h

Modified: projects/sbruno_64cpus/sys/amd64/amd64/pmap.c
==============================================================================
--- projects/sbruno_64cpus/sys/amd64/amd64/pmap.c	Mon Nov 22 01:11:28 2010	(r215649)
+++ projects/sbruno_64cpus/sys/amd64/amd64/pmap.c	Mon Nov 22 01:22:24 2010	(r215650)
@@ -530,6 +530,8 @@ create_pagetables(vm_paddr_t *firstaddr)
 	/* Connect the Direct Map slot up to the PML4 */
 	((pdp_entry_t *)KPML4phys)[DMPML4I] = DMPDPphys;
 	((pdp_entry_t *)KPML4phys)[DMPML4I] |= PG_RW | PG_V | PG_U;
+	((pdp_entry_t *)KPML4phys)[DMPML4I + 1] = DMPDPphys + PAGE_SIZE;
+	((pdp_entry_t *)KPML4phys)[DMPML4I + 1] |= PG_RW | PG_V | PG_U;
 
 	/* Connect the KVA slot up to the PML4 */
 	((pdp_entry_t *)KPML4phys)[KPML4I] = KPDPphys;
@@ -1620,6 +1622,7 @@ pmap_pinit(pmap_t pmap)
 	/* Wire in kernel global address entries. */
 	pmap->pm_pml4[KPML4I] = KPDPphys | PG_RW | PG_V | PG_U;
 	pmap->pm_pml4[DMPML4I] = DMPDPphys | PG_RW | PG_V | PG_U;
+	pmap->pm_pml4[DMPML4I + 1] = (DMPDPphys + PAGE_SIZE) | PG_RW | PG_V | PG_U;
 
 	/* install self-referential address mapping entry(s) */
 	pmap->pm_pml4[PML4PML4I] = VM_PAGE_TO_PHYS(pml4pg) | PG_V | PG_RW | PG_A | PG_M;
@@ -1879,6 +1882,7 @@ pmap_release(pmap_t pmap)
 
 	pmap->pm_pml4[KPML4I] = 0;	/* KVA */
 	pmap->pm_pml4[DMPML4I] = 0;	/* Direct Map */
+	pmap->pm_pml4[DMPML4I + 1] = 0;	/* Direct Map */
 	pmap->pm_pml4[PML4PML4I] = 0;	/* Recursive Mapping */
 
 	m->wire_count--;

Modified: projects/sbruno_64cpus/sys/amd64/include/pmap.h
==============================================================================
--- projects/sbruno_64cpus/sys/amd64/include/pmap.h	Mon Nov 22 01:11:28 2010	(r215649)
+++ projects/sbruno_64cpus/sys/amd64/include/pmap.h	Mon Nov 22 01:22:24 2010	(r215650)
@@ -125,7 +125,7 @@
 #define	NUPDPE		(NUPML4E*NPDPEPG)/* number of userland PDP pages */
 #define	NUPDE		(NUPDPE*NPDEPG)	/* number of userland PD entries */
 
-#define	NDMPML4E	1		/* number of dmap PML4 slots */
+#define	NDMPML4E	2		/* number of dmap PML4 slots */
 
 /*
  * The *PDI values control the layout of virtual memory
@@ -133,7 +133,7 @@
 #define	PML4PML4I	(NPML4EPG/2)	/* Index of recursive pml4 mapping */
 
 #define	KPML4I		(NPML4EPG-1)	/* Top 512GB for KVM */
-#define	DMPML4I		(KPML4I-1)	/* Next 512GB down for direct map */
+#define	DMPML4I		(KPML4I-3)	/* Next 512GB down for direct map */
 
 #define	KPDPI		(NPDPEPG-2)	/* kernbase at -2GB */
 

Modified: projects/sbruno_64cpus/sys/amd64/include/vmparam.h
==============================================================================
--- projects/sbruno_64cpus/sys/amd64/include/vmparam.h	Mon Nov 22 01:11:28 2010	(r215649)
+++ projects/sbruno_64cpus/sys/amd64/include/vmparam.h	Mon Nov 22 01:22:24 2010	(r215650)
@@ -176,7 +176,7 @@
 #define	VM_MIN_KERNEL_ADDRESS	KVADDR(KPML4I, NPDPEPG-512, 0, 0)
 
 #define	DMAP_MIN_ADDRESS	KVADDR(DMPML4I, 0, 0, 0)
-#define	DMAP_MAX_ADDRESS	KVADDR(DMPML4I+1, 0, 0, 0)
+#define	DMAP_MAX_ADDRESS	KVADDR(DMPML4I+2, 0, 0, 0)
 
 #define	KERNBASE		KVADDR(KPML4I, KPDPI, 0, 0)
 


More information about the svn-src-projects mailing list