Sean Christopherson <sean.j.christopherson@xxxxxxxxx> writes: > Ifdef away the Hyper-V specific fields in structs kvm_vmx and vcpu_vmx > as each field has only a single reference outside of the struct itself > that isn't already wrapped in ifdeffery (and both are initialization). > > vcpu_vmx.ept_pointer in particular should be wrapped as it is valid if > and only if Hyper-v is active, i.e. non-Hyper-V code cannot rely on it > to actually track the current EPTP (without additional code changes). > > Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > --- > arch/x86/kvm/vmx/vmx.c | 5 ++++- > arch/x86/kvm/vmx/vmx.h | 4 ++++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 55d6b699d8e3..a45a90d44d24 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -6933,8 +6933,9 @@ static int vmx_create_vcpu(struct kvm_vcpu *vcpu) > vmx->pi_desc.nv = POSTED_INTR_VECTOR; > vmx->pi_desc.sn = 1; > > +#if IS_ENABLED(CONFIG_HYPERV) > vmx->ept_pointer = INVALID_PAGE; > - > +#endif > return 0; > > free_vmcs: > @@ -6951,7 +6952,9 @@ static int vmx_create_vcpu(struct kvm_vcpu *vcpu) > > static int vmx_vm_init(struct kvm *kvm) > { > +#if IS_ENABLED(CONFIG_HYPERV) > spin_lock_init(&to_kvm_vmx(kvm)->ept_pointer_lock); > +#endif > > if (!ple_gap) > kvm->arch.pause_in_guest = true; > diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h > index e8d7d07b2020..1b8c08e483cd 100644 > --- a/arch/x86/kvm/vmx/vmx.h > +++ b/arch/x86/kvm/vmx/vmx.h > @@ -276,7 +276,9 @@ struct vcpu_vmx { > */ > u64 msr_ia32_feature_control; > u64 msr_ia32_feature_control_valid_bits; > +#if IS_ENABLED(CONFIG_HYPERV) > u64 ept_pointer; > +#endif > > struct pt_desc pt_desc; > > @@ -295,8 +297,10 @@ struct kvm_vmx { > bool ept_identity_pagetable_done; > gpa_t ept_identity_map_addr; > > +#if IS_ENABLED(CONFIG_HYPERV) > hpa_t hv_tlb_eptp; > spinlock_t ept_pointer_lock; > +#endif > }; > > bool nested_vmx_allowed(struct kvm_vcpu *vcpu); Assuming this compiles without CONFIG_HYPERV, Reviewed-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> -- Vitaly