Avi Kivity wrote:
We should just qemu_ram_alloc() that memory regardless of whether we every map it into the guest. Since roms can be large, we want to send their contents over during the live part of migration. If we use qemu_ram_alloc(), we get that for free.

Currently live migration uses ram_addrs, so this would work. But ram_addrs have no meaning in the guest and thus depend on qemu implementation details. IMO we should switch live migration to use guest physical addresses, which would require a different migration implementation for roms. Most of it can be shared with ram, though.

I'd rather do (id, offset) instead of guest physical address. Guest physical addresses map to ram_addrs in chunks. Each chunk usually has some reasonable identification (below 640k, above 1mb, above 4gb, etc.). Other type of memory like roms and vga lfb memory aren't always part of the guest physical address space but nonetheless still need to be migrated. This gives us one mechanism to support everything.

Regards,

Anthony Liguori



Reply via email to