Andreas, To go beyond RFC with this series, I need to explain why the IDE controller functions of southbridges piix3-ide, piix3-ide-xen, piix4-ide and via-ide cannot_instantiate_with_device_add_yet, or drop that. I'd appreciate your help.
Our modelling of PCI devices is weird, to put it politely. One of many weird things is that we don't distinguish between a function and a complete device: our "function models" are actually PCI device models, and can be used as such, even though they only exist as functions of a multifunction device in the real world. We permit collecting aribitrary PCI devices into multifunction devices. One instance of multifunction PCI devices are southbridges. For example, the ICH9 southbridge's PCI device 00:1F consists of ISA bridge ("ICH9 LPC"), IDE controller ("ich9-ahci"), SMB controller ("ICH9 SMB"), and Thermal Subsystem (which we don't implement). The PIIX3 southbridge consists of ISA bridge ("PIIX3", IDE controller ("piix3-ide"), USB controller ("piix3-usb-uhci", can be suppressed), and SMB controller ("PIIX4_PM", can be suppressed). Some functions of southbridges still need to be wired up in code ("ICH9 LPC", "ICH9 SMB", "PIIX4_PM", "PIIX4", "PIIX3", "PIIX3-xen", see PATCH 5-6/9), thus cannot_instantiate_with_device_add_yet. The IDE controller functions have always been cannot_instantiate_with_device_add_yet, but it's not obvious to me why. The other functions are available with device-add. Users device-add'ing them would of course be odd, but if it works... I don't actually know whether it works for all of them. Should all southbridge functions be made unavailable with device-add for consistency, at least for now? Or should all functions be made available, except for the ones that cannot possibly work with device-add? If the latter, can you think of any specific reason why the IDE controllers couldn't work?