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 {
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to