[dpdk-dev] [PATCH RFC 3/4] vhost: get all callfd before setting datapath

Xiao Wang xiao.w.wang at intel.com
Fri Dec 29 19:05:01 CET 2017


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.wang at 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



More information about the dev mailing list