On Mon, Mar 22, 2021 at 11:47:15AM +0800, Jason Wang wrote: > This is a new version to support VIRTIO_F_QUEUE_STATE. The feautre > extends the basic facility to allow the driver to set and get device > internal virtqueue state. This main motivation is to support live > migration of virtio devices. Can you describe the use cases that this interface covers as well as the steps involved in migrating a device? Traditionally live migration was transparent to the VIRTIO driver because it was performed by the hypervisor. I know you're aware but I think it's worth mentioning that this only supports stateless devices. Even the simple virtio-blk device has state in QEMU's implementation. If an I/O request fails it can be held by the device and resumed after live migration instead of failing the request immediately. The list of held requests needs to be migrated with the device and is not part of the virtqueue state. I'm concerned that using device reset will not work once this interface is extended to support device-specific state (e.g. the virtio-blk failed request list). There could be situations where reset really needs to reset (e.g. freeing I/O resources) and the device therefore cannot hold on to state across reset. Stefan