[Top][All Lists]
[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(-)
- [Qemu-devel] [PATCH 00/29] QIDL: First Batch of Device Conversions,
Michael Roth <=
- [Qemu-devel] [PATCH 01/29] qemu-timer: add QEMUTimer visitor, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 02/29] qidl: qidl.h, mark common immutable types as q_immutable by default, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 04/29] rtc: qidl_declare RTCState, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 06/29] rtc: add qom property for RTCState state, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 10/29] vga: qidl_declare VGACommonState, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 13/29] cirrus: qidl_declare ISACirrusVGAState, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 15/29] i440fx: qidl_declare PCII440FXState, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 14/29] cirrus: add qom property for isa-cirrus-vga, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 29/29] hpet: add qom property for hpet state, Michael Roth, 2012/11/01
- [Qemu-devel] [PATCH 27/29] ide: add qom property for piix3/piix4-ide state, Michael Roth, 2012/11/01