Re: [PATCH v11 055/113] KVM: x86/VMX: introduce vmx tlb_remote_flush and tlb_remote_flush_with_range

From: Isaku Yamahata
Date: Mon Feb 27 2023 - 17:04:06 EST


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>