svn commit: r343809 - head/sys/i386/i386

Konstantin Belousov kib at FreeBSD.org
Tue Feb 5 20:09:33 UTC 2019


Author: kib
Date: Tue Feb  5 20:09:31 2019
New Revision: 343809
URL: https://svnweb.freebsd.org/changeset/base/343809

Log:
  Make it possible to override PAE mode on boot.
  
  Initialize the static kenv in pmap_cold() and fetch user opinion on
  vm.pmap.pae_mode tunable if hardware is capable.  Note that the static
  environment is reinitilized in init386() later when paging is enabled.
  
  Reviewed by:	bde
  Discussed with:	kevans
  Sponsored by:	The FreeBSD Foundation
  MFC after:	2 months

Modified:
  head/sys/i386/i386/pmap_base.c

Modified: head/sys/i386/i386/pmap_base.c
==============================================================================
--- head/sys/i386/i386/pmap_base.c	Tue Feb  5 20:02:16 2019	(r343808)
+++ head/sys/i386/i386/pmap_base.c	Tue Feb  5 20:09:31 2019	(r343809)
@@ -96,6 +96,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/kernel.h>
 #include <sys/vmmeter.h>
 #include <sys/sysctl.h>
+#include <machine/bootinfo.h>
 #include <machine/cpu.h>
 #include <machine/cputypes.h>
 #include <machine/md_var.h>
@@ -935,16 +936,19 @@ pmap_kremove(vm_offset_t va)
 
 extern struct pmap_methods pmap_pae_methods, pmap_nopae_methods;
 int pae_mode;
-SYSCTL_INT(_vm_pmap, OID_AUTO, pae_mode, CTLFLAG_RD,
-    &pae_mode, 1,
+SYSCTL_INT(_vm_pmap, OID_AUTO, pae_mode, CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
+    &pae_mode, 0,
     "PAE");
 
 void
 pmap_cold(void)
 {
 
-	if ((cpu_feature & CPUID_PAE) != 0) {
-		pae_mode = 1;
+	init_static_kenv((char *)bootinfo.bi_envp, 0);
+	pae_mode = (cpu_feature & CPUID_PAE) != 0;
+	if (pae_mode)
+		TUNABLE_INT_FETCH("vm.pmap.pae_mode", &pae_mode);
+	if (pae_mode) {
 		pmap_methods_ptr = &pmap_pae_methods;
 		pmap_pae_cold();
 	} else {


More information about the svn-src-head mailing list