On Mon, Feb 26, 2024 at 02:03:33PM -0500, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h > index 8ef95139cd24..52bc955ed06f 100644 > --- a/arch/x86/kvm/svm/svm.h > +++ b/arch/x86/kvm/svm/svm.h > @@ -664,13 +664,10 @@ void avic_refresh_virtual_apic_mode(struct kvm_vcpu *vcpu); > > /* sev.c */ > > +#ifdef CONFIG_KVM_AMD_SEV > #define GHCB_VERSION_MAX 1ULL > #define GHCB_VERSION_MIN 1ULL > > - > -extern unsigned int max_sev_asid; > - > -void sev_vm_destroy(struct kvm *kvm); > int sev_mem_enc_ioctl(struct kvm *kvm, void __user *argp); > int sev_mem_enc_register_region(struct kvm *kvm, > struct kvm_enc_region *range); > @@ -681,19 +678,30 @@ int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd); > void sev_guest_memory_reclaimed(struct kvm *kvm); > > void pre_sev_run(struct vcpu_svm *svm, int cpu); > -void __init sev_set_cpu_caps(void); > -void __init sev_hardware_setup(void); > -void sev_hardware_unsetup(void); > -int sev_cpu_init(struct svm_cpu_data *sd); > void sev_init_vmcb(struct vcpu_svm *svm); > void sev_vcpu_after_set_cpuid(struct vcpu_svm *svm); > -void sev_free_vcpu(struct kvm_vcpu *vcpu); > int sev_handle_vmgexit(struct kvm_vcpu *vcpu); > int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in); > void sev_es_vcpu_reset(struct vcpu_svm *svm); > void sev_vcpu_deliver_sipi_vector(struct kvm_vcpu *vcpu, u8 vector); > void sev_es_prepare_switch_to_guest(struct sev_es_save_area *hostsa); > void sev_es_unmap_ghcb(struct vcpu_svm *svm); > +void sev_free_vcpu(struct kvm_vcpu *vcpu); > +void sev_vm_destroy(struct kvm *kvm); > +void __init sev_set_cpu_caps(void); > +void __init sev_hardware_setup(void); > +void sev_hardware_unsetup(void); > +int sev_cpu_init(struct svm_cpu_data *sd); > +extern unsigned int max_sev_asid; > +#else > +static inline void sev_free_vcpu(struct kvm_vcpu *vcpu) {} > +static inline void sev_vm_destroy(struct kvm *kvm) {} > +static inline void __init sev_set_cpu_caps(void) {} > +static inline void __init sev_hardware_setup(void) {} > +static inline void sev_hardware_unsetup(void) {} > +static inline int sev_cpu_init(struct svm_cpu_data *sd) { return 0; } > +#define max_sev_asid 0 > +#endif > > /* vmenter.S */ > > -- This causes compile errors with -Werror=implicit-function-declaration when CONFIG_KVM_AMD=y and CONFIG_KVM_AMD_SEV=n. As discussed in [1], the stubs aren't needed due to dead code elimination, but the declarations are needed. [1] https://lore.kernel.org/kvm/ZdjCpX4LMCCyYev9@xxxxxxxxxx/ Please feel free to squash the fix. CC arch/x86/kvm/svm/svm.o /linux/arch/x86/kvm/svm/svm.c: In function 'init_vmcb': /linux/arch/x86/kvm/svm/svm.c:1367:17: error: implicit declaration of function 'sev_init_vmcb'; did you mean 'init_vmcb'? [-Werror=implicit-function-declaration] 1367 | sev_init_vmcb(svm); | ^~~~~~~~~~~~~ | init_vmcb Similar warnings for sev_es_vcpu_reset(), sev_es_unmap_ghcb(), sev_es_prepare_switch_to_guest(), sev_es_string_io(), pre_sev_run(), sev_vcpu_after_set_cpuid(), and sev_vcpu_deliver_sipi_vector(). Reported-by: Rick Edgecombe <rick.p.edgecombe@xxxxxxxxx> Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> --- arch/x86/kvm/svm/svm.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index 52bc955ed06f..eff9f19e5bcc 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -663,6 +663,14 @@ void avic_refresh_virtual_apic_mode(struct kvm_vcpu *vcpu); /* sev.c */ +void pre_sev_run(struct vcpu_svm *svm, int cpu); +void sev_init_vmcb(struct vcpu_svm *svm); +void sev_vcpu_after_set_cpuid(struct vcpu_svm *svm); +int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in); +void sev_es_vcpu_reset(struct vcpu_svm *svm); +void sev_vcpu_deliver_sipi_vector(struct kvm_vcpu *vcpu, u8 vector); +void sev_es_prepare_switch_to_guest(struct sev_es_save_area *hostsa); +void sev_es_unmap_ghcb(struct vcpu_svm *svm); #ifdef CONFIG_KVM_AMD_SEV #define GHCB_VERSION_MAX 1ULL @@ -677,15 +685,7 @@ int sev_vm_copy_enc_context_from(struct kvm *kvm, unsigned int source_fd); int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd); void sev_guest_memory_reclaimed(struct kvm *kvm); -void pre_sev_run(struct vcpu_svm *svm, int cpu); -void sev_init_vmcb(struct vcpu_svm *svm); -void sev_vcpu_after_set_cpuid(struct vcpu_svm *svm); int sev_handle_vmgexit(struct kvm_vcpu *vcpu); -int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in); -void sev_es_vcpu_reset(struct vcpu_svm *svm); -void sev_vcpu_deliver_sipi_vector(struct kvm_vcpu *vcpu, u8 vector); -void sev_es_prepare_switch_to_guest(struct sev_es_save_area *hostsa); -void sev_es_unmap_ghcb(struct vcpu_svm *svm); void sev_free_vcpu(struct kvm_vcpu *vcpu); void sev_vm_destroy(struct kvm *kvm); void __init sev_set_cpu_caps(void); -- 2.43.2 -- Isaku Yamahata <isaku.yamahata@xxxxxxxxx>