Re: [PATCH 1/6] kvm.git mmu notifier patch

Marcelo Tosatti
2008-07-28T21:18:04Z

On Mon, Jul 28, 2008 at 06:11:04PM -0300, Marcelo Tosatti wrote:
> > +static int kvm_unmap_rmapp(struct kvm *kvm, unsigned long *rmapp)
> > +{
> > + u64 *spte;
> > + int need_tlb_flush = 0;
> > +
> > + while ((spte = rmap_next(kvm, rmapp, NULL))) {
^^^^^^^^

Yeah, I can't read. :-)

> > + BUG_ON(!(*spte & PT_PRESENT_MASK));
> > + rmap_printk("kvm_rmap_unmap_hva: spte %p %llx\n", spte, *spte);
> > + rmap_remove(kvm, spte);
> > + set_shadow_pte(spte, shadow_trap_nonpresent_pte);
> > + need_tlb_flush = 1;
> > + }
>
> Is rmap_remove() safe during rmap_next() iteration? Don't you need to
> restart the rmap walk from the beginning?
>
> Remember the discussion around commit
> 6597ca09e6c0e5aec7ffd2b8ab48c671d3c28414.