On Mon, Feb 14, 2022, Paolo Bonzini wrote: > The original use of KVM_X86_OP_NULL, which was to mark calls > that do not follow a specific naming convention, is not in use > anymore. Instead, let's mark calls that are optional because > they are always invoked within conditionals or with static_call_cond. > Those that are _not_, i.e. those that are defined with KVM_X86_OP, > must be defined by both vendor modules or some kind of NULL pointer > dereference is bound to happen at runtime. > > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- > arch/x86/include/asm/kvm-x86-ops.h | 84 +++++++++++++++--------------- > arch/x86/include/asm/kvm_host.h | 4 +- > arch/x86/kvm/x86.c | 2 +- > 3 files changed, 44 insertions(+), 46 deletions(-) > > diff --git a/arch/x86/include/asm/kvm-x86-ops.h b/arch/x86/include/asm/kvm-x86-ops.h > index 9e37dc3d8863..9415d9af204c 100644 > --- a/arch/x86/include/asm/kvm-x86-ops.h > +++ b/arch/x86/include/asm/kvm-x86-ops.h > @@ -1,25 +1,23 @@ > /* SPDX-License-Identifier: GPL-2.0 */ > -#if !defined(KVM_X86_OP) || !defined(KVM_X86_OP_NULL) > +#if !defined(KVM_X86_OP) || !defined(KVM_X86_OP_OPTIONAL) > BUILD_BUG_ON(1) > #endif > > /* > - * KVM_X86_OP() and KVM_X86_OP_NULL() are used to help generate > + * KVM_X86_OP() and KVM_X86_OP_OPTIONAL() are used to help generate > * "static_call()"s. They are also intended for use when defining > - * the vmx/svm kvm_x86_ops. KVM_X86_OP() can be used for those > - * functions that follow the [svm|vmx]_func_name convention. > - * KVM_X86_OP_NULL() can leave a NULL definition for the > - * case where there is no definition or a function name that > - * doesn't match the typical naming convention is supplied. > + * the vmx/svm kvm_x86_ops. But assuming your veto of actually using kvm-x86-ops to fill vendor ops isn't overriden, they're _not_ "intended for use when defining the vmx/svm kvm_x86_ops." > KVM_X86_OP_OPTIONAL() can be used for those > + * functions that can have a NULL definition, for example if > + * "static_call_cond()" will be used at the call sites. > */