On 4/17/2018 1:31 PM, Zhang, Yulei wrote:
>>> +static SaveVMHandlers savevm_vfio_handlers = { >>> + .save_setup = vfio_save_setup, >>> + .save_live_pending = vfio_save_live_pending, >>> + .save_live_complete_precopy = vfio_save_complete, >>> + .load_state = vfio_load, >>> +}; >>> + >> >> Isn't .is_active, .save_live_iterate and .cleanup required? >> What is vendor driver have large amount of data in device's memory which >> vendor driver is aware of? and vendor driver would required multiple >> iterations to send that data to QEMU to save complete state of device? >> > I suppose the vendor driver will copy the device's memory to the device > region iteratively, and let qemu read from the device region and transfer > the data to the target side in pre-copy stage, isn't it? > As Dave mentioned in other mail in this thread, all data will not be copied only in pre-copy state. Some static data would be copied in pre-copy state but there could be significant amount of data in stop-and-copy state where iterations would be required. .is_active and .save_live_iterate would be required for that iterations. .cleanup is required to provide an indication to vendor driver that migration is complete and vendor driver can cleanup all the extra allocations done for migration. Thanks, Kirti