From patchwork Sat May 15 11:32:42 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 52706 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 9BEAFB7DFF for ; Sat, 15 May 2010 21:34:19 +1000 (EST) Received: from localhost ([127.0.0.1]:47122 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ODFdI-0002zX-B4 for incoming@patchwork.ozlabs.org; Sat, 15 May 2010 07:34:16 -0400 Received: from [140.186.70.92] (port=56642 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ODFc1-0002w2-EL for qemu-devel@nongnu.org; Sat, 15 May 2010 07:32:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1ODFbv-0003oq-7r for qemu-devel@nongnu.org; Sat, 15 May 2010 07:32:57 -0400 Received: from fmmailgate01.web.de ([217.72.192.221]:53314) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ODFbu-0003o9-QL for qemu-devel@nongnu.org; Sat, 15 May 2010 07:32:51 -0400 Received: from smtp06.web.de ( [172.20.5.172]) by fmmailgate01.web.de (Postfix) with ESMTP id 1EF45159B2E6C; Sat, 15 May 2010 13:32:50 +0200 (CEST) Received: from [88.64.22.236] (helo=localhost.localdomain) by smtp06.web.de with asmtp (TLSv1:AES256-SHA:256) (WEB.DE 4.110 #4) id 1ODFbt-0005YN-03; Sat, 15 May 2010 13:32:50 +0200 From: Jan Kiszka To: qemu-devel@nongnu.org Date: Sat, 15 May 2010 13:32:42 +0200 Message-Id: <7ef790b700084506014f162de58f8b72f6c56d23.1273923157.git.jan.kiszka@web.de> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: References: In-Reply-To: References: X-Sender: jan.kiszka@web.de X-Provags-ID: V01U2FsdGVkX18rknizU7YyZGxvfR1B9QR6M84A49ILQ022evic zFKh/t3nSXB+RNIp7KjmPiFJk5qghMmOcpHYgQMmucALHcDkmC yqtVH86gs= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4-2.6 Cc: Blue Swirl , Jan Kiszka , Juan Quintela Subject: [Qemu-devel] [PATCH v2 5/6] fdc: Register vmstate via qdev X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Jan Kiszka Establish vmstate containers for ISA and sysbus variant, define the iobase as instance ID alias, and let qdev do the vmstate registration work. Signed-off-by: Jan Kiszka --- hw/fdc.c | 35 ++++++++++++++++++++++++++++++----- 1 files changed, 30 insertions(+), 5 deletions(-) diff --git a/hw/fdc.c b/hw/fdc.c index c4ca9e9..6306496 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -1918,7 +1918,7 @@ FDCtrl *sun4m_fdctrl_init(qemu_irq irq, target_phys_addr_t io_base, return fdctrl; } -static int fdctrl_init_common(FDCtrl *fdctrl, target_phys_addr_t io_base) +static int fdctrl_init_common(FDCtrl *fdctrl) { int i, j; static int command_tables_inited = 0; @@ -1949,7 +1949,6 @@ static int fdctrl_init_common(FDCtrl *fdctrl, target_phys_addr_t io_base) DMA_register_channel(fdctrl->dma_chann, &fdctrl_transfer_handler, fdctrl); fdctrl_connect_drives(fdctrl); - vmstate_register(io_base, &vmstate_fdc, fdctrl); return 0; } @@ -1973,7 +1972,8 @@ static int isabus_fdc_init1(ISADevice *dev) isa_init_irq(&isa->busdev, &fdctrl->irq, isairq); fdctrl->dma_chann = dma_chann; - ret = fdctrl_init_common(fdctrl, iobase); + qdev_set_legacy_instance_id(&dev->qdev, iobase, 2); + ret = fdctrl_init_common(fdctrl); return ret; } @@ -1991,7 +1991,8 @@ static int sysbus_fdc_init1(SysBusDevice *dev) qdev_init_gpio_in(&dev->qdev, fdctrl_handle_tc, 1); fdctrl->dma_chann = -1; - ret = fdctrl_init_common(fdctrl, io); + qdev_set_legacy_instance_id(&dev->qdev, io, 2); + ret = fdctrl_init_common(fdctrl); return ret; } @@ -2008,14 +2009,26 @@ static int sun4m_fdc_init1(SysBusDevice *dev) qdev_init_gpio_in(&dev->qdev, fdctrl_handle_tc, 1); fdctrl->sun4m = 1; - return fdctrl_init_common(fdctrl, io); + qdev_set_legacy_instance_id(&dev->qdev, io, 2); + return fdctrl_init_common(fdctrl); } +static const VMStateDescription vmstate_isa_fdc ={ + .name = "fdc", + .version_id = 2, + .minimum_version_id = 2, + .fields = (VMStateField []) { + VMSTATE_STRUCT(state, FDCtrlISABus, 0, vmstate_fdc, FDCtrl), + VMSTATE_END_OF_LIST() + } +}; + static ISADeviceInfo isa_fdc_info = { .init = isabus_fdc_init1, .qdev.name = "isa-fdc", .qdev.size = sizeof(FDCtrlISABus), .qdev.no_user = 1, + .qdev.vmsd = &vmstate_isa_fdc, .qdev.reset = fdctrl_external_reset_isa, .qdev.props = (Property[]) { DEFINE_PROP_DRIVE("driveA", FDCtrlISABus, state.drives[0].dinfo), @@ -2024,10 +2037,21 @@ static ISADeviceInfo isa_fdc_info = { }, }; +static const VMStateDescription vmstate_sysbus_fdc ={ + .name = "fdc", + .version_id = 2, + .minimum_version_id = 2, + .fields = (VMStateField []) { + VMSTATE_STRUCT(state, FDCtrlSysBus, 0, vmstate_fdc, FDCtrl), + VMSTATE_END_OF_LIST() + } +}; + static SysBusDeviceInfo sysbus_fdc_info = { .init = sysbus_fdc_init1, .qdev.name = "sysbus-fdc", .qdev.size = sizeof(FDCtrlSysBus), + .qdev.vmsd = &vmstate_sysbus_fdc, .qdev.reset = fdctrl_external_reset_sysbus, .qdev.props = (Property[]) { DEFINE_PROP_DRIVE("driveA", FDCtrlSysBus, state.drives[0].dinfo), @@ -2040,6 +2064,7 @@ static SysBusDeviceInfo sun4m_fdc_info = { .init = sun4m_fdc_init1, .qdev.name = "SUNW,fdtwo", .qdev.size = sizeof(FDCtrlSysBus), + .qdev.vmsd = &vmstate_sysbus_fdc, .qdev.reset = fdctrl_external_reset_sysbus, .qdev.props = (Property[]) { DEFINE_PROP_DRIVE("drive", FDCtrlSysBus, state.drives[0].dinfo),