On Fri, 11 Oct 2019 13:20:05 +0200 Jens Freimann <jfreim...@redhat.com> wrote:
> This is implementing the host side of the net_failover concept > (https://www.kernel.org/doc/html/latest/networking/net_failover.html) > > Changes since v2: > * back out of creating failover pair when it is a non-networking > vfio-pci device (Alex W) > * handle migration state change from within the migration thread. I do a > timed wait on a semaphore and then check if all unplugs were > succesful. Added a new function to each device that checks the device > if the unplug for it has happened. When all devices report the succesful > unplug *or* the time/retries is up, continue with the migration or > cancel. When not all devices could be unplugged I am cancelling at the > moment. It is likely that we can't plug it back at the destination which > would result in degraded network performance. > * fix a few bugs regarding re-plug on migration source and target > * run full set of tests including migration tests > * add patch for libqos to tolerate new migration state > * squashed patch 1 and 2, added patch 8 > > The general idea is that we have a pair of devices, a vfio-pci and a > virtio-net device. Before migration the vfio device is unplugged and data > flows to the virtio-net device, on the target side another vfio-pci device > is plugged in to take over the data-path. In the guest the net_failover > module will pair net devices with the same MAC address. > > * Patch 1 adds the infrastructure to hide the device for the qbus and qdev > APIs > > * Patch 2 sets a new flag for PCIDevice 'partially_hotplugged' which we > use to skip the unrealize code path when doing a unplug of the primary > device > > * Patch 3 sets the pending_deleted_event before triggering the guest > unplug request These only cover pcie hotplug, is this feature somehow dependent on pcie? There's also ACPI-based PCI hotplug, SHPC hotplug, and it looks like s390 has it's own version (of course) of PCI hotplug. IMO, we either need to make an attempt to support this universally or the option needs to fail if the hotplug controller doesn't support partial removal. Thanks, Alex