freebsd-nq/sys/i386
Konstantin Belousov bced332adf Invalidate cache for the PDPTE page when using PAE paging but PAT is
not supported.

According to SDM rev. 69 vol. 3, for PDPTE registers loads:
- when PAT is not supported, access to the PDPTE page is performed as
  UC, see 4.9.1;
- when PAT is supported, the access is WB, see 4.9.2.

So potentially CPU might load stale memory as PDPTEs if both PAT and
self-snoop are not implemented.  To be safe, add total local cache
flush to pmap_cold() before initial load of cr3, and flush PDPTE page
in pmap_pinit(), if PAT is not implemented.

Reviewed by:	markj
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
Differential revision:	https://reviews.freebsd.org/D19365
2019-02-28 19:19:02 +00:00
..
acpica Fix resume on i386 PAE. 2019-02-07 02:09:34 +00:00
bios Use NULL for SYSINIT's last arg, which is a pointer type 2018-05-18 17:58:09 +00:00
cloudabi32 Use TO_PTR() to convert integers to pointers. 2017-11-26 14:45:56 +00:00
conf Remove drm from LINT kernels 2019-02-19 21:20:50 +00:00
i386 Invalidate cache for the PDPTE page when using PAE paging but PAT is 2019-02-28 19:19:02 +00:00
include i386 PAE: avoid atomic for pte_store() where possible. 2019-02-26 09:45:44 +00:00
linux Fix errno values returned from DUMMY_XATTR linuxulator calls 2019-01-11 07:58:25 +00:00
pci i386: Merge PAE and non-PAE pmaps into same kernel. 2019-01-30 02:07:13 +00:00
Makefile Remove iBCS2, part2: general kernel 2018-12-19 21:57:58 +00:00