• L
    conf/qemu: change the way VIR_PCI_CONNECT_TYPE_* flags work · d1cc4605
    Laine Stump 提交于
    The flags used to determine which devices could be plugged into which
    controllers were quite confusing, as they tried to create classes of
    connections, then put particular devices into possibly multiple
    classes, while sometimes setting multiple flags for the controllers
    themselves. The attempt to have a single flag indicate, e.g. that a
    root-port or a switch-downstream-port could connect was not only
    confusing, it was leading to a situation where it would be impossible
    to specify exactly the right combinations for a new controller.
    
    The solution is for the VIR_PCI_CONNECT_TYPE_* flags to have a 1:1
    correspondence with each type of PCI controller, plus a flag for a PCI
    endpoint device and another for a PCIe endpoint device (the only
    exception to this is that pci-bridge and pcie-expander-bus controllers
    have their upstream connection classified as
    VIR_PCI_CONNECT_TYPE_PCI_DEVICE since they can be plugged into
    *exactly* the same ports as any endpoint device).  Each device then
    has a single flag for connect type (plus the HOTPLUG flag if that
    device can e hotplugged), and each controller sets the CONNECT bits
    for all controllers that can be plugged into it, as well as for either
    type of endpoint device that can be plugged in (and the HOTPLUG flag
    if it can accept hotplugged devices).
    
    With this change, it is *slightly* easier to understand the matching
    of connections (as long as you remember that the flag for a
    device/upstream-facing connection of a controller is the same as that
    device's type, while the flags for a controller's downstream
    connections is the OR of all device types that can be plugged into
    that controller). More importantly, it will be possible to correctly
    specify what can be plugged into a pcie-switch-expander-bus, when
    support for it is added.
    d1cc4605
domain_addr.h 9.6 KB