freebsd-nq/sys/x86
Konstantin Belousov 27691a24ab For amd64 non-PCID machines, and for i386 machines with support for
the PG_G global pte flag, pmap_invalidate_all() fails to flush global
TLB entries [*].  This is because TLB shootdown handler for such
configs reloads CR3, and on i386 pmap_invalidate_all() does the same
for the initiating CPU.  Note that current code does not issue total
invalidation requests for the kernel_pmap.

Rename amd64 function invltlb_globpcid() to invltlb_glob(), it is not
specific for PCID for quite some time, and implement the same
functionality for i386.  Use the function instead of invltlb() in
shootdown handlers and in i386 pmap_invalidate_all(), but only for the
kernel pmap (which maps pages with the PG_G attribute set), which
takes care of PG_G TLB entries on flush.

To detect the affected pmap in i386 TLB shootdown handler, pmap should
be passed to the smp_masked_invltlb() function, which makes amd64 and
i386 TLB shootdown code almost identical.  Merge the code under x86/.

Noted by:	jhb [*]
Reviewed by:	cem, jhb, pho
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D4346
2015-12-03 11:14:14 +00:00
..
acpica In the SandyBridge x2APIC workaround detection code, only fetch the 2015-12-03 10:59:10 +00:00
bios Add missing header needed by free(9). 2012-09-30 15:42:20 +00:00
cpufreq Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
include xen: Code cleanup and small bug fixes 2015-10-21 10:44:07 +00:00
iommu dmar_ctx_dtr() does not exist since r284869. Remove the static function 2015-09-22 16:50:59 +00:00
isa Set the initial system time to a sane (as in: not end of 21st century) value when 2015-06-29 17:02:09 +00:00
pci Add domain support to PCI bus allocation 2015-09-16 23:34:51 +00:00
x86 For amd64 non-PCID machines, and for i386 machines with support for 2015-12-03 11:14:14 +00:00
xen xen: fix dropping bitmap IPIs during resume 2015-11-18 18:11:19 +00:00