Re: [PATCH v3 2/3] KVM: SVM: Ensure PSP module is initialized if KVM module is built-in
From: Tom Lendacky
Date: Fri Feb 07 2025 - 16:47:31 EST
On 2/3/25 15:56, Ashish Kalra wrote:
> From: Sean Christopherson <seanjc@xxxxxxxxxx>
>
> The kernel's initcall infrastructure lacks the ability to express
> dependencies between initcalls, whereas the modules infrastructure
> automatically handles dependencies via symbol loading. Ensure the
> PSP SEV driver is initialized before proceeding in sev_hardware_setup()
> if KVM is built-in as the dependency isn't handled by the initcall
> infrastructure.
>
> Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
> Signed-off-by: Ashish Kalra <ashish.kalra@xxxxxxx>
Reviewed-by: Tom Lendacky <thomas.lendacky@xxxxxxx>
> ---
> arch/x86/kvm/svm/sev.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
> index a2a794c32050..0dbb25442ec1 100644
> --- a/arch/x86/kvm/svm/sev.c
> +++ b/arch/x86/kvm/svm/sev.c
> @@ -2972,6 +2972,16 @@ void __init sev_hardware_setup(void)
> WARN_ON_ONCE(!boot_cpu_has(X86_FEATURE_FLUSHBYASID)))
> goto out;
>
> + /*
> + * The kernel's initcall infrastructure lacks the ability to express
> + * dependencies between initcalls, whereas the modules infrastructure
> + * automatically handles dependencies via symbol loading. Ensure the
> + * PSP SEV driver is initialized before proceeding if KVM is built-in,
> + * as the dependency isn't handled by the initcall infrastructure.
> + */
> + if (IS_BUILTIN(CONFIG_KVM_AMD) && sev_module_init())
> + goto out;
> +
> /* Retrieve SEV CPUID information */
> cpuid(0x8000001f, &eax, &ebx, &ecx, &edx);
>