On Wed, Oct 25, 2023, Vitaly Kuznetsov wrote: > 'vmx->nested.hv_evmcs_vmptr' accesses are all over the place so hiding > 'hv_evmcs_vmptr' under 'ifdef CONFIG_KVM_HYPERV' would take a lot of > ifdefs. Introduce 'nested_vmx_evmptr12()' accessor and > 'nested_vmx_is_evmptr12_valid()' checker instead. Note, several explicit > > nested_vmx_evmptr12(vmx) != EVMPTR_INVALID > > comparisons exist for a reson: 'nested_vmx_is_evmptr12_valid()' also checks > against 'EVMPTR_MAP_PENDING' and in these places this is undesireable. It > is possible to e.g. introduce 'nested_vmx_is_evmptr12_invalid()' and turn > these sites into > > !nested_vmx_is_evmptr12_invalid(vmx) > > eliminating the need for 'nested_vmx_evmptr12()' but this seems to create > even more confusion. > > No functional change intended. > > Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > --- > arch/x86/kvm/vmx/hyperv.h | 10 +++++++++ > arch/x86/kvm/vmx/nested.c | 44 +++++++++++++++++++-------------------- > arch/x86/kvm/vmx/nested.h | 2 +- > 3 files changed, 33 insertions(+), 23 deletions(-) > > diff --git a/arch/x86/kvm/vmx/hyperv.h b/arch/x86/kvm/vmx/hyperv.h > index 933ef6cad5e6..ba1a95ea72b7 100644 > --- a/arch/x86/kvm/vmx/hyperv.h > +++ b/arch/x86/kvm/vmx/hyperv.h > @@ -4,6 +4,7 @@ > > #include <linux/kvm_host.h> > #include "vmcs12.h" > +#include "vmx.h" > > #define EVMPTR_INVALID (-1ULL) > #define EVMPTR_MAP_PENDING (-2ULL) > @@ -20,7 +21,14 @@ enum nested_evmptrld_status { > EVMPTRLD_ERROR, > }; > > +struct vcpu_vmx; This forward declaration should be unnecessary as it's defined by vmx.h, which is included above.