summaryrefslogtreecommitdiffstats
path: root/memory_mapping.c
diff options
context:
space:
mode:
authorPeter Xu2016-02-18 06:16:52 +0100
committerPaolo Bonzini2016-02-22 18:40:28 +0100
commit1fbeff72c2ba17aedfbf0d57caf8945862725c54 (patch)
tree6aa7d1fa5934f249cdfa21089019bff5e7969b2d /memory_mapping.c
parentdump-guest-memory: disable dump when in INMIGRATE state (diff)
downloadqemu-1fbeff72c2ba17aedfbf0d57caf8945862725c54.tar.gz
qemu-1fbeff72c2ba17aedfbf0d57caf8945862725c54.tar.xz
qemu-1fbeff72c2ba17aedfbf0d57caf8945862725c54.zip
dump-guest-memory: add "detach" support
If "detach" is provided, one thread is created to do the dump work, while main thread will return immediately. For each GuestPhysBlock, adding one more field "mr" to points to MemoryRegion that it belongs, also ref the mr before use. Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-Id: <1455772616-8668-8-git-send-email-peterx@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'memory_mapping.c')
-rw-r--r--memory_mapping.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/memory_mapping.c b/memory_mapping.c
index 04db3ac7fa..c8855de92b 100644
--- a/memory_mapping.c
+++ b/memory_mapping.c
@@ -178,6 +178,7 @@ void guest_phys_blocks_free(GuestPhysBlockList *list)
QTAILQ_FOREACH_SAFE(p, &list->head, next, q) {
QTAILQ_REMOVE(&list->head, p, next);
+ memory_region_unref(p->mr);
g_free(p);
}
list->num = 0;
@@ -241,6 +242,8 @@ static void guest_phys_blocks_region_add(MemoryListener *listener,
block->target_start = target_start;
block->target_end = target_end;
block->host_addr = host_addr;
+ block->mr = section->mr;
+ memory_region_ref(section->mr);
QTAILQ_INSERT_TAIL(&g->list->head, block, next);
++g->list->num;