• L
    qemu: add dmi-to-pci-bridge controller · 62ac6b43
    Laine Stump 提交于
    This PCI controller, named "dmi-to-pci-bridge" in the libvirt config,
    and implemented with qemu's "i82801b11-bridge" device, connects to a
    PCI Express slot (e.g. one of the slots provided by the pcie-root
    controller, aka "pcie.0" on the qemu commandline), and provides 31
    *non-hot-pluggable* PCI (*not* PCIe) slots, numbered 1-31.
    
    Any time a machine is defined which has a pcie-root controller
    (i.e. any q35-based machinetype), libvirt will automatically add a
    dmi-to-pci-bridge controller if one doesn't exist, and also add a
    pci-bridge controller. The reasoning here is that any useful domain
    will have either an immediate (startup time) or eventual (subsequent
    hot-plug) need for a standard PCI slot; since the pcie-root controller
    only provides PCIe slots, we need to connect a dmi-to-pci-bridge
    controller to it in order to get a non-hot-plug PCI slot that we can
    then use to connect a pci-bridge - the slots provided by the
    pci-bridge will be both standard PCI and hot-pluggable.
    
    Since pci-bridge devices themselves can not be hot-plugged into a
    running system (although you can hot-plug other devices into a
    pci-bridge's slots), any new pci-bridge controller that is added can
    (and will) be plugged into the dmi-to-pci-bridge as long as it has
    empty slots available.
    
    This patch is also changing the qemuxml2xml-pcie test from a "DO_TEST"
    to a "DO_DIFFERENT_TEST". This is so that the "before" xml can omit
    the automatically added dmi-to-pci-bridge and pci-bridge devices, and
    the "after" xml can include it - this way we are testing if libvirt is
    properly adding these devices.
    62ac6b43
qemu_domain.c 68.3 KB