From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46065) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTuS2-0004NL-7X for qemu-devel@nongnu.org; Thu, 01 Nov 2012 09:04:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TTuS0-00063f-RZ for qemu-devel@nongnu.org; Thu, 01 Nov 2012 09:04:50 -0400 Received: from mail-ia0-f173.google.com ([209.85.210.173]:60542) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTuS0-000627-M4 for qemu-devel@nongnu.org; Thu, 01 Nov 2012 09:04:48 -0400 Received: by mail-ia0-f173.google.com with SMTP id m10so1965034iam.4 for ; Thu, 01 Nov 2012 06:04:47 -0700 (PDT) Sender: fluxion From: Michael Roth Date: Thu, 1 Nov 2012 08:04:02 -0500 Message-Id: <1351775071-7644-1-git-send-email-mdroth@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 00/29] QIDL: First Batch of Device Conversions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com, quintela@redhat.com, blauwirbel@gmail.com, pbonzini@redhat.com These patches are based are qidl-base-v6, and can also be obtained from: git://github.com/mdroth/qemu.git qidl-conv1-v1 This adds QIDL declarations/annotations and QOM state properties for the following devices (with their default path assignments for a basic QEMU invocation): PCI: /machine/i440fx/pci.0/state piix3-ide: /machine/unattached/device[22]/state mc146818rtc: /machine/unattached/device[11]/state hpet: /machine/unattached/device[10]/state cirrus-vga: /machine/unattached/device[9]/state PIIX3: /machine/unattached/device[6]/state i440FX: /machine/unattached/device[5]/state pci-bridge: /machine/peripheral-anon/device[0]/state This serialized state information will eventually be used as an intermediate, dynamic (via QObject) representation of device state to allow for arbitrary manipulations of state representation during migration (post-serialize for outgoing, pre-deserialization for incoming). A future series will teach VMState how to map it's existing struct fields/offsets to fields within these dynamic state objects to fully de-couple the migration wire protocol from our internal representations of device state. Future wire protocols can also potentially make use of this framework. What to expect from this: For now, we put these annotations in place to facilitate the practice of properly marking guest state as immutable/derived/etc. By default, we assume state is mutable and attempt to serialize it. This can cause build breakage for developers modifying converted devices structures as the QIDL parser is not currently capable of parsing all types of declarations it encounters, and in some cases how to parse something is inherantly ambiguous and requires input from the developer (requiring a q_size()/q_immutable/q_derived marker for a uint32_t*, for instance). The risk here is mostly on the build side, however, as the state properties we generate are not yet in any critical path. As the parser becomes more mature these situations will lesson, and we can potentially make the parser smarter about anticipating such situations and providing useful steps on how to fix them to minimize the impact to normal development. The plan is to get all standard PC devices converted over and make migration capable of utilizing serialized state by 1.4, ideally starting with 1.3, if that seems reasonable. Makefile | 3 ++- hw/cirrus_vga.c | 72 ++++++++++++++++++++++++++++++++++++++++++++------- hw/hpet.c | 40 +++++++++++++++++++++++----- hw/ide/core.c | 12 +++++++-- hw/ide/internal.h | 69 +++++++++++++++++++++++++++--------------------- hw/ide/isa.c | 39 ++++++++++++++++++++++++++-- hw/ide/pci.c | 9 +++++-- hw/ide/pci.h | 31 +++++++++++++--------- hw/ide/piix.c | 39 ++++++++++++++++++++++++++++ hw/ide/qdev.c | 2 ++ hw/isa-bus.c | 4 +++ hw/isa.h | 3 ++- hw/mc146818rtc.c | 49 +++++++++++++++++++++++++---------- hw/msix.c | 12 ++++++--- hw/pci.c | 40 +++++++++++++++++++--------- hw/pci.h | 54 ++++++++++++++++++++++---------------- hw/pci_bridge.c | 4 +++ hw/pci_bridge_dev.c | 35 +++++++++++++++++++++++-- hw/pci_internals.h | 36 ++++++++++++++------------ hw/piix_pci.c | 66 +++++++++++++++++++++++++++++++++++++++++----- hw/shpc.c | 42 ++++++++++++++++++------------ hw/shpc.h | 17 +++++++----- hw/vga_int.h | 25 ++++++++++-------- qemu-timer.c | 29 +++++++++++++++++++++ qemu-timer.h | 4 +++ qidl.h | 6 +++++ 26 files changed, 565 insertions(+), 177 deletions(-)