• Alexey Kardashevskiy's avatar
    vmstate: Add preallocation for migrating arrays (VMS_ALLOC flag) · f32935ea
    Alexey Kardashevskiy authored
    There are few helpers already to support array migration. However they all
    require the destination side to preallocate arrays before migration which
    is not always possible due to unknown array size as it might be some
    sort of dynamic state. One of the examples is an array of MSIX-enabled
    devices in SPAPR PHB - this array may vary from 0 to 65536 entries and
    its size depends on guest's ability to enable MSIX or do PCI hotplug.
    
    This adds new VMSTATE_VARRAY_STRUCT_ALLOC macro which is pretty similar to
    VMSTATE_STRUCT_VARRAY_POINTER_INT32 but it can alloc memory for migratign
    array on the destination side.
    
    This defines VMS_ALLOC flag for a field.
    
    This changes vmstate_base_addr() to do the allocation when receiving
    migration.
    Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: default avatarJuan Quintela <quintela@redhat.com>
    [agraf: drop g_malloc_n usage]
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    f32935ea
vmstate.c 15.9 KB