[GIT pull] x86/urgent for v6.5-rc1

From: Thomas Gleixner
Date: Sat Jul 01 2023 - 14:09:39 EST


Linus,

please pull the latest x86/urgent branch from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-2023-07-01

up to: 0303c9729afc: x86/efi: Make efi_set_virtual_address_map IBT safe


A single regression fix for x86:

Moving the invocation of arch_cpu_finalize_init() earlier in the boot
process caused a boot regression on IBT enabled system.

The root cause is not the move of arch_cpu_finalize_init() itself. The
system fails to boot because the subsequent efi_enter_virtual_mode() code
has a non-IBT safe EFI call inside. This was never noticed because IBT
was enabled after the EFI initialization.

Switching the EFI call to use the IBT safe wrapper cures the problem.

Thanks,

tglx

------------------>
Thomas Gleixner (1):
x86/efi: Make efi_set_virtual_address_map IBT safe


arch/x86/platform/efi/efi_64.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
index 232acf418cfb..77f7ac3668cb 100644
--- a/arch/x86/platform/efi/efi_64.c
+++ b/arch/x86/platform/efi/efi_64.c
@@ -853,9 +853,9 @@ efi_set_virtual_address_map(unsigned long memory_map_size,

/* Disable interrupts around EFI calls: */
local_irq_save(flags);
- status = efi_call(efi.runtime->set_virtual_address_map,
- memory_map_size, descriptor_size,
- descriptor_version, virtual_map);
+ status = arch_efi_call_virt(efi.runtime, set_virtual_address_map,
+ memory_map_size, descriptor_size,
+ descriptor_version, virtual_map);
local_irq_restore(flags);

efi_fpu_end();