From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NXdwV-00062y-4o for qemu-devel@nongnu.org; Wed, 20 Jan 2010 12:02:07 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NXdwO-0005x0-Um for qemu-devel@nongnu.org; Wed, 20 Jan 2010 12:02:05 -0500 Received: from [199.232.76.173] (port=58241 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NXdwO-0005wi-PF for qemu-devel@nongnu.org; Wed, 20 Jan 2010 12:02:00 -0500 Received: from mx1.redhat.com ([209.132.183.28]:46061) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NXdwO-0006oK-2I for qemu-devel@nongnu.org; Wed, 20 Jan 2010 12:02:00 -0500 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0KH1wn9026932 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 20 Jan 2010 12:01:58 -0500 From: Juan Quintela Date: Wed, 20 Jan 2010 18:01:49 +0100 Message-Id: <1264006909-22040-1-git-send-email-quintela@redhat.com> Subject: [Qemu-devel] [PATCH] ide save/restore current transfer fields List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Marcelo Tosatti From: Marcelo Tosatti 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. We need to update ide version to 4 for this to work. As we don't have subsectios, we need to chain the update increase until vmstate_ide_pci (quintela) Signed-off-by: Marcelo Tosatti Signed-off-by: Juan Quintela --- hw/ide/pci.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/ide/pci.c b/hw/ide/pci.c index 780fc5f..4d95cc5 100644 --- a/hw/ide/pci.c +++ b/hw/ide/pci.c @@ -123,7 +123,7 @@ void bmdma_addr_writel(void *opaque, uint32_t addr, uint32_t val) static const VMStateDescription vmstate_bmdma = { .name = "ide bmdma", - .version_id = 3, + .version_id = 4, .minimum_version_id = 0, .minimum_version_id_old = 0, .fields = (VMStateField []) { @@ -133,6 +133,10 @@ static const VMStateDescription vmstate_bmdma = { VMSTATE_INT64(sector_num, BMDMAState), VMSTATE_UINT32(nsector, BMDMAState), VMSTATE_UINT8(unit, BMDMAState), + VMSTATE_UINT32_V(cur_addr, BMDMAState, 4), + VMSTATE_UINT32_V(cur_prd_last, BMDMAState, 4), + VMSTATE_UINT32_V(cur_prd_addr, BMDMAState, 4), + VMSTATE_UINT32_V(cur_prd_len, BMDMAState, 4), VMSTATE_END_OF_LIST() } }; @@ -152,7 +156,7 @@ static int ide_pci_post_load(void *opaque, int version_id) const VMStateDescription vmstate_ide_pci = { .name = "ide", - .version_id = 3, + .version_id = 4, .minimum_version_id = 0, .minimum_version_id_old = 0, .post_load = ide_pci_post_load, -- 1.6.6