Provided by: freebsd-manpages_12.2-1_all bug


     PAE — Physical Address Extensions


     options PAE


     The PAE option provides support for the physical address extensions capability of the Intel
     Pentium Pro and above CPUs, and allows for up to 64 gigabytes of memory to be used in
     systems capable of supporting it.  With the PAE option, memory above 4 gigabytes is simply
     added to the general page pool.  The system makes no distinction between memory above or
     below 4 gigabytes, and no specific facility is provided for a process or the kernel to
     access more memory than they would otherwise be able to access, through a sliding window or


     smp(4), tuning(7), config(8), bus_dma(9)


     The PAE option first appeared in FreeBSD 4.9 and FreeBSD 5.1.


     Jake Burkholder <>


     Since KLD modules are not compiled with the same options headers that the kernel is compiled
     with, they must not be loaded into a kernel compiled with the PAE option.

     Many devices or their device drivers are not capable of direct memory access to physical
     addresses above 4 gigabytes.  In order to make use of direct memory access IO in a system
     with more than 4 gigabytes of memory when the PAE option is used, these drivers must use a
     facility for remapping or substituting physical memory which is not accessible to the
     device.  One such facility is provided by the busdma interface.  Device drivers which do not
     account for such devices will not work reliably in a system with more than 4 gigabytes of
     memory when the PAE option is used, and may cause data corruption.  The PAE kernel
     configuration file includes the PAE option, and explicitly excludes all device drivers which
     are known to not work or have not been tested in a system with the PAE option and more than
     4 gigabytes of memory.

     Many parameters which determine how memory is used in the kernel are based on the amount of
     physical memory.  The formulas used to determine the values of these parameters for specific
     memory configurations may not take into account the fact there may be more than 4 gigabytes
     of memory, and may not scale well to these memory configurations.  In particular, it may be
     necessary to increase the amount of virtual address space available to the kernel, or to
     reduce the amount of a specific resource that is heavily used, in order to avoid running out
     of virtual address space.  The KVA_PAGES option may be used to increase the kernel virtual
     address space, and the kern.maxvnodes sysctl(8) may be used to decrease the number of vnodes
     allowed, an example of a resource that the kernel is likely to overallocate in large memory
     configurations.  For optimal performance and stability it may be necessary to consult the
     tuning(7) manual page, and make adjustments to the parameters documented there.