On 25/10/18 11:50, Wei Yang wrote: > Paolo, > > Do you have time to take a look at this one? > > On Thu, Sep 27, 2018 at 08:31:26AM +0800, Wei Yang wrote: >> * nr_mmu_pages would be non-zero only if kvm->arch.n_requested_mmu_pages is >> non-zero. >> >> * nr_mmu_pages is always non-zero, since kvm_mmu_calculate_mmu_pages() >> never return zero. >> >> Based on these two reasons, we can merge the two *if* clause and use the >> return value from kvm_mmu_calculate_mmu_pages() directly. This simplify >> the code and also eliminate the possibility for reader to believe >> nr_mmu_pages would be zero. >> >> Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> >> Reviewed-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> >> >> --- >> v2: refactor changelog and rename kvm_mmu_calculate_mmu_pages() based on >> Sean Christopherson comment. >> --- >> arch/x86/include/asm/kvm_host.h | 2 +- >> arch/x86/kvm/mmu.c | 2 +- >> arch/x86/kvm/x86.c | 8 ++------ >> 3 files changed, 4 insertions(+), 8 deletions(-) >> >> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h >> index c5e7bb811b1e..036dede47274 100644 >> --- a/arch/x86/include/asm/kvm_host.h >> +++ b/arch/x86/include/asm/kvm_host.h >> @@ -1190,7 +1190,7 @@ void kvm_mmu_clear_dirty_pt_masked(struct kvm *kvm, >> gfn_t gfn_offset, unsigned long mask); >> void kvm_mmu_zap_all(struct kvm *kvm); >> void kvm_mmu_invalidate_mmio_sptes(struct kvm *kvm, struct kvm_memslots *slots); >> -unsigned int kvm_mmu_calculate_mmu_pages(struct kvm *kvm); >> +unsigned int kvm_mmu_calculate_default_mmu_pages(struct kvm *kvm); >> void kvm_mmu_change_mmu_pages(struct kvm *kvm, unsigned int kvm_nr_mmu_pages); >> >> int load_pdptrs(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu, unsigned long cr3); >> diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c >> index 9fa77aa24fc7..80629f5377c3 100644 >> --- a/arch/x86/kvm/mmu.c >> +++ b/arch/x86/kvm/mmu.c >> @@ -5893,7 +5893,7 @@ int kvm_mmu_module_init(void) >> /* >> * Calculate mmu pages needed for kvm. >> */ >> -unsigned int kvm_mmu_calculate_mmu_pages(struct kvm *kvm) >> +unsigned int kvm_mmu_calculate_default_mmu_pages(struct kvm *kvm) >> { >> unsigned int nr_mmu_pages; >> unsigned int nr_pages = 0; >> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c >> index 8614199d733b..bed566fd4ee5 100644 >> --- a/arch/x86/kvm/x86.c >> +++ b/arch/x86/kvm/x86.c >> @@ -9131,13 +9131,9 @@ void kvm_arch_commit_memory_region(struct kvm *kvm, >> const struct kvm_memory_slot *new, >> enum kvm_mr_change change) >> { >> - int nr_mmu_pages = 0; >> - >> if (!kvm->arch.n_requested_mmu_pages) >> - nr_mmu_pages = kvm_mmu_calculate_mmu_pages(kvm); >> - >> - if (nr_mmu_pages) >> - kvm_mmu_change_mmu_pages(kvm, nr_mmu_pages); >> + kvm_mmu_change_mmu_pages(kvm, >> + kvm_mmu_calculate_default_mmu_pages(kvm)); >> >> /* >> * Dirty logging tracks sptes in 4k granularity, meaning that large >> -- >> 2.15.1 > Queued, thanks. Paolo