Messages in this thread |  | | Date | Wed, 22 Jun 2011 14:10:37 +0300 | | From | Avi Kivity <> | | Subject | Re: [PATCH] mmu_notifier, kvm: Introduce dirty bit tracking in spte and mmu notifier to help KSM dirty bit tracking |
| |
On 06/22/2011 02:05 PM, Izik Eidus wrote: >>> + spte = rmap_next(kvm, rmapp, NULL); >>> + while (spte) { >>> + int _dirty; >>> + u64 _spte = *spte; >>> + BUG_ON(!(_spte& PT_PRESENT_MASK)); >>> + _dirty = _spte& PT_DIRTY_MASK; >>> + if (_dirty) { >>> + dirty = 1; >>> + clear_bit(PT_DIRTY_SHIFT, (unsigned long *)spte); >>> + } >> >> Racy. Also, needs a tlb flush eventually. > + > > Hi, one of the issues is that the whole point of this patch is not do > tlb flush eventually, > But I see your point, because other users will not expect such > behavior, so maybe there is need into a parameter > flush_tlb=?, or add another mmu notifier call? >
If you don't flush the tlb, a subsequent write will not see that spte.d is clear and the write will happen. So you'll see the page as clean even though it's dirty. That's not acceptable.
-- error compiling committee.c: too many arguments to function
|  |