This series resolves the global "isabus" variable and is basically a v2 of [1]. Note that the majority of the work consists of fixing ISA API calls in PIIX IDE which implicitly rely on the usage of the isabus global.
Rather than adding an ISABus pointer in PCIIDEState as in "v1" this series uses a qemu_irq array which is roughly the approach outlined in [2]. Moreover, this series considers backwards compatibility for user-created PIIX IDE "Frankensten" devices by using a temporary hack. This hack can be removed again once a deprecation period of user-createable PIIX IDE devices is over. This deprecation wasn't announced yet but now might be a good time. Testing done: * `./qemu-system-x86_64 -M x-remote -device piix3-ide` still fails gracefully with `qemu-system-x86_64: -device piix3-ide: Failed to realize piix3-ide: No such device` * `make check-avocado` doesn't report errors * Booting a live image with `./qemu-system-x86_64 -M pc` works * Booting a MIPS Malta machine [3] works [1] https://patchew.org/QEMU/20210518215545.1793947-1-phi...@redhat.com/ [2] https://lists.nongnu.org/archive/html/qemu-devel/2020-03/msg01707.html [3] https://people.debian.org/~aurel32/qemu/mips/ Bernhard Beschow (10): hw/ide/piix: Check for presence of ISABus before using it Revert "hw/ide: Fix crash when plugging a piix3-ide device into the x-remote machine" hw/i386/pc_piix: Allow for setting properties on "piix3-ide" before realizing it hw/ide/piix: Avoid the isabus global when wiring ISA interrupts for internal devices hw/isa/isa-bus: assert() if isa_get_irq() gets passed a NULL ISADevice hw/ide/ioport: Rename ide_init_ioport() to isa_ide_init_ioport() hw/pci/pci: Introduce pci_register_portio_list() hw/ide/piix: Use pci_ide_init_ioport() rather than isa_ide_init_ioport() hw/isa: Resolve unneeded usage of isabus global hw/isa/isa-bus: Resolve isabus global hw/i386/pc_piix.c | 6 +++- hw/ide/ioport.c | 30 +++++++++++++------- hw/ide/isa.c | 2 +- hw/ide/piix.c | 59 +++++++++++++++++++++++++++++++-------- hw/isa/isa-bus.c | 46 ++++++++++++++---------------- hw/isa/piix4.c | 3 ++ hw/pci/pci.c | 18 ++++++++++++ include/hw/ide/internal.h | 3 +- include/hw/ide/pci.h | 2 ++ include/hw/isa/isa.h | 15 ++++------ include/hw/pci/pci.h | 21 ++++++++++++++ 11 files changed, 147 insertions(+), 58 deletions(-) -- 2.36.1