Oh, NOW you give a s**t about PCID?
A quick refresher — PCID (Processor-Context ID) slaps a context-identifier on the TLB, and only allows lookups that match a given context. So, “user context” lookups, literally, don’t have access to “kernel context” data (neatly bypassing Meltdown in the process. If it’s used. Which it mostly isn’t. Sigh) It’s been around forever — since 2010 — in the hardware, but showed up in the linux kernel late last year (in 4.14). Mind you, that is largely because, pre Meltdown, it was really only useful if process-to-process context switching is rapid enough to matter — think, “heavily loaded systems switching between lots of active processes (not threads)” Post-Meltdown, however, if you don’t have PCID, You Have A Problem. As Gil Tene points out “When a processor does NOT have the PCID feature, things get ugly. Each system call and each user-to-kernel-to-user transition (like an interrupt) would be required to flush the TLB twice (once after each switch)”. ...