From: Laine Stump Date: Wed, 10 Jun 2015 18:15:25 +0000 (-0400) Subject: qemu: ignore assumptions about hotplug requirement when address is from config X-Git-Tag: v1.2.17-rc1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a12b6cd8c09df8328eac03c089a4f7302a71f11;p=thirdparty%2Flibvirt.git qemu: ignore assumptions about hotplug requirement when address is from config Certain PCI buses don't support hotplug, and when automatically assigning PCI addresses for devices, libvirt is very conservative in its assumptions about whether or not a device will need to be hotplugged/unplugged in the future. But if the user manually assigns an address, they likely are aware of any hotplug requirements of the device (or at least they should be). In short, after this patch, automatically PCI address assignment will assume that the device must be plugged in to a hot-pluggable slot, but manually assignment can place the device in any bus that is compatible, regardless of whether or not it supports hotplug. If the user makes a mistake and plugs the device into a bus that doesn't support hotplug, then later tries to do a hot-unplug, qemu will give an appropriate error. (in the future we may want to add a "hotpluggable" attribute to all devices, with default being "yes" for autoassign, and "no" for manual assign). --- diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c index 93c6043187..2be98c5edf 100644 --- a/src/conf/domain_addr.c +++ b/src/conf/domain_addr.c @@ -50,6 +50,12 @@ virDomainPCIAddressFlagsCompatible(virDevicePCIAddressPtr addr, */ if (busFlags & VIR_PCI_CONNECT_TYPES_ENDPOINT) busFlags |= VIR_PCI_CONNECT_TYPES_ENDPOINT; + /* Also allow manual specification of bus to override + * libvirt's assumptions about whether or not hotplug + * capability will be required. + */ + if (devFlags & VIR_PCI_CONNECT_HOTPLUGGABLE) + busFlags |= VIR_PCI_CONNECT_HOTPLUGGABLE; } /* If this bus doesn't allow the type of connection (PCI