On Tue, Jan 17, 2023 at 04:53:57PM +0000, Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > On Tue, Jan 17, 2023, Huang, Kai wrote: > > On Thu, 2023-01-12 at 08:32 -0800, isaku.yamahata@xxxxxxxxx wrote: > > > --- a/arch/x86/kvm/mmu/mmu.c > > > +++ b/arch/x86/kvm/mmu/mmu.c > > > @@ -244,7 +244,7 @@ static void kvm_flush_remote_tlbs_with_range(struct kvm *kvm, > > > { > > > int ret = -ENOTSUPP; > > > > > > - if (range && kvm_x86_ops.tlb_remote_flush_with_range) > > > + if (range && kvm_available_flush_tlb_with_range()) > > > ret = static_call(kvm_x86_tlb_remote_flush_with_range)(kvm, range); > > > > Again, IMHO this code change doesn't make code any clearer. With the new code, > > I need to go into the kvm_available_flush_tlb_with_range() to see what's going > > on, but with the old code I don't. > > Agreed. Though I think this patch as a whole can be replaced with a more > straightforward solution. > > hv_remote_flush_tlb() is used when KVM is running as a Hyper-V guest, whereas > TDX requires running KVM on bare metal. KVM should simply disallow TDX when a > hypervisor is detected, then there's no need for vmx_tlb_remote_flush_with_range(). Ok, I dropped this patch and add the check into hardware_setup(). If hyper-v is enabled, disable tdx. -- Isaku Yamahata <isaku.yamahata@xxxxxxxxx>