qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH] ide save/restore current transfer fields


From: Juan Quintela
Subject: [Qemu-devel] Re: [PATCH] ide save/restore current transfer fields
Date: Wed, 20 Jan 2010 18:00:55 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Marcelo Tosatti <address@hidden> wrote:
> If migration takes place between write of the bmdma address register and
> write of the command register (to initiate DMA), the destination will
> not properly start the DMA op, hanging the guest:
>
> ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
> ata1.00: cmd c8/00:16:41:00:00/00:00:00:00:00/e0 tag 0 dma 11264 in
>          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
> ata1.00: status: { DRDY }
>
> Fix by sending current transfer information in the migration data.
>
> Signed-off-by: Marcelo Tosatti <address@hidden>
>
> diff --git a/hw/ide/pci.c b/hw/ide/pci.c
> index 780fc5f..9f245ed 100644
> --- a/hw/ide/pci.c
> +++ b/hw/ide/pci.c
> @@ -133,6 +135,10 @@ static const VMStateDescription vmstate_bmdma = {
>          VMSTATE_INT64(sector_num, BMDMAState),
>          VMSTATE_UINT32(nsector, BMDMAState),
>          VMSTATE_UINT8(unit, BMDMAState),
> +        VMSTATE_UINT32(cur_addr, BMDMAState),
> +        VMSTATE_UINT32(cur_prd_last, BMDMAState),
> +        VMSTATE_UINT32(cur_prd_addr, BMDMAState),
> +        VMSTATE_UINT32(cur_prd_len, BMDMAState),
>          VMSTATE_END_OF_LIST()
>      }
>  };

This breaks migration.  Sending a patch with this and version changes
as top level posting.

Thanks Marcelo, Juan.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]