x86/boot: Skip realmode init code when running as Xen PV guest
authorJuergen Gross <jgross@suse.com>
Wed, 23 Nov 2022 11:45:23 +0000 (12:45 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:16 +0000 (13:32 +0100)
commitb1898793777fe10a31c160bb8bc385d6eea640c6
tree396284a646c0d3b95311cceecbc6477349532149
parent6b60cf73a931af34b7a0a3f467a79d9fe0df2d70
x86/boot: Skip realmode init code when running as Xen PV guest

[ Upstream commit f1e525009493cbd569e7c8dd7d58157855f8658d ]

When running as a Xen PV guest there is no need for setting up the
realmode trampoline, as realmode isn't supported in this environment.

Trying to setup the trampoline has been proven to be problematic in
some cases, especially when trying to debug early boot problems with
Xen requiring to keep the EFI boot-services memory mapped (some
firmware variants seem to claim basically all memory below 1Mb for boot
services).

Introduce new x86_platform_ops operations for that purpose, which can
be set to a NOP by the Xen PV specific kernel boot code.

  [ bp: s/call_init_real_mode/do_init_real_mode/ ]

Fixes: 084ee1c641a0 ("x86, realmode: Relocator for realmode code")
Suggested-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20221123114523.3467-1-jgross@suse.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/include/asm/realmode.h
arch/x86/include/asm/x86_init.h
arch/x86/kernel/setup.c
arch/x86/kernel/x86_init.c
arch/x86/realmode/init.c
arch/x86/xen/enlighten_pv.c