This is *almost* usable. I still need to add support for a
dmi-to-pci-bridge before the q35 machine type can be used.
1/5 and 3/5 are just cleaning up some things that bothered me while
writing patch 4/5.
2/5 should help out other machine types (e.g. arm)
just a bit, by eliminating the extra PIIX3 devices unless the machine
actually has a PIIX3 chip.
4/5 has the bulk of the changes - it restructures the PCI address
validation/allocation so that it doesn't assume that all PCI addresses
are the same, or that all PCI slots are the same. It sets up an enum
where different types of PCI addresses can be listed, and the
validation code checks that the slot about to be used for a device is
actually compatible with that device.
5/5 adds the pcie-root controller which is implicit in the q35
machinetype. Of course since we can only connect pcie devices to this
controller, and there are no pcie devices supported, it is not really
worth much. However, the next patch (in progress) will add a
dmi-to-pci-bridge controller, which *can* plug into the pcie-root and
provide plain PCI slots, making a working a35 possible.
Note that the auto-allocation doesn't attempt to auto-allocate a slot
for any type of device other than plain PCI. This means that even when
the dmi-to-pci-bridge controller is added, its address on pcie-root
(and a pci-bridge device that must be connected to the
dmi-to-pci-bridge controller) will need to be manually
specified. Auto-placement will be an exercise for later.
Things missing: 1) I need a test case for auto-adding multiple
bridges. I will add that this afternoon. 2) I need a test case for a
q35 domain. That wil also be added this afternoon.
Laine Stump (5):
qemu: turn qemuDomainPCIAddressBus into a struct
qemu: only check for PIIX3-specific device addrs on pc-* machinetypes
qemu: make QEMU_PCI_ADDRESS_(SLOT|FUNCTION)_LAST less misleading
qemu: set/validate slot/connection type when assigning slots for PCI
devices
conf: add pcie-root controller
docs/formatdomain.html.in | 17 +-
src/conf/domain_conf.c | 4 +-
src/conf/domain_conf.h | 5 +-
src/libvirt_private.syms | 1 +
src/qemu/qemu_command.c | 559 ++++++++++++++++++++++++++++++----------------
src/qemu/qemu_command.h | 28 ++-
src/qemu/qemu_domain.c | 23 +-
7 files changed, 434 insertions(+), 203 deletions(-)
--
1.7.11.7