freebsd-dev/sys/i386
Alan Cox fd2dae0a30 Implement an alternative solution to the amd64 and i386 pmap problem that we
previously addressed in r348246.

This pmap problem also exists on arm64 and riscv.  However, the original
solution developed for amd64 and i386 cannot be used on arm64 and riscv.  In
particular, arm64 and riscv do not define a PG_PROMOTED flag in their level
2 PTEs.  (A PG_PROMOTED flag makes no sense on arm64, where unlike x86 or
riscv we are required to break the old 4KB mappings before making the 2MB
mapping; and on riscv there are no unused bits in the PTE to define a
PG_PROMOTED flag.)

This commit implements an alternative solution that can be used on all four
architectures.  Moreover, this solution has two other advantages.  First, on
older AMD processors that required the Erratum 383 workaround, it is less
costly.  Specifically, it avoids unnecessary calls to pmap_fill_ptp() on a
superpage demotion.  Second, it enables the elimination of some calls to
pagezero() in pmap_kernel_remove_{l2,pde}().

In addition, remove a related stale comment from pmap_enter_{l2,pde}().

Reviewed by:	kib, markj (an earlier version)
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D20538
2019-06-09 03:36:10 +00:00
..
acpica Merge ACPICA 20190329. 2019-03-29 20:21:28 +00:00
bios
cloudabi32
conf FCP-101: Bump __FreeBSD_version for driver removal. 2019-05-17 15:24:54 +00:00
i386 Implement an alternative solution to the amd64 and i386 pmap problem that we 2019-06-09 03:36:10 +00:00
include Mitigations for Microarchitectural Data Sampling. 2019-05-14 17:02:20 +00:00
linux makesyscalls.sh: always use absolute path for syscalls.conf 2019-05-30 20:56:23 +00:00
pci pci_cfgreg.c: Use io port config access for early boot time. 2019-04-09 18:07:17 +00:00
Makefile