Alex Williamson <alex.william...@redhat.com> wrote:
> The cpu_register_io_memory() value is unique to the VM instance and
> should not be restored after migration/save.  Doing so means we
> could be pointing at arbitrary device's io regions after migration/restore.
>
> In this case, if we start a VM with a single rtl8139, hot add a 2nd,
> migrate the VM, then hot remove the added NIC, the 1st NIC stops
> working and the VM segfaults on reboot.
>
> Signed-off-by: Alex Williamson <alex.william...@redhat.com>
> ---
>
>  hw/rtl8139.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/rtl8139.c b/hw/rtl8139.c
> index d92981d..9c5fc84 100644
> --- a/hw/rtl8139.c
> +++ b/hw/rtl8139.c
> @@ -3186,7 +3186,7 @@ static void rtl8139_pre_save(void *opaque)
>  
>  static const VMStateDescription vmstate_rtl8139 = {
>      .name = "rtl8139",
> -    .version_id = 4,
> +    .version_id = 5,

No need to change version, format is still the same.

>      .minimum_version_id = 3,
>      .minimum_version_id_old = 3,
>      .post_load = rtl8139_post_load,
> @@ -3234,7 +3234,7 @@ static const VMStateDescription vmstate_rtl8139 = {
>  
>          VMSTATE_UNUSED(4),
>          VMSTATE_MACADDR(conf.macaddr, RTL8139State),
> -        VMSTATE_INT32(rtl8139_mmio_io_addr, RTL8139State),
> +        VMSTATE_UNUSED(4),

If we migrate from an old guest: we just ignore the value.
If we migrate to one old guest, we send garbage, but as you told that we
were already sending garbage, it looks ok, no?

>          VMSTATE_UINT32(currTxDesc, RTL8139State),
>          VMSTATE_UINT32(currCPlusRxDesc, RTL8139State),

Later, Juan.

Reply via email to