[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv4 5/5] xen: Set the vram dirty when an error occur.
On Tue, 19 Feb 2013, Alex Bligh wrote: > If the call to xc_hvm_track_dirty_vram() fails, then we set dirtybit on all > the > video ram. This case happens during migration. > > Backport of 8aba7dc02d5660df7e7d8651304b3079908358be > > Signed-off-by: Alex Bligh <alex@xxxxxxxxxxx> > --- > xen-all.c | 20 ++++++++++++++++++-- > 1 files changed, 18 insertions(+), 2 deletions(-) > > diff --git a/xen-all.c b/xen-all.c > index 121289d..dbd759c 100644 > --- a/xen-all.c > +++ b/xen-all.c > @@ -470,7 +470,21 @@ static int xen_sync_dirty_bitmap(XenIOState *state, > rc = xc_hvm_track_dirty_vram(xen_xc, xen_domid, > start_addr >> TARGET_PAGE_BITS, npages, > bitmap); > - if (rc) { > + if (rc < 0) { > + if (rc != -ENODATA) { > + ram_addr_t addr, end; > + > + xen_modified_memory(start_addr, size); > + > + end = TARGET_PAGE_ALIGN(start_addr + size); > + for (addr = start_addr & TARGET_PAGE_MASK; addr < end; addr += > TARGET_PAGE_SIZE) { > + cpu_physical_memory_set_dirty(addr); > + } > + > + DPRINTF("xen: track_dirty_vram failed (0x" TARGET_FMT_plx > + ", 0x" TARGET_FMT_plx "): %s\n", > + start_addr, start_addr + size, strerror(-rc)); > + } > return rc; > } 8aba7dc02d5660df7e7d8651304b3079908358be only adds a simple call to xen_modified_memory if rc != ENODATA. Where does the rest of the code you are adding comes from? > @@ -479,7 +493,9 @@ static int xen_sync_dirty_bitmap(XenIOState *state, > while (map != 0) { > j = ffsl(map) - 1; > map &= ~(1ul << j); > - cpu_physical_memory_set_dirty(vram_offset + (i * width + j) * > TARGET_PAGE_SIZE); > + target_phys_addr_t todirty = vram_offset + (i * width + j) * > TARGET_PAGE_SIZE; > + xen_modified_memory(todirty, TARGET_PAGE_SIZE); > + cpu_physical_memory_set_dirty(todirty); > }; > } where does this chuck come from? Wouldn't it make more sense to add a call to xen_modified_memory from cpu_physical_memory_set_dirty? _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |