[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC V2 0/9] qemu-machine as a QOM object
From: |
Marcel Apfelbaum |
Subject: |
[Qemu-devel] [PATCH RFC V2 0/9] qemu-machine as a QOM object |
Date: |
Sun, 2 Mar 2014 15:07:03 +0200 |
Most of the "Cc" list is due to patch 8: (Should I send each patch to a
different list?)
machine-opts: replace qemu_opt_get by QOM QemuMachine queries.
Status:
- machine_opts are mapped into QemuMachineState's properties,
which can be queried as regular QOM properties.
- Subclassing QemuMachineClass allows to add a command line
option specific to a machine type, error mechanism should
work if this option is used on another machine. (Not tested, on the todo
list.)
- Next big step would be to completely remove the qemu machines
initialization
and replace it by regular QOM type registration.
RFC v1 -> RFC v2
Replaced QemuOpts access by QOM queries. (The main addition)
Addressed Paolo Bonzini's comments:
- Eliminated duplicate fields (of QEMUMachineInitArgs and QemuMachineState)
I am not sure about this one, it does mess with the "const" usage.
Maybe delay this duplication removal until after QEMUMachineInitArgs
disappears
completely?
- Added "machine-" prefix to QOM machine type.
- An instance of QEMUMachineInitArgs os is used by QemuMachineState and not
a pointer.
The main benefit of QOMifying the qemu machine would be the possibility
to have options per machine type and not global.
However, there are other benefits as:
- accessing qemu object properties instead of a global QemuOpts
list from different code subsystems.
- improving the machine "initialization" code (compat and stuff)
- getting more close to QOM's vision of single interface for
device creation and so on.
Basically the series aims (in the long run) to convert:
QEMUMachine -> QemuMachineClass
QEMUMachineInitArgs -> QemuMachineState.
As a first step, in order to make possible an incremental development,
both QEMUMachine and QEMUMachineInitArgs are being embedded into the
new types.
Your comments are welcomed,
Marcel
Marcel Apfelbaum (9):
hw/core: introduced qemu machine as QOM object
vl: use qemu machine QOM class instead of global machines list
hw/boards: converted current_machine to be an instance of
QemuMachineCLass
hw/machine: add qemu machine opts as properties to QemuMachineState
qapi: output visitor crashes qemu if it encounters a NULL value
vl.c: do not set 'type' property in obj_set_property
qom: add object_property_is_set
machine-opts: replace qemu_opt_get by QOM QemuMachine queries
hw/core: mapped QemuOpts into QEMUMachineInitArgs fields to remove
duplication
device-hotplug.c | 4 +-
device_tree.c | 9 +-
exec.c | 21 +++-
hw/arm/boot.c | 3 +-
hw/core/Makefile.objs | 2 +-
hw/core/machine.c | 289 ++++++++++++++++++++++++++++++++++++++++++++++
hw/microblaze/boot.c | 13 ++-
hw/ppc/e500.c | 21 ++--
hw/ppc/spapr.c | 14 ++-
hw/ppc/virtex_ml507.c | 3 +-
include/hw/boards.h | 60 +++++++++-
include/qom/object.h | 11 ++
kvm-all.c | 11 +-
qapi/qmp-output-visitor.c | 5 +
qmp.c | 7 +-
qom/object.c | 12 ++
target-i386/kvm.c | 10 +-
vl.c | 150 ++++++++++++++++--------
18 files changed, 555 insertions(+), 90 deletions(-)
create mode 100644 hw/core/machine.c
--
1.8.3.1