On Tue, Jun 18, 2024 at 16:14:29 +0100, Daniel P. Berrangé wrote: > On Tue, Jun 18, 2024 at 08:06:06AM -0700, Jon Kohler wrote: > > diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h > > index 2f5b01bbfe..9543629f30 100644 > > --- a/include/libvirt/libvirt-domain.h > > +++ b/include/libvirt/libvirt-domain.h > > @@ -1100,6 +1100,17 @@ typedef enum { > > * Since: 8.5.0 > > */ > > VIR_MIGRATE_ZEROCOPY = (1 << 20), > > + > > + /* Use switchover ack migration capability to reduce downtime on VFIO > > + * device migration. This prevents the source from stopping the VM and > > + * completing the migration until an ACK is received from the destination > > + * that it's OK to do so. Thus, a VFIO device can make sure that its > > + * initial bytes were sent and loaded in the destination before the > > + * source VM is stopped. > > + * > > + * Since: 10.5.0 > > + */ > > + VIR_MIGRATE_SWITCHOVER_ACK = (1 << 21), > > } virDomainMigrateFlags; > > Do we really need a flag for this ? Is there a credible scenario > in which this flag works, and yet shouldn't be used by libvirt ? > > IOW, can we just "do the right thing" and always enable this, > except for TUNNELLED mode. I discussed this capability some time ago with Peter (I think) and if IIRC there was some downside when the capability is enabled for domains that do not use VFIO. I don't remember exactly what it was about, but perhaps introducing an extra delay in migration switchover? Peter, can you add the details, please? That said, I think we should be able to do the right thing anyway and enable this capability only for domains that use VFIO. Jirka