linux/arch/x86/platform
Ard Biesheuvel d1c85e262c x86/pvh: Call C code via the kernel virtual mapping
commit e8fbc0d9ca upstream.

Calling C code via a different mapping than it was linked at is
problematic, because the compiler assumes that RIP-relative and absolute
symbol references are interchangeable. GCC in particular may use
RIP-relative per-CPU variable references even when not using -fpic.

So call xen_prepare_pvh() via its kernel virtual mapping on x86_64, so
that those RIP-relative references produce the correct values. This
matches the pre-existing behavior for i386, which also invokes
xen_prepare_pvh() via the kernel virtual mapping before invoking
startup_32 with paging disabled again.

Fixes: 7243b93345 ("xen/pvh: Bootstrap PVH guest")
Tested-by: Jason Andryuk <jason.andryuk@amd.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Message-ID: <20241009160438.3884381-8-ardb+git@google.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
[ Stable context update ]
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-05-02 07:44:18 +02:00
..
atom x86/platform: Convert to new CPU match macros 2020-03-24 21:29:38 +01:00
ce4100 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
efi efi/x86: Free EFI memory map only when installing a new one. 2024-07-05 09:14:51 +02:00
geode x86/platform/geode: Convert alix LED to GPIO machine descriptor 2021-01-15 18:55:53 +01:00
intel x86/platform/iosf_mbi: Convert PCIBIOS_* return codes to errnos 2024-08-19 05:44:50 +02:00
intel-mid platform-drivers-x86 for v5.12-1 2021-02-22 08:50:01 -08:00
intel-quark x86/platform/intel/quark: Fix incorrect kernel-doc comment syntax in files 2021-04-10 13:59:25 +02:00
iris module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
olpc x86/olpc: fix 'logical not is only applied to the left hand side' 2022-08-17 14:24:18 +02:00
pvh x86/pvh: Call C code via the kernel virtual mapping 2025-05-02 07:44:18 +02:00
scx200 treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
ts5500 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
uv A bunch of SGI UV improvements, fixes and cleanups. 2021-04-26 09:34:19 -07:00
Makefile Simple Firmware Interface (SFI) support removal for v5.12-rc1 2021-02-24 10:35:29 -08:00