On Tue, 10 Apr 2018 14:03:13 +0800 Yulei Zhang <yulei.zh...@intel.com> wrote:
> Instead of using vm state description, add SaveVMHandlers for VFIO > device to support live migration. > > Introduce new Ioctl VFIO_DEVICE_GET_DIRTY_BITMAP to fetch the memory > bitmap that dirtied by vfio device during the iterative precopy stage > to shorten the system downtime afterward. > > For vfio pci device status migrate, during the system downtime, it will > save the following states > 1. pci configuration space addr0~addr5 > 2. pci configuration space msi_addr msi_data > 3. pci device status fetch from device driver > > And on the target side the vfio_load will restore the same states > 1. re-setup the pci bar configuration > 2. re-setup the pci device msi configuration > 3. restore the pci device status Interrupts are configured via ioctl, but I don't see any code here to configure the device into the correct interrupt state. How do we know the target device is compatible with the source device? Do we rely on the vendor driver to implicitly include some kind of device and version information and fail at the very end of the migration? It seems like we need to somehow front-load that sort of device compatibility checking since a vfio-pci device can be anything (ex. what happens if a user tries to migrate a GVT-g vGPU to an NVIDIA vGPU?). Thanks, Alex