Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Jun 2014 17:22:18 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r267964 - in stable: 10/sys/amd64/amd64 10/sys/i386/i386 10/sys/i386/include 10/sys/i386/xen 10/sys/pc98/pc98 9/sys/amd64/amd64 9/sys/i386/i386 9/sys/i386/include 9/sys/i386/xen 9/sys/p...
Message-ID:  <201406271722.s5RHMIQD002254@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Fri Jun 27 17:22:18 2014
New Revision: 267964
URL: http://svnweb.freebsd.org/changeset/base/267964

Log:
  MFC 261781:
  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.

Modified:
  stable/10/sys/amd64/amd64/pmap.c
  stable/10/sys/i386/i386/machdep.c
  stable/10/sys/i386/i386/pmap.c
  stable/10/sys/i386/include/pmap.h
  stable/10/sys/i386/xen/pmap.c
  stable/10/sys/pc98/pc98/machdep.c
Directory Properties:
  stable/10/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/9/sys/amd64/amd64/pmap.c
  stable/9/sys/i386/i386/machdep.c
  stable/9/sys/i386/i386/pmap.c
  stable/9/sys/i386/include/pmap.h
  stable/9/sys/i386/xen/pmap.c
  stable/9/sys/pc98/pc98/machdep.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/10/sys/amd64/amd64/pmap.c
==============================================================================
--- stable/10/sys/amd64/amd64/pmap.c	Fri Jun 27 17:18:54 2014	(r267963)
+++ stable/10/sys/amd64/amd64/pmap.c	Fri Jun 27 17:22:18 2014	(r267964)
@@ -812,7 +812,7 @@ void
 pmap_bootstrap(vm_paddr_t *firstaddr)
 {
 	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.
@@ -858,14 +858,11 @@ pmap_bootstrap(vm_paddr_t *firstaddr)
 	pte = vtopte(va);
 
 	/*
-	 * CMAP1 is only used for the memory test.
-	 */
-	SYSMAP(caddr_t, CMAP1, CADDR1, 1)
-
-	/*
-	 * Crashdump maps.
+	 * Crashdump maps.  The first page is reused as CMAP1 for the
+	 * memory test.
 	 */
-	SYSMAP(caddr_t, unused, crashdumpmap, MAXDUMPPGS)
+	SYSMAP(caddr_t, CMAP1, crashdumpmap, MAXDUMPPGS)
+	CADDR1 = crashdumpmap;
 
 	virtual_avail = va;
 

Modified: stable/10/sys/i386/i386/machdep.c
==============================================================================
--- stable/10/sys/i386/i386/machdep.c	Fri Jun 27 17:18:54 2014	(r267963)
+++ stable/10/sys/i386/i386/machdep.c	Fri Jun 27 17:22:18 2014	(r267964)
@@ -2387,7 +2387,7 @@ physmap_done:
 	phys_avail[pa_indx++] = physmap[0];
 	phys_avail[pa_indx] = physmap[0];
 	dump_avail[da_indx] = physmap[0];
-	pte = CMAP1;
+	pte = CMAP3;
 
 	/*
 	 * Get dcons buffer address
@@ -2409,7 +2409,7 @@ physmap_done:
 			end = trunc_page(physmap[i + 1]);
 		for (pa = round_page(physmap[i]); pa < end; pa += PAGE_SIZE) {
 			int tmp, page_bad, full;
-			int *ptr = (int *)CADDR1;
+			int *ptr = (int *)CADDR3;
 
 			full = FALSE;
 			/*

Modified: stable/10/sys/i386/i386/pmap.c
==============================================================================
--- stable/10/sys/i386/i386/pmap.c	Fri Jun 27 17:18:54 2014	(r267963)
+++ stable/10/sys/i386/i386/pmap.c	Fri Jun 27 17:22:18 2014	(r267964)
@@ -256,11 +256,10 @@ struct sysmaps {
 	caddr_t	CADDR2;
 };
 static struct sysmaps sysmaps_pcpu[MAXCPU];
-pt_entry_t *CMAP1 = 0;
-static pt_entry_t *CMAP3;
+pt_entry_t *CMAP3;
 static pd_entry_t *KPTD;
-caddr_t CADDR1 = 0, ptvmmap = 0;
-static caddr_t CADDR3;
+caddr_t ptvmmap = 0;
+caddr_t CADDR3;
 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->CMAP2, sysmaps->CADDR2, 1)
 	}
-	SYSMAP(caddr_t, CMAP1, CADDR1, 1)
 	SYSMAP(caddr_t, CMAP3, CADDR3, 1)
 
 	/*

Modified: stable/10/sys/i386/include/pmap.h
==============================================================================
--- stable/10/sys/i386/include/pmap.h	Fri Jun 27 17:18:54 2014	(r267963)
+++ stable/10/sys/i386/include/pmap.h	Fri Jun 27 17:22:18 2014	(r267964)
@@ -420,8 +420,8 @@ struct pv_chunk {
 
 #ifdef	_KERNEL
 
-extern caddr_t	CADDR1;
-extern pt_entry_t *CMAP1;
+extern caddr_t	CADDR3;
+extern pt_entry_t *CMAP3;
 extern vm_paddr_t phys_avail[];
 extern vm_paddr_t dump_avail[];
 extern int pseflag;

Modified: stable/10/sys/i386/xen/pmap.c
==============================================================================
--- stable/10/sys/i386/xen/pmap.c	Fri Jun 27 17:18:54 2014	(r267963)
+++ stable/10/sys/i386/xen/pmap.c	Fri Jun 27 17:22:18 2014	(r267964)
@@ -249,9 +249,9 @@ struct sysmaps {
 	caddr_t	CADDR2;
 };
 static struct sysmaps sysmaps_pcpu[MAXCPU];
-static pt_entry_t *CMAP3;
+pt_entry_t *CMAP3;
 caddr_t ptvmmap = 0;
-static caddr_t CADDR3;
+caddr_t CADDR3;
 struct msgbuf *msgbufp = 0;
 
 /*

Modified: stable/10/sys/pc98/pc98/machdep.c
==============================================================================
--- stable/10/sys/pc98/pc98/machdep.c	Fri Jun 27 17:18:54 2014	(r267963)
+++ stable/10/sys/pc98/pc98/machdep.c	Fri Jun 27 17:22:18 2014	(r267964)
@@ -1962,7 +1962,7 @@ getmemsize(int first)
 	phys_avail[pa_indx++] = physmap[0];
 	phys_avail[pa_indx] = physmap[0];
 	dump_avail[da_indx] = physmap[0];
-	pte = CMAP1;
+	pte = CMAP3;
 
 	/*
 	 * Get dcons buffer address
@@ -1983,7 +1983,7 @@ getmemsize(int first)
 			end = trunc_page(physmap[i + 1]);
 		for (pa = round_page(physmap[i]); pa < end; pa += PAGE_SIZE) {
 			int tmp, page_bad, full;
-			int *ptr = (int *)CADDR1;
+			int *ptr = (int *)CADDR3;
 
 			full = FALSE;
 			/*



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