]> git.hungrycats.org Git - linux/commitdiff
KVM: SEV: Wire up kvm_x86_ops.gmem_xxx() if and only if CONFIG_KVM_AMD_SEV=y
authorSean Christopherson <seanjc@google.com>
Thu, 9 Jul 2026 20:49:34 +0000 (13:49 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 2 Sep 2026 12:31:48 +0000 (14:31 +0200)
commit 01a96ff30dde5127c37497f1e098e639e7ae152f upstream.

Wire up the SEV-SNP guest_memfd kvm_x86_ops hooks if and only if SEV is
actually enabled, and drop the now-unnecessary stubs.  Leaving the hooks
NULL allows the static call infrastructure to elide the CALL+RET, and more
importantly, referencing the hooks if and only if SEV support is enabled
will allow conditionally definining the hooks using their corresponding
HAVE_KVM_ARCH_GMEM_XXX Kconfig.

No functional change intended.

Cc: stable@vger.kernel.org # 6.12.x
Reviewed-by: Ackerley Tng <ackerleytng@google.com>
Link: https://patch.msgid.link/20260709204948.1988414-5-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kvm/svm/svm.c
arch/x86/kvm/svm/svm.h

index 36fad2f95bd2e06f57604db26dba54b55dbba86b..a24a6871b6936a20b112b0319128b187eee5bca9 100644 (file)
@@ -5262,6 +5262,10 @@ struct kvm_x86_ops svm_x86_ops __initdata = {
 
        .vm_copy_enc_context_from = sev_vm_copy_enc_context_from,
        .vm_move_enc_context_from = sev_vm_move_enc_context_from,
+
+       .gmem_prepare = sev_gmem_prepare,
+       .gmem_invalidate = sev_gmem_invalidate,
+       .gmem_max_mapping_level = sev_gmem_max_mapping_level,
 #endif
        .check_emulate_instruction = svm_check_emulate_instruction,
 
@@ -5273,10 +5277,6 @@ struct kvm_x86_ops svm_x86_ops __initdata = {
        .vcpu_deliver_sipi_vector = svm_vcpu_deliver_sipi_vector,
        .vcpu_get_apicv_inhibit_reasons = avic_vcpu_get_apicv_inhibit_reasons,
        .alloc_apic_backing_page = svm_alloc_apic_backing_page,
-
-       .gmem_prepare = sev_gmem_prepare,
-       .gmem_invalidate = sev_gmem_invalidate,
-       .gmem_max_mapping_level = sev_gmem_max_mapping_level,
 };
 
 /*
index ffaec038902c4b4727778c2be1d79ac1631a734f..85f64d9ebe59a4ce1e84a96cb3450da6a168a12f 100644 (file)
@@ -906,16 +906,6 @@ static inline int sev_cpu_init(struct svm_cpu_data *sd) { return 0; }
 static inline int sev_dev_get_attr(u32 group, u64 attr, u64 *val) { return -ENXIO; }
 #define max_sev_asid 0
 static inline void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) {}
-static inline int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order)
-{
-       return 0;
-}
-static inline void sev_gmem_invalidate(kvm_pfn_t start, kvm_pfn_t end) {}
-static inline int sev_gmem_max_mapping_level(struct kvm *kvm, kvm_pfn_t pfn, bool is_private)
-{
-       return 0;
-}
-
 static inline struct vmcb_save_area *sev_decrypt_vmsa(struct kvm_vcpu *vcpu)
 {
        return NULL;