Message ID | CAPm50aLYb9+wsm3WA8buhC+ePfR6TrGbDR0nMju+bLzf0Tozuw@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | kvm: mmu: Simplify judgment conditions | expand |
On Tue, Jul 26, 2022, Hao Peng wrote: > From: Peng Hao <flyingpeng@tencent.com> > > kvm_shadow_root_allocated() has been checked before in > mmu_first_shadow_root_alloc, > and subsequent kvm_memslots_have_rmaps() does not need to check > kvm_shadow_root_allocated() again. Heh, this has come up before[*]. I agree with Paolo that checking for rmaps is more intuitive than checking for !TDP MMU. I'm not sure I agree about dropping the check entirely though, it just seems like we'll end up back here again, i.e. someone will inevitably propose optimizing the case where KVM has already allocated rmaps and gfn_track. [*] https://lore.kernel.org/all/c31a5f84-6da2-c6a0-c0cd-9f6802c39fc3@redhat.com > Signed-off-by: Peng Hao <flyingpeng@tencent.com> > --- > arch/x86/kvm/mmu/mmu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index 52664c3caaab..ecd64c06f839 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -3584,7 +3584,7 @@ static int mmu_first_shadow_root_alloc(struct kvm *kvm) > * Check if anything actually needs to be allocated, e.g. all metadata > * will be allocated upfront if TDP is disabled. > */ > - if (kvm_memslots_have_rmaps(kvm) && > + if (!is_tdp_mmu_enabled(kvm) && > kvm_page_track_write_tracking_enabled(kvm)) > goto out_success; > > -- > 2.27.0
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 52664c3caaab..ecd64c06f839 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -3584,7 +3584,7 @@ static int mmu_first_shadow_root_alloc(struct kvm *kvm) * Check if anything actually needs to be allocated, e.g. all metadata * will be allocated upfront if TDP is disabled. */ - if (kvm_memslots_have_rmaps(kvm) && + if (!is_tdp_mmu_enabled(kvm) && kvm_page_track_write_tracking_enabled(kvm)) goto out_success;