From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:57721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7SVe-0007vm-KM for qemu-devel@nongnu.org; Fri, 31 Aug 2012 10:47:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T7SVa-0001im-Da for qemu-devel@nongnu.org; Fri, 31 Aug 2012 10:47:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:29622) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7SVa-0001ii-5N for qemu-devel@nongnu.org; Fri, 31 Aug 2012 10:47:42 -0400 Message-ID: <5040CE89.3030708@redhat.com> Date: Fri, 31 Aug 2012 16:47:37 +0200 From: Kevin Wolf MIME-Version: 1.0 References: <201208301800.q7UI04R9009678@int-mx12.intmail.prod.int.phx2.redhat.com> In-Reply-To: <201208301800.q7UI04R9009678@int-mx12.intmail.prod.int.phx2.redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] ahci: add migration support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jason Baron Cc: aliguori@us.ibm.com, jan.kiszka@siemens.com, agraf@suse.de, qemu-devel@nongnu.org, yamahata@valinux.co.jp, alex.williamson@redhat.com, afaerber@suse.de Am 30.08.2012 20:00, schrieb Jason Baron: > Add support for ahci migration. This patch builds upon the patches posted > previously by Andreas Faerber: > > http://lists.gnu.org/archive/html/qemu-devel/2012-08/msg01538.html > > (I hope I am giving Andreas proper credit for his work.) > > I've tested these patches by migrating Windows 7 and Fedora 16 guests on > both piix with ahci attached and on q35 (which has a built-in ahci controller). > > Signed-off-by: Jason Baron > --- > hw/ide/ahci.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > hw/ide/ahci.h | 10 +++++++++ > hw/ide/ich.c | 11 +++++++-- > 3 files changed, 81 insertions(+), 4 deletions(-) > > diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c > index b53c757..e94509b 100644 > --- a/hw/ide/ahci.c > +++ b/hw/ide/ahci.c > @@ -1204,6 +1204,65 @@ void ahci_reset(AHCIState *s) > } > } > > +static const VMStateDescription vmstate_ahci_device = { > + .name = "ahci port", > + .version_id = 1, > + .fields = (VMStateField []) { > + VMSTATE_IDE_BUS(port, AHCIDevice), > + VMSTATE_UINT32(port_state, AHCIDevice), > + VMSTATE_UINT32(finished, AHCIDevice), > + VMSTATE_UINT32(port_regs.lst_addr, AHCIDevice), > + VMSTATE_UINT32(port_regs.lst_addr_hi, AHCIDevice), > + VMSTATE_UINT32(port_regs.fis_addr, AHCIDevice), > + VMSTATE_UINT32(port_regs.fis_addr_hi, AHCIDevice), > + VMSTATE_UINT32(port_regs.irq_stat, AHCIDevice), > + VMSTATE_UINT32(port_regs.irq_mask, AHCIDevice), > + VMSTATE_UINT32(port_regs.cmd, AHCIDevice), > + VMSTATE_UINT32(port_regs.tfdata, AHCIDevice), > + VMSTATE_UINT32(port_regs.sig, AHCIDevice), > + VMSTATE_UINT32(port_regs.scr_stat, AHCIDevice), > + VMSTATE_UINT32(port_regs.scr_ctl, AHCIDevice), > + VMSTATE_UINT32(port_regs.scr_err, AHCIDevice), > + VMSTATE_UINT32(port_regs.scr_act, AHCIDevice), > + VMSTATE_UINT32(port_regs.cmd_issue, AHCIDevice), > + VMSTATE_END_OF_LIST() > + }, > +}; This looks incomplete to me. Everything below port_regs in AHCIDevice is missing from the saved fields: struct AHCIDevice { IDEDMA dma; IDEBus port; int port_no; uint32_t port_state; uint32_t finished; AHCIPortRegs port_regs; struct AHCIState *hba; QEMUBH *check_bh; uint8_t *lst; uint8_t *res_fis; int dma_status; int done_atapi_packet; int busy_slot; int init_d2h_sent; BlockDriverCompletionFunc *dma_cb; AHCICmdHdr *cur_cmd; NCQTransferState ncq_tfs[AHCI_MAX_CMDS]; }; I haven't checked each single one, but things like done_atapi_packet or init_d2h_sent certainly look as if they should be migrated. Hm... Could we possibly test migration with qtest? I can imagine some nice test cases there. It would require some new infrastructure, I guess, but it could be doable. Kevin