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