mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
x86/sev: Use MSR protocol for remapping SVSM calling area
As the preceding code comment already indicates, remapping the SVSM calling area occurs long before the GHCB page is configured, and so calling svsm_perform_call_protocol() is guaranteed to result in a call to svsm_perform_msr_protocol(). So just call the latter directly. This allows most of the GHCB based API infrastructure to be moved out of the startup code in a subsequent patch. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Reviewed-by: Borislav Petkov (AMD) <bp@alien8.de> Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com> Link: https://lore.kernel.org/20250828102202.1849035-26-ardb+git@google.com
This commit is contained in:
parent
e2e2975235
commit
c15a4705d5
|
|
@ -724,6 +724,17 @@ static void __head setup_cpuid_table(const struct cc_blob_sev_info *cc_info)
|
|||
}
|
||||
}
|
||||
|
||||
static int __head svsm_call_msr_protocol(struct svsm_call *call)
|
||||
{
|
||||
int ret;
|
||||
|
||||
do {
|
||||
ret = svsm_perform_msr_protocol(call);
|
||||
} while (ret == -EAGAIN);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void __head svsm_pval_4k_page(unsigned long paddr, bool validate)
|
||||
{
|
||||
struct svsm_pvalidate_call *pc;
|
||||
|
|
|
|||
|
|
@ -295,7 +295,6 @@ static __head struct cc_blob_sev_info *find_cc_blob(struct boot_params *bp)
|
|||
static __head void svsm_setup(struct cc_blob_sev_info *cc_info)
|
||||
{
|
||||
struct svsm_call call = {};
|
||||
int ret;
|
||||
u64 pa;
|
||||
|
||||
/*
|
||||
|
|
@ -325,8 +324,8 @@ static __head void svsm_setup(struct cc_blob_sev_info *cc_info)
|
|||
call.caa = svsm_get_caa();
|
||||
call.rax = SVSM_CORE_CALL(SVSM_CORE_REMAP_CA);
|
||||
call.rcx = pa;
|
||||
ret = svsm_perform_call_protocol(&call);
|
||||
if (ret)
|
||||
|
||||
if (svsm_call_msr_protocol(&call))
|
||||
sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_SVSM_CA_REMAP_FAIL);
|
||||
|
||||
boot_svsm_caa = (struct svsm_ca *)pa;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user