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> 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 | 34 ++++++++++++++++++++++++++++++---- include/hw/pci/pci_bus.h | 1 + 2 files changed, 31 insertions(+), 4 deletions(-) -- 1.7.10.4