For some machines it is impossible to plug devices into a particular PCI bus slot, e.g. for a real Ultra 5 there are 2 PCI bridges attached to the root bus behind which all devices must be plugged. Ignoring this rule will cause problems with interrupt routing since the interrupt numbers are calculated based upon PCI bridge id and secondary PCI bus slot id.
This patchset adds a new slot_reserved_mask property to PCIBus which is a bitmask used to indicate whether PCI bus slots are reserved, i.e. they cannot be used for hot or cold plugging on a particular PCI bus. Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> v3: - Rebase onto master - Simplify pci_bus_devfn_available() as suggested by Marcel - Also simplify pci_bus_devfn_reserved() in a similar manner v2: - Rename dev_reserved_mask to slot_reserved_mask as suggested by Marcel - Squash patches 2 and 3 together Mark Cave-Ayland (2): pci: move check for existing devfn into new pci_bus_devfn_available() helper pci: add reserved slot check to do_pci_register_device() hw/pci/pci.c | 26 ++++++++++++++++++++++---- include/hw/pci/pci_bus.h | 1 + 2 files changed, 23 insertions(+), 4 deletions(-) -- 1.7.10.4