diff options
author | Fabiano Rosas <farosas@suse.de> | 2024-02-29 12:30:03 -0300 |
---|---|---|
committer | Peter Xu <peterx@redhat.com> | 2024-03-01 15:42:04 +0800 |
commit | c2d5c4a7cb7f59125c34e5b883d5d91336761661 (patch) | |
tree | 96709ad9593860ff03ee18bfc24d8547d8442d6b /include/hw/mem/sparse-mem.h | |
parent | 8d9e0d41006f094a8a377f0a12bef1e34b0a70b7 (diff) | |
download | qemu-c2d5c4a7cb7f59125c34e5b883d5d91336761661.zip qemu-c2d5c4a7cb7f59125c34e5b883d5d91336761661.tar.gz qemu-c2d5c4a7cb7f59125c34e5b883d5d91336761661.tar.bz2 |
migration/ram: Add outgoing 'mapped-ram' migration
Implement the outgoing migration side for the 'mapped-ram' capability.
A bitmap is introduced to track which pages have been written in the
migration file. Pages are written at a fixed location for every
ramblock. Zero pages are ignored as they'd be zero in the destination
migration as well.
The migration stream is altered to put the dirty pages for a ramblock
after its header instead of having a sequential stream of pages that
follow the ramblock headers.
Without mapped-ram (current): With mapped-ram (new):
--------------------- --------------------------------
| ramblock 1 header | | ramblock 1 header |
--------------------- --------------------------------
| ramblock 2 header | | ramblock 1 mapped-ram header |
--------------------- --------------------------------
| ... | | padding to next 1MB boundary |
--------------------- | ... |
| ramblock n header | --------------------------------
--------------------- | ramblock 1 pages |
| RAM_SAVE_FLAG_EOS | | ... |
--------------------- --------------------------------
| stream of pages | | ramblock 2 header |
| (iter 1) | --------------------------------
| ... | | ramblock 2 mapped-ram header |
--------------------- --------------------------------
| RAM_SAVE_FLAG_EOS | | padding to next 1MB boundary |
--------------------- | ... |
| stream of pages | --------------------------------
| (iter 2) | | ramblock 2 pages |
| ... | | ... |
--------------------- --------------------------------
| ... | | ... |
--------------------- --------------------------------
| RAM_SAVE_FLAG_EOS |
--------------------------------
| ... |
--------------------------------
where:
- ramblock header: the generic information for a ramblock, such as
idstr, used_len, etc.
- ramblock mapped-ram header: the new information added by this
feature: bitmap of pages written, bitmap size and offset of pages
in the migration file.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/r/20240229153017.2221-10-farosas@suse.de
Signed-off-by: Peter Xu <peterx@redhat.com>
Diffstat (limited to 'include/hw/mem/sparse-mem.h')
0 files changed, 0 insertions, 0 deletions