original_kernel/arch/x86/mm
Dave Hansen ce0b15d11a x86/mm: Avoid incomplete Global INVLPG flushes
The INVLPG instruction is used to invalidate TLB entries for a
specified virtual address.  When PCIDs are enabled, INVLPG is supposed
to invalidate TLB entries for the specified address for both the
current PCID *and* Global entries.  (Note: Only kernel mappings set
Global=1.)

Unfortunately, some INVLPG implementations can leave Global
translations unflushed when PCIDs are enabled.

As a workaround, never enable PCIDs on affected processors.

I expect there to eventually be microcode mitigations to replace this
software workaround.  However, the exact version numbers where that
will happen are not known today.  Once the version numbers are set in
stone, the processor list can be tweaked to only disable PCIDs on
affected processors with affected microcode.

Note: if anyone wants a quick fix that doesn't require patching, just
stick 'nopcid' on your kernel command-line.

Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
2023-05-17 08:55:02 -07:00
..
pat - Nick Piggin's "shoot lazy tlbs" series, to improve the peformance of 2023-04-27 19:42:02 -07:00
Makefile
amdtopology.c
cpu_entry_area.c
debug_pagetables.c
dump_pagetables.c
extable.c x86-64: mm: clarify the 'positive addresses' user address rules 2023-05-03 10:37:22 -07:00
fault.c
highmem_32.c
hugetlbpage.c
ident_map.c
init.c x86/mm: Avoid incomplete Global INVLPG flushes 2023-05-17 08:55:02 -07:00
init_32.c
init_64.c
iomap_32.c
ioremap.c
kasan_init_64.c
kaslr.c
kmmio.c
kmsan_shadow.c
maccess.c
mem_encrypt.c
mem_encrypt_amd.c
mem_encrypt_boot.S
mem_encrypt_identity.c
mm_internal.h
mmap.c
mmio-mod.c
numa.c
numa_32.c
numa_64.c
numa_emulation.c
numa_internal.h
pf_in.c
pf_in.h
pgprot.c
pgtable.c
pgtable_32.c
physaddr.c
physaddr.h
pkeys.c
pti.c
srat.c
testmmiotrace.c
tlb.c Add support for new Linear Address Masking CPU feature. This is similar 2023-04-28 09:43:49 -07:00