• L
    qemu: properly set/use device alias for pci controllers · 01b88127
    Laine Stump 提交于
    We had been setting the device alias in the devinceinfo for pci
    controllers to "pci%u", but then hardcoding "pci.%u" when creating the
    device address for other devices using that pci bus. This all worked
    just fine until we encountered the built-in "pcie.0" bus (the PCIe
    root complex) in Q35 machines.
    
    In order to create the correct commandline for this one case, this
    patch:
    
    1) sets the alias for PCI controllers correctly, to "pci.%u" (or
    "pcie.%u" for the pcie-root controller)
    
    2) eliminates the hardcoded "pci.%u" for pci controllers when
    generatuing device address strings, and instead uses the controller's
    alias.
    
    3) plumbs a pointer to the virDomainDef all the way down to
    qemuBuildDeviceAddressStr. This was necessary in order to make the
    aliase of the controller *used by a device* available (previously
    qemuBuildDeviceAddressStr only had the deviceinfo of the device
    itself, *not* of the controller it was connecting to). This made for a
    larger than desired diff, but at least in the future we won't have to
    do it again, since all the information we could possibly ever need for
    future enhancements is in the virDomainDef. (right?)
    
    This should be done for *all* controllers, but for now we just do it
    in the case of PCI controllers, to reduce the likelyhood of
    regression.
    01b88127
qemu_command.h 13.1 KB