vDPA device driver will need callfd to setup device VFIO interrupt. Looking at QEMU vhost message sequence, the real callfd comes after the other vring messages and just before SET_VRING_ENABLE.
This patch is to make sure we configure device only when all the guest information is in hand. Note: virtio-user's vhost message sequence is slightly different from QEMU, it has no SET_VRING_ENABLE in the ending. So this patch is not applicable to virtio-user. We could align virtio-user's message sequence to QEMU in future to address this issue. Signed-off-by: Xiao Wang <xiao.w.w...@intel.com> --- lib/librte_vhost/vhost_user.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c index 51e6443..65d52bd 100644 --- a/lib/librte_vhost/vhost_user.c +++ b/lib/librte_vhost/vhost_user.c @@ -1404,7 +1404,9 @@ send_vhost_reply(fd, &msg); } - if (!(dev->flags & VIRTIO_DEV_RUNNING) && virtio_is_ready(dev)) { + if (msg.request.master == VHOST_USER_SET_VRING_ENABLE && + !(dev->flags & VIRTIO_DEV_RUNNING) && + virtio_is_ready(dev)) { dev->flags |= VIRTIO_DEV_READY; if (!(dev->flags & VIRTIO_DEV_RUNNING)) { -- 1.8.3.1