On Fri, Apr 22, 2022, David Matlack wrote: > drop_large_spte() drops a large SPTE if it exists and then flushes TLBs. > Its helper function, __drop_large_spte(), does the drop without the > flush. > > In preparation for eager page splitting, which will need to sometimes > flush when dropping large SPTEs (and sometimes not), push the flushing > logic down into __drop_large_spte() and add a bool parameter to control > it. > > No functional change intended. > > Reviewed-by: Peter Xu <peterx@xxxxxxxxxx> > Signed-off-by: David Matlack <dmatlack@xxxxxxxxxx> > --- > arch/x86/kvm/mmu/mmu.c | 29 +++++++++++++++-------------- > 1 file changed, 15 insertions(+), 14 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index 479c581e8a96..a5961c17eb36 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -1183,28 +1183,29 @@ static void drop_spte(struct kvm *kvm, u64 *sptep) > rmap_remove(kvm, sptep); > } > > - > -static bool __drop_large_spte(struct kvm *kvm, u64 *sptep) > +static void __drop_large_spte(struct kvm *kvm, u64 *sptep, bool flush) > { > - if (is_large_pte(*sptep)) { > - WARN_ON(sptep_to_sp(sptep)->role.level == PG_LEVEL_4K); > - drop_spte(kvm, sptep); > - return true; > - } > + struct kvm_mmu_page *sp; > > - return false; > -} > + if (!is_large_pte(*sptep)) > + return; > > -static void drop_large_spte(struct kvm_vcpu *vcpu, u64 *sptep) > -{ > - if (__drop_large_spte(vcpu->kvm, sptep)) { > - struct kvm_mmu_page *sp = sptep_to_sp(sptep); > + sp = sptep_to_sp(sptep); > + WARN_ON(sp->role.level == PG_LEVEL_4K); > > - kvm_flush_remote_tlbs_with_address(vcpu->kvm, sp->gfn, > + drop_spte(kvm, sptep); > + > + if (flush) { Unnecessary curly braces. > + kvm_flush_remote_tlbs_with_address(kvm, sp->gfn, > KVM_PAGES_PER_HPAGE(sp->role.level)); > } > } > > +static void drop_large_spte(struct kvm_vcpu *vcpu, u64 *sptep) > +{ > + return __drop_large_spte(vcpu->kvm, sptep, true); > +} > + > /* > * Write-protect on the specified @sptep, @pt_protect indicates whether > * spte write-protection is caused by protecting shadow page table. > -- > 2.36.0.rc2.479.g8af0fa9b8e-goog > _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm