On 02/02/2018 01:08 AM, Michael S. Tsirkin wrote:
On Tue, Jan 30, 2018 at 08:09:19PM +0800, Wei Wang wrote:
Suppose we have both the vhost and virtio-net set up, and vhost pmd <->
virtio-net pmd communication works well. Now, vhost pmd exits (virtio-net
pmd is still there). Some time later, we re-run vhost pmd, the vhost pmd
doesn't know the virtqueue addresses of the virtio-net pmd, unless the
virtio-net pmd reloads to start the 2nd phase of the vhost-user protocol. So
the second run of the vhost pmd won't work.
So vhost in qemu must resend all configuration on reconnect.
Does this address the issues?
Yes, but the issues are
1) there is no reconnecting when a pmd exits (the socket connection
seems still on at the device layer);
2) If we find a way to break the QEMU layer socket connection when pmd
exits and get it reconnect, virtio-net device still won't send all the
configure when reconnecting, because socket connecting only triggers
phase 1 of vhost-user negotiation (i.e. vhost_user_init). Phase 2 is
triggered after the driver loads (i.e. vhost_net_start). If the
virtio-net pmd doesn't reload, there are no phase 2 messages (like
virtqueue addresses which are allocated by the pmd). I think we need to
think more about this before moving forward.