Similar to PIIX4 this series QOM'ifies internal device creation for PIIX3. This reduces the delta between the implementations of PIIX3 and PIIX4 and therefore might allow to merge both implementations in the future.
There were two challenges in this series: First, QEMU considers the ACPI and USB functions to be optional in PIIX3. When instantiating those with object_initialize_child(), they need to be unparented in the realize function to prevent an assertion (see respective commit messages). Second, the PIC used to be instantiated outside of the southbridge while some sub functions require a PIC with populated qemu_irqs. This has been solved by introducing a proxy PIC which furthermore allows PIIX3 to be agnostic towards the virtualization technology used (KVM, TCG, Xen). Testing done: * make check * make check-avocado * Boot live CD: * qemu-system-x86_64 -M pc -m 2G -accel kvm -cpu host -cdrom manjaro-kde-21.3.2-220704-linux515.iso * qemu-system-x86_64 -M q35 -m 2G -accel kvm -cpu host -cdrom manjaro-kde-21.3.2-220704-linux515.iso Bernhard Beschow (11): hw/i386/pc: QOM'ify DMA creation hw/i386/pc_piix: Allow for setting properties before realizing PIIX3 southbridge hw/isa/piix3: QOM'ify USB controller creation hw/isa/piix3: QOM'ify ACPI controller creation hw/i386/pc: QOM'ify RTC creation hw/i386/pc: No need for rtc_state to be an out-parameter hw/intc/i8259: Introduce i8259 proxy "isa-pic" hw/isa/piix3: QOM'ify ISA PIC creation hw/isa/piix3: QOM'ify IDE controller creation hw/isa/piix3: Wire up ACPI interrupt internally hw/isa/piix3: Remove extra ';' outside of functions hw/i386/Kconfig | 1 - hw/i386/pc.c | 17 ++++--- hw/i386/pc_piix.c | 70 ++++++++++++++++------------- hw/i386/pc_q35.c | 3 +- hw/intc/i8259.c | 27 +++++++++++ hw/isa/Kconfig | 1 + hw/isa/lpc_ich9.c | 11 +++++ hw/isa/piix3.c | 84 ++++++++++++++++++++++++++++++++--- include/hw/i386/ich9.h | 2 + include/hw/i386/pc.h | 2 +- include/hw/intc/i8259.h | 14 ++++++ include/hw/southbridge/piix.h | 16 ++++++- 12 files changed, 201 insertions(+), 47 deletions(-) -- 2.37.1