freebsd-dev/sys/i386/include
Konstantin Belousov 9a52756044 i386: Merge PAE and non-PAE pmaps into same kernel.
Effectively all i386 kernels now have two pmaps compiled in: one
managing PAE pagetables, and another non-PAE. The implementation is
selected at cold time depending on the CPU features. The vm_paddr_t is
always 64bit now. As result, nx bit can be used on all capable CPUs.

Option PAE only affects the bus_addr_t: it is still 32bit for non-PAE
configs, for drivers compatibility. Kernel layout, esp. max kernel
address, low memory PDEs and max user address (same as trampoline
start) are now same for PAE and for non-PAE regardless of the type of
page tables used.

Non-PAE kernel (when using PAE pagetables) can handle physical memory
up to 24G now, larger memory requires re-tuning the KVA consumers and
instead the code caps the maximum at 24G. Unfortunately, a lot of
drivers do not use busdma(9) properly so by default even 4G barrier is
not easy. There are two tunables added: hw.above4g_allow and
hw.above24g_allow, the first one is kept enabled for now to evaluate
the status on HEAD, second is only for dev use.

i386 now creates three freelists if there is any memory above 4G, to
allow proper bounce pages allocation. Also, VM_KMEM_SIZE_SCALE changed
from 3 to 1.

The PAE_TABLES kernel config option is retired.

In collaboarion with: pho
Discussed with:	emaste
Reviewed by:	markj
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D18894
2019-01-30 02:07:13 +00:00
..
pc i386 4/4G split. 2018-04-13 20:30:49 +00:00
xen
_align.h
_bus.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
_inttypes.h
_limits.h
_stdint.h
_types.h
acpica_machdep.h
apm_bios.h
apm_segments.h
asm.h Remove lint support from system headers and MD x86 headers. 2017-11-23 11:40:16 +00:00
asmacros.h Fix recent breakages of kernel profiling, mostly on i386 (high resolution 2018-06-02 04:25:09 +00:00
atomic.h Implement missing atomic_fcmpset_XXX() support for i386. 2018-08-09 11:30:13 +00:00
bootinfo.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
bus_dma.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
bus.h
clock.h re-synchronize TSC-s on SMP systems after resume, if necessary 2018-05-25 07:33:20 +00:00
counter.h Back pcpu zone with domain correct pages 2018-07-06 02:06:03 +00:00
cpu.h Add a custom implementation of cpu_lock_delay() for x86. 2018-11-05 22:54:03 +00:00
cpufunc.h Tell the compiler that rdtscp clobbers %ecx. 2018-06-09 18:31:19 +00:00
cputypes.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
cserial.h Fix misspellings of transmitter/transmitted 2018-08-10 20:37:32 +00:00
db_machdep.h Cleanups related to debug exceptions on x86. 2018-05-22 00:45:00 +00:00
dump.h
efi.h Fix building on i386 and arm. But 'public domain' headers on the files 2016-10-13 06:56:23 +00:00
elan_mmcr.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
elf.h
endian.h
exec.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
fdt.h
float.h
floatingpoint.h spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
frame.h i386 4/4G split. 2018-04-13 20:30:49 +00:00
gdb_machdep.h amd64: Protect the kernel text, data, and BSS by setting the RW/NX bits 2018-03-06 14:28:37 +00:00
ieeefp.h Resolve conflicts between macros in fenv.h and ieeefp.h 2018-05-31 20:22:47 +00:00
if_wl_wavelan.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
in_cksum.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
intr_machdep.h Merge amd64 and i386 <machine/intr_machdep.h> headers. 2018-08-20 12:31:39 +00:00
ioctl_bt848.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
ioctl_meteor.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
iodev.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
kdb.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
limits.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
md_var.h i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
memdev.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
metadata.h
minidump.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
mp_watchdog.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
nexusvar.h
npx.h Remove unused error return from API that cannot fail 2018-02-23 20:15:19 +00:00
ofw_machdep.h
param.h i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
pcb_ext.h Remove dead declaration. 2018-05-11 20:47:45 +00:00
pcb.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
pci_cfgreg.h
pcpu.h Expand x86 struct pcpus to UMA_PCPU_ALLOC_SIZE AKA PAGE_SIZE. 2018-07-06 19:50:44 +00:00
perfmon.h
pmap_base.h i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
pmap_nopae.h i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
pmap_pae.h i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
pmap.h i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
pmc_mdep.h hwpmc: ABI fixes 2018-06-04 02:05:48 +00:00
ppireg.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
proc.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
profile.h Oops, the last minute reduction in the clobber list for i386 2018-06-02 09:59:27 +00:00
psl.h
ptrace.h
pvclock.h
reg.h
reloc.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
resource.h
runq.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
segments.h i386 4/4G split. 2018-04-13 20:30:49 +00:00
setjmp.h
sf_buf.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
sigframe.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
signal.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
smapi.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
smp.h x86: improve reservation of AP trampoline memory 2018-04-05 14:39:51 +00:00
speaker.h
specialreg.h
stack.h
stdarg.h
sysarch.h
timerreg.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
trap.h
tss.h sys: further adoption of SPDX licensing ID tags. 2017-11-20 19:43:44 +00:00
ucontext.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
vdso.h
vm86.h i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
vm.h sys/i386: further adoption of SPDX licensing ID tags. 2017-11-27 15:08:52 +00:00
vmparam.h i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00