Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Nov 2010 13:26:55 -0600
From:      Alan Cox <alan.l.cox@gmail.com>
To:        sbruno@freebsd.org
Cc:        "freebsd-current@freebsd.org" <freebsd-current@freebsd.org>
Subject:   Re: 256G Ram Panic
Message-ID:  <4CE9727F.5050305@gmail.com>
In-Reply-To: <1290359006.16558.787.camel@home-yahoo>
References:  <1290359006.16558.787.camel@home-yahoo>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Sean Bruno wrote:
> http://people.freebsd.org/~sbruno/256G_SMAP.png
> http://people.freebsd.org/~sbruno/256G_panic1.png
> http://people.freebsd.org/~sbruno/256G_panic2.png
>
>
> Trying to get the HP DL980 online today and I see the following panic on
> startup from the installer CD that I created from -CURRENT.
>   

Try the attached patch.




[-- Attachment #2 --]
Index: amd64/include/pmap.h
===================================================================
--- amd64/include/pmap.h	(revision 215639)
+++ amd64/include/pmap.h	(working copy)
@@ -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 */
 
Index: amd64/include/vmparam.h
===================================================================
--- amd64/include/vmparam.h	(revision 215639)
+++ amd64/include/vmparam.h	(working copy)
@@ -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)
 
Index: amd64/amd64/pmap.c
===================================================================
--- amd64/amd64/pmap.c	(revision 215639)
+++ amd64/amd64/pmap.c	(working copy)
@@ -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--;
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CE9727F.5050305>