On Wed, Oct 25, 2023, Vitaly Kuznetsov wrote: > @@ -1570,6 +1572,7 @@ static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx) > vmcs_load(vmx->loaded_vmcs->vmcs); > } > > +#ifdef CONFIG_KVM_HYPERV > static void copy_enlightened_to_vmcs12(struct vcpu_vmx *vmx, u32 hv_clean_fields) > { > struct vmcs12 *vmcs12 = vmx->nested.cached_vmcs12; > @@ -2077,6 +2080,10 @@ static enum nested_evmptrld_status nested_vmx_handle_enlightened_vmptrld( > > return EVMPTRLD_SUCCEEDED; > } > +#else /* CONFIG_KVM_HYPERV */ > +static inline void copy_enlightened_to_vmcs12(struct vcpu_vmx *vmx, u32 hv_clean_fields) {} > +static inline void copy_vmcs12_to_enlightened(struct vcpu_vmx *vmx) {} I'm not sure I love the stubs in .c code. What if we instead throw the #ifdef inside the helper, and then add a KVM_BUG_ON() in the CONFIG_KVM_HYPERV=n path? > +#endif /* CONFIG_KVM_HYPERV */ > > void nested_sync_vmcs12_to_shadow(struct kvm_vcpu *vcpu) > { > @@ -3155,6 +3162,7 @@ static int nested_vmx_check_vmentry_hw(struct kvm_vcpu *vcpu) > return 0; > } > > +#ifdef CONFIG_KVM_HYPERV > static bool nested_get_evmcs_page(struct kvm_vcpu *vcpu) > { > struct vcpu_vmx *vmx = to_vmx(vcpu); > @@ -3182,6 +3190,9 @@ static bool nested_get_evmcs_page(struct kvm_vcpu *vcpu) > > return true; > } > +#else > +static bool nested_get_evmcs_page(struct kvm_vcpu *vcpu) { return true; } > +#endif And this one seems like it could be cleaner to just #ifdef the callers.