• C
    migration: discard non-migratable RAMBlocks · b895de50
    Cédric Le Goater 提交于
    On the POWER9 processor, the XIVE interrupt controller can control
    interrupt sources using MMIO to trigger events, to EOI or to turn off
    the sources. Priority management and interrupt acknowledgment is also
    controlled by MMIO in the presenter sub-engine.
    
    These MMIO regions are exposed to guests in QEMU with a set of 'ram
    device' memory mappings, similarly to VFIO, and the VMAs are populated
    dynamically with the appropriate pages using a fault handler.
    
    But, these regions are an issue for migration. We need to discard the
    associated RAMBlocks from the RAM state on the source VM and let the
    destination VM rebuild the memory mappings on the new host in the
    post_load() operation just before resuming the system.
    
    To achieve this goal, the following introduces a new RAMBlock flag
    RAM_MIGRATABLE which is updated in the vmstate_register_ram() and
    vmstate_unregister_ram() routines. This flag is then used by the
    migration to identify RAMBlocks to discard on the source. Some checks
    are also performed on the destination to make sure nothing invalid was
    sent.
    
    This change impacts the boston, malta and jazz mips boards for which
    migration compatibility is broken.
    Signed-off-by: NCédric Le Goater <clg@kaod.org>
    Reviewed-by: NJuan Quintela <quintela@redhat.com>
    Reviewed-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
    Signed-off-by: NJuan Quintela <quintela@redhat.com>
    b895de50
exec.c 119.9 KB