diff options
author | Laszlo Ersek <lersek@redhat.com> | 2013-08-06 12:37:10 +0200 |
---|---|---|
committer | Luiz Capitulino <lcapitulino@redhat.com> | 2013-08-08 11:01:46 -0400 |
commit | c5d7f60f0614250bd925071e25220ce5958f75d0 (patch) | |
tree | 893fa3598476b807559ae2ab76e2db8da433b75c /dump.c | |
parent | 5ee163e8ea2fb6610339f494e039159e08a69066 (diff) |
dump: populate guest_phys_blocks
While the machine is paused, in guest_phys_blocks_append() we register a
one-shot MemoryListener, solely for the initial collection of the valid
guest-physical memory ranges that happens at listener registration time.
For each range that is reported to guest_phys_blocks_region_add(), we
attempt to merge the range with the preceding one.
Ranges can only be joined if they are contiguous in both guest-physical
address space, and contiguous in host virtual address space.
The "maximal" ranges that remain in the end constitute the guest-physical
memory map that the dump will be based on.
Related RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=981582
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Diffstat (limited to 'dump.c')
-rw-r--r-- | dump.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -746,7 +746,7 @@ static int dump_init(DumpState *s, int fd, bool paging, bool has_filter, s->length = length; guest_phys_blocks_init(&s->guest_phys_blocks); - /* FILL LIST */ + guest_phys_blocks_append(&s->guest_phys_blocks); s->start = get_start_block(s); if (s->start == -1) { |