x86/boot: Move SEV startup code into startup/

Move the SEV startup code into arch/x86/boot/startup/, where it will
reside along with other code that executes extremely early, and
therefore needs to be built in a special manner.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: David Woodhouse <dwmw@amazon.co.uk>
Cc: Dionna Amalie Glaze <dionnaglaze@google.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Kevin Loughlin <kevinloughlin@google.com>
Cc: Len Brown <len.brown@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://lore.kernel.org/r/20250418141253.2601348-12-ardb+git@google.com
This commit is contained in:
Ard Biesheuvel 2025-04-18 16:12:58 +02:00 committed by Ingo Molnar
parent 234cf67fc3
commit a3cbbb4717
5 changed files with 5 additions and 21 deletions

View file

@ -144,7 +144,7 @@ int svsm_perform_call_protocol(struct svsm_call *call);
u8 snp_vmpl;
/* Include code for early handlers */
#include "../../coco/sev/shared.c"
#include "../../boot/startup/sev-shared.c"
int svsm_perform_call_protocol(struct svsm_call *call)
{

View file

@ -17,7 +17,7 @@ UBSAN_SANITIZE := n
KCOV_INSTRUMENT := n
obj-$(CONFIG_X86_64) += gdt_idt.o map_kernel.o
obj-$(CONFIG_AMD_MEM_ENCRYPT) += sme.o
obj-$(CONFIG_AMD_MEM_ENCRYPT) += sme.o sev-startup.o
lib-$(CONFIG_X86_64) += la57toggle.o
lib-$(CONFIG_EFI_MIXED) += efi-mixed.o

View file

@ -422,7 +422,7 @@ static __always_inline void vc_forward_exception(struct es_em_ctxt *ctxt)
}
/* Include code shared with pre-decompression boot stage */
#include "shared.c"
#include "sev-shared.c"
noinstr void __sev_put_ghcb(struct ghcb_state *state)
{

View file

@ -1,25 +1,9 @@
# SPDX-License-Identifier: GPL-2.0
obj-y += core.o sev-nmi.o startup.o
# jump tables are emitted using absolute references in non-PIC code
# so they cannot be used in the early SEV startup code
CFLAGS_startup.o += -fno-jump-tables
ifdef CONFIG_FUNCTION_TRACER
CFLAGS_REMOVE_startup.o = -pg
endif
KASAN_SANITIZE_startup.o := n
KMSAN_SANITIZE_startup.o := n
KCOV_INSTRUMENT_startup.o := n
# With some compiler versions the generated code results in boot hangs, caused
# by several compilation units. To be safe, disable all instrumentation.
KCSAN_SANITIZE := n
obj-y += core.o sev-nmi.o
# Clang 14 and older may fail to respect __no_sanitize_undefined when inlining
UBSAN_SANITIZE := n
UBSAN_SANITIZE_sev-nmi.o := n
# GCC may fail to respect __no_sanitize_address when inlining
KASAN_SANITIZE_sev-nmi.o := n