memory: unify loops to sync dirty log bitmap
Now that memory_region_sync_dirty_bitmap is NULL, we can unify its loop with memory_global_dirty_log_sync's. The only difference is that memory_region_sync_dirty_bitmap will no longer call log_sync on FlatRanges that do have a zero dirty_log_mask, but this is okay because video memory is always registered with the dirty page logging mechanism. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
0fe1eca7dc
commit
3ebb1817b3
23
memory.c
23
memory.c
@ -1990,7 +1990,7 @@ static void memory_region_sync_dirty_bitmap(MemoryRegion *mr)
|
|||||||
as = listener->address_space;
|
as = listener->address_space;
|
||||||
view = address_space_get_flatview(as);
|
view = address_space_get_flatview(as);
|
||||||
FOR_EACH_FLAT_RANGE(fr, view) {
|
FOR_EACH_FLAT_RANGE(fr, view) {
|
||||||
if (fr->mr == mr) {
|
if (fr->dirty_log_mask && (!mr || fr->mr == mr)) {
|
||||||
MemoryRegionSection mrs = section_from_flat_range(fr, view);
|
MemoryRegionSection mrs = section_from_flat_range(fr, view);
|
||||||
listener->log_sync(listener, &mrs);
|
listener->log_sync(listener, &mrs);
|
||||||
}
|
}
|
||||||
@ -2506,26 +2506,7 @@ bool memory_region_present(MemoryRegion *container, hwaddr addr)
|
|||||||
|
|
||||||
void memory_global_dirty_log_sync(void)
|
void memory_global_dirty_log_sync(void)
|
||||||
{
|
{
|
||||||
MemoryListener *listener;
|
memory_region_sync_dirty_bitmap(NULL);
|
||||||
AddressSpace *as;
|
|
||||||
FlatView *view;
|
|
||||||
FlatRange *fr;
|
|
||||||
|
|
||||||
QTAILQ_FOREACH(listener, &memory_listeners, link) {
|
|
||||||
if (!listener->log_sync) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
as = listener->address_space;
|
|
||||||
view = address_space_get_flatview(as);
|
|
||||||
FOR_EACH_FLAT_RANGE(fr, view) {
|
|
||||||
if (fr->dirty_log_mask) {
|
|
||||||
MemoryRegionSection mrs = section_from_flat_range(fr, view);
|
|
||||||
|
|
||||||
listener->log_sync(listener, &mrs);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
flatview_unref(view);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static VMChangeStateEntry *vmstate_change;
|
static VMChangeStateEntry *vmstate_change;
|
||||||
|
Loading…
Reference in New Issue
Block a user