On 11/05/2017 14:07, Zhoujian (jay) wrote: > - * Scan sptes if dirty logging has been stopped, dropping those > - * which can be collapsed into a single large-page spte. Later > - * page faults will create the large-page sptes. > + * Reset each vcpu's mmu, then page faults will create the large-page > + * sptes later. > */ > if ((change != KVM_MR_DELETE) && > (old->flags & KVM_MEM_LOG_DIRTY_PAGES) && > - !(new->flags & KVM_MEM_LOG_DIRTY_PAGES)) > - kvm_mmu_zap_collapsible_sptes(kvm, new); > + !(new->flags & KVM_MEM_LOG_DIRTY_PAGES)) { > + kvm_for_each_vcpu(i, vcpu, kvm) > + kvm_mmu_reset_context(vcpu);
This should be "kvm_make_all_cpus_request(kvm, KVM_REQ_MMU_RELOAD);" but I am not sure it is enough. I think that if you do not zap the SPTEs, the page faults will use 4K SPTEs, not large ones (though I'd have to check better; CCing Xiao and Wanpeng). Paolo