diff options
author | Avi Kivity | 2011-12-20 14:59:12 +0100 |
---|---|---|
committer | Avi Kivity | 2012-01-04 12:34:48 +0100 |
commit | c5705a7728b4a6bc9e4f2d35911adbaf28042b25 (patch) | |
tree | e96a1e0c9fbd0fa3624b5454038659775c81fba2 /hw/pci.c | |
parent | memory: introduce memory_region_name() (diff) | |
download | qemu-c5705a7728b4a6bc9e4f2d35911adbaf28042b25.tar.gz qemu-c5705a7728b4a6bc9e4f2d35911adbaf28042b25.tar.xz qemu-c5705a7728b4a6bc9e4f2d35911adbaf28042b25.zip |
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>
Diffstat (limited to 'hw/pci.c')
-rw-r--r-- | hw/pci.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1765,7 +1765,8 @@ static int pci_add_option_rom(PCIDevice *pdev, bool is_default_rom) else snprintf(name, sizeof(name), "%s.rom", pdev->qdev.info->name); pdev->has_rom = true; - memory_region_init_ram(&pdev->rom, &pdev->qdev, name, size); + memory_region_init_ram(&pdev->rom, name, size); + vmstate_register_ram(&pdev->rom, &pdev->qdev); ptr = memory_region_get_ram_ptr(&pdev->rom); load_image(path, ptr); g_free(path); @@ -1787,6 +1788,7 @@ static void pci_del_option_rom(PCIDevice *pdev) if (!pdev->has_rom) return; + vmstate_unregister_ram(&pdev->rom, &pdev->qdev); memory_region_destroy(&pdev->rom); pdev->has_rom = false; } |