On Wed, 20 Jun 2012 15:57:15 +0800 Xiao Guangrong <xiaoguangrong@xxxxxxxxxxxxxxxxxx> wrote: > Introduce a common function to abstract spte write-protect to > cleanup the code > > Signed-off-by: Xiao Guangrong <xiaoguangrong@xxxxxxxxxxxxxxxxxx> ... > +/* Return true if the spte is dropped. */ > +static bool spte_write_protect(struct kvm *kvm, u64 *sptep, bool *flush) > +{ > + u64 spte = *sptep; > + > + if (!is_writable_pte(spte)) > + return false; > + > + rmap_printk("rmap_write_protect: spte %p %llx\n", sptep, *sptep); ... > @@ -3902,16 +3915,7 @@ void kvm_mmu_slot_remove_write_access(struct kvm *kvm, int slot) > !is_last_spte(pt[i], sp->role.level)) > continue; > > - if (is_large_pte(pt[i])) { > - drop_spte(kvm, &pt[i]); > - --kvm->stat.lpages; > - continue; > - } > - > - /* avoid RMW */ > - if (is_writable_pte(pt[i])) > - mmu_spte_update(&pt[i], > - pt[i] & ~PT_WRITABLE_MASK); > + spte_write_protect(kvm, &pt[i], &flush); Adding rmap_printk() here seems wrong. If you think it is not a problem, please explain why you think so in the changelog. Thanks, Takuya -- 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