
On Fri, Nov 04, 2022 at 03:01:38PM +0100, Denis V. Lunev wrote:
On 11/4/22 14:41, Daniel P. Berrangé wrote:
On Fri, Nov 04, 2022 at 01:03:52PM +0100, Peter Krempa wrote:
On Fri, Nov 04, 2022 at 16:43:00 +0600, Oleg Vasilev wrote:
Hotplugging PCI devices on pc-i440fx machines is supported without additional configuration. On q35, pcie-to-pci-bridge needs to be added prior to the machine startup in order to support hotplug [1].
The idea is to support the same workflow for creating VMs in q35, as was in pc. Namely, do not require additional configuration when hotplugging is needed. Otherwise, all libvirt clients need to be updated which there are a lot and they are maintained by different parties.
Instead, a pcie-to-pci-bridge better be created by default, so that PCI slots are readily available. Might be a good idea to make it configurable in the future. The goal of q35 is to provide a PCI-e topology though, and we want devices to be exposed as PCI-e endpoints, with no legacy PCI usage by default.
When a guest XML is provided for cold boot, libvirt will ensure that all devices are placed onto the PCI-e bus via pcie-root-ports
With this proposal hotplugging a device will cause it to be placed on a PCI bus instead, if there are no spare pcie-root-port available.
This behavioural difference between cold plug and hot plug is very undesirable IMHO, as it is counter to our goal of avoiding legacy PCI on PCI-e machines.
that is an interesting point which I have initially missed. I have checked our investigation log and found that we have potentially made a mistake with making compatibility check with e1000 device instead of virtio, which is our default. This could be the reason.
If a mgmt app wants to enable this mis-matched behaviour they can add a pcie-to-pci-bridge when initially cold booting the VM, but we shouldn't add one by default IMHO. We really recommend that apps just pre-populate 10-30 pcie-root-port devices when creating a VM, so there is plenty of space for hotplugging devices later.
this potentially an option, but I think that these port should be created automatically by libvirt to avoid major client rewrites. Will the option to keep the amount of spare ports in /etc/libvirt/qemu.conf work for you?
Our general view is that qemu.conf should not cause changes that affect the guest ABI. For an given input XML, we want applications to have a predictable guest ABI created. Influencing the guest ABI from qemu.conf settings would mean applications have uncertain results for a given XML config, so what works on one host may break on another host. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|