freebsd-skq/sys/amd64
Konstantin Belousov 3fd989da91 amd64 pmap: fix PCID mode invalidations
When r362031 moved local TLB invalidation after shootdown IPI send, it
moved too much.  In particular, PCID-mode clearing of the pm_gen
generation counters must occur before IPIs are send, which is in fact
described by the comment before seq_cst fence in the invalidation
functions.

Fix it by extracting pm_gen clearing into new helper
pmap_invalidate_preipi(), which is executed before a call to
smp_masked_tlb_shootdown().

Rest of the local invalidation callbacks is simplified as result, and
become very similar to the remote shootdown handlers (to be merged in
some future).

Move pin of the thread to pmap_invalidate_preipi(), and do unpin in
smp_masked_tlb_shootdown().

Reported and tested by:	mjg (previous version)
Reviewed by:	alc, cem (previous version), markj
Sponsored by:	The FreeBSD Foundation
Differential revision:	https://reviews.freebsd.org/D227588
2020-12-14 22:52:29 +00:00
..
acpica amd64: clean up empty lines in .c and .h files 2020-09-01 21:16:54 +00:00
amd64 amd64 pmap: fix PCID mode invalidations 2020-12-14 22:52:29 +00:00
cloudabi32 Get rid of sa->narg. It serves no purpose; use sa->callp->sy_narg instead. 2020-09-27 18:47:06 +00:00
cloudabi64 Get rid of sa->narg. It serves no purpose; use sa->callp->sy_narg instead. 2020-09-27 18:47:06 +00:00
conf Enable ROUTE_MPATH support in GENERIC kernels. 2020-12-14 22:23:08 +00:00
ia32 Improve FPU Tag Word reconstruction on i386 to indicate register states. 2020-10-21 00:15:12 +00:00
include Convert vmm_ops calls to IFUNC 2020-11-28 01:16:59 +00:00
linux Linuxolator: Replace use of eventhandlers by sysent hooks. 2020-11-23 18:18:16 +00:00
linux32 Fix i386 linux module after r367395. 2020-12-05 14:53:24 +00:00
pci pci_cfgreg.c: Use io port config access for early boot time. 2019-04-09 18:07:17 +00:00
sgx amd64: clean up empty lines in .c and .h files 2020-09-01 21:16:54 +00:00
vmm bhyve: limit max GPA to VM_MAXUSER_ADDRESS_LA48. 2020-11-29 10:32:38 +00:00
Makefile