x86/mm: Flush global TLB when switching to trampoline page-table
authorJoerg Roedel <jroedel@suse.de>
Thu, 2 Dec 2021 15:32:25 +0000 (16:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 09:54:14 +0000 (10:54 +0100)
commite61aa46d0f27bd460080ccd244296d1944b9813e
treedabcfb41a6afd3f1ae1864f69d174535f9f41bb5
parent0946fdd9290ac05256d9884773335167cd20abf0
x86/mm: Flush global TLB when switching to trampoline page-table

[ Upstream commit 71d5049b053876afbde6c3273250b76935494ab2 ]

Move the switching code into a function so that it can be re-used and
add a global TLB flush. This makes sure that usage of memory which is
not mapped in the trampoline page-table is reliably caught.

Also move the clearing of CR4.PCIDE before the CR3 switch because the
cr4_clear_bits() function will access data not mapped into the
trampoline page-table.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20211202153226.22946-4-joro@8bytes.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/include/asm/realmode.h
arch/x86/kernel/reboot.c
arch/x86/realmode/init.c