qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 00/29] QIDL: First Batch of Device Conversions


From: Michael Roth
Subject: [Qemu-devel] [PATCH 00/29] QIDL: First Batch of Device Conversions
Date: Thu, 1 Nov 2012 08:04:02 -0500

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(-)




reply via email to

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