Avi Kivity wrote: > > It would be better to rewrite kvm_mmu_zap_page() in terms of > prepare/commit in the patch so we don't have two copies of the same > thing (also easier to review). OK, i'll do it in the next version. > > > > >>> This is a good idea, but belongs in a separate patch? We can use it to >>> reclaim invalid pages before allocating new ones. >>> >>> >> This patch is very simple and kvm_mmu_commit_zap_page() function >> should depend on >> kvm->arch.invalid_mmu_pages, so i think we on need separate this >> patch, your opinion? :-) >> >> > > How about passing the list as a parameter to prepare() and commit()? If > the lifetime of the list is just prepare/commit, it shouldn't be a global. > Does below example code show your meaning correctly? + struct list_head free_list = LIST_HEAD_INIT(&free_list); hlist_for_each_entry_safe(sp, node, nn, bucket, hash_link) { if (sp->gfn == gfn && !sp->role.direct && !sp->role.invalid) { pgprintk("%s: zap %lx %x\n", __func__, gfn, sp->role.word); + kvm_mmu_prepare_zap_page(kvm, sp, &free_list); } } + kvm_mmu_commit_zap_page(kvm, &free_list); Thanks, Xiao -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html