On Thu, Sep 18, 2014 at 08:45:37AM +0800, Linhaifeng wrote: > > > On 2014/9/17 17:56, Michael S. Tsirkin wrote: > > On Wed, Sep 17, 2014 at 05:39:04PM +0800, Linhaifeng wrote: > >> I think maybe is not need for the backend to wait for response. > >> > >> There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then > >> qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as > >> other command. > >> If qemu could response the request of the vhost-user.the vhost-user could > >> update date at anytime. > > > > The updates are initiated by QEMU, as a result of IOMMU, > > memory hotplug or some other configuration change. > > How to deal with the vhost-user restart? > when vhost-user restart it will lost the infomation which QEMU send. > > In the kernel mode vhost will restart with QEMU but in the user mode vhost > will not.
vhost-user must restart with qemu only. The nature of virtio protocol is such that there's not enough in-memory state for host to gracefully recover from losing VQ state. We could add a new feature to allow recovery by reporting failure to guest, and disabling processing new requests. Guest could respond by recovering / discarding submitted requests, re-enabling the device (likely by executing a reset) and re-submitting requests. This would need a new feature bit though, and would have to be acknowledged by guest. As such this would have to be virtio 1.0 feature, virtio 0.x is frozen. > > > >> I think it's very useful for Commercialization. > >> > >> On 2014/9/17 16:38, Michael S. Tsirkin wrote: > >>> Reply-To: > >>> > >>> Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE > >>> is used to update the memory mappings. > >>> > >>> So shouldn't we want for response? > >>> Otherwise e.g. guest can start using the memory > >>> that vhost-user can't access. > >>> > >>> Similarly, with an IOMMU vhost-user might access memory it shouldn't. > >>> > >>> VHOST_SET_VRING_CALL is used for MSI-X masking. > >>> Again, after vector is masted by switching the call fd, > >>> backend shouldn't assert the old one. > >>> > >>> Thoughts? > >>> > >>> > > > > . > >