• L
    qemu: avoid double reservation of PCI address for interface type='hostdev' · 47a7b8a9
    Laine Stump 提交于
    Commit 01ca4010 (libvirt v5.1.0) moved address reservation for
    hotplugged interface devices up to an earlier point in
    qemuDomainAttachNetDevice(), because that function calls
    qemuDomainSupportsNicdev() (in the case of
    VIR_DOMAIN_NET_TYPE_VHOSTUSER), and qemuDomainSupportsNicdev() needs
    to know the address type (for ARM machinetypes) and returns incorrect
    results when the address type is "none".
    
    This bugfix unfortunately caused a regression, because it also made PCI
    address reservation happen before we noticed that the device was a
    *hostdev* interface. Those interfaces are hotplugged by just calling
    out to qemuDomainAttachHostdevDevice() - that function would then also
    attempt to reserve the *same PCI address* that had just been reserved
    in qemuDomainAttachNetDevice().
    
    The solution is to move the bit of code that short-circuits out to
    virDomainHostdevAttach() up *even earlier* so that no PCI address has
    been allocated by the time it's called.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1744523Signed-off-by: NLaine Stump <laine@redhat.com>
    Reviewed-by: NAndrea Bolognani <abologna@redhat.com>
    47a7b8a9
qemu_hotplug.c 208.9 KB