This RFC enables machvirt to dynamically instantiate sysbus devices from command line.
the RFC relies on - Alex Graf's "Dynamic sysbus device allocation support" http://lists.gnu.org/archive/html/qemu-ppc/2014-07/msg00047.html On top of sysbus device Alex' modifications, the RFC reuses his code developped in PPC e500.c. First that code was moved in a separate module (hw/misc/physical_devices) and then machvirt was adapted to call those helper routines. It is also proposed to add a new method in SysBysDeviceClass, named fdt_add_node, whose role is to create the device tree node. It is meant to be specialized by devices that support dynamic instantiation. In practice there is a need for 2 specializations: one for the device, and one for the board. It is assumed the provision for PlatformDevtreeData enables the board adaptation. However, this later may need to be augmented: typically some clock handles may need to be provided. Best Regards Eric Eric Auger (7): hw/misc/platform_devices: helpers for dynamic instantiation of platform devices hw/arm/boot: load_dtb becomes non static hw/arm/virt: add new add_fdt_xxx_node functions hw/arm/virt: Support dynamically spawned sysbus devices hw/core/sysbus: add fdt_add_node method hw/misc/platform_devices: add call to sysbus fdt_add_node hw/misc/platform_devices: Add platform_bus_base to PlatformDevtreeData hw/arm/boot.c | 2 +- hw/arm/virt.c | 125 ++++++++++++++++----- hw/core/sysbus.c | 12 +++ hw/misc/Makefile.objs | 1 + hw/misc/platform_devices.c | 215 +++++++++++++++++++++++++++++++++++++ include/hw/arm/arm.h | 1 + include/hw/misc/platform_devices.h | 62 +++++++++++ include/hw/sysbus.h | 2 + 8 files changed, 395 insertions(+), 25 deletions(-) create mode 100644 hw/misc/platform_devices.c create mode 100644 include/hw/misc/platform_devices.h -- 1.8.3.2