[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/6] x86/EPT: don't walk entire page tables when globally changing types
At 17:20 +0100 on 24 Apr (1398356409), Jan Beulich wrote: > >>> On 24.04.14 at 17:41, <tim@xxxxxxx> wrote: > > At 13:28 +0100 on 22 Apr (1398169701), Jan Beulich wrote: > >> --- a/xen/arch/x86/mm/hap/hap.c > >> +++ b/xen/arch/x86/mm/hap/hap.c > >> @@ -110,11 +110,18 @@ int hap_track_dirty_vram(struct domain * > >> if ( begin_pfn != dirty_vram->begin_pfn || > >> begin_pfn + nr != dirty_vram->end_pfn ) > >> { > >> + unsigned long ostart = dirty_vram->begin_pfn; > >> + unsigned long oend = dirty_vram->end_pfn; > >> + > >> dirty_vram->begin_pfn = begin_pfn; > >> dirty_vram->end_pfn = begin_pfn + nr; > >> > >> paging_unlock(d); > >> > >> + if ( oend > ostart ) > >> + p2m_change_type_range(d, ostart, oend, > >> + p2m_ram_logdirty, p2m_ram_rw); > >> + > > > > Does this (and the simlar change below) not risk losing updates if > > we're in full log-dirty mode? I think it should be fine to leave > > those entries as log-dirty, since at worst they'll provoke another > > fault-and-fixup. > > I don't think any updates can be lost: When their types get re- > calculated, p2m_is_logdirty_range() (taking p2m->global_logdirty > into account) will still cause them to become p2m_ram_logdirty > again. Right, I see. That's fine then. > > In this case, where needs_sync isn't being passed as a return value, I > > think we'd be fine with two booleans in place of this int. > > I guess I'll make these tristates distinct enums then... Thanks! Tim. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |