mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
vmstate, memory: decouple vmstate from memory API
Currently creating a memory region automatically registers it for live migration. This differs from other state (which is enumerated in a VMStateDescription structure) and ties the live migration code into the memory core. Decouple the two by introducing a separate API, vmstate_register_ram(), for registering a RAM block for migration. Currently the same implementation is reused, but later it can be moved into a separate list, and registrations can be moved to VMStateDescription blocks. Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
8991c79b57
commit
c5705a7728
71 changed files with 286 additions and 154 deletions
|
@ -589,7 +589,8 @@ pflash_t *pflash_cfi01_register(target_phys_addr_t base,
|
|||
|
||||
memory_region_init_rom_device(
|
||||
&pfl->mem, be ? &pflash_cfi01_ops_be : &pflash_cfi01_ops_le, pfl,
|
||||
qdev, name, size);
|
||||
name, size);
|
||||
vmstate_register_ram(&pfl->mem, qdev);
|
||||
pfl->storage = memory_region_get_ram_ptr(&pfl->mem);
|
||||
memory_region_add_subregion(get_system_memory(), base, &pfl->mem);
|
||||
|
||||
|
@ -599,6 +600,7 @@ pflash_t *pflash_cfi01_register(target_phys_addr_t base,
|
|||
ret = bdrv_read(pfl->bs, 0, pfl->storage, total_len >> 9);
|
||||
if (ret < 0) {
|
||||
memory_region_del_subregion(get_system_memory(), &pfl->mem);
|
||||
vmstate_unregister_ram(&pfl->mem, qdev);
|
||||
memory_region_destroy(&pfl->mem);
|
||||
g_free(pfl);
|
||||
return NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue