[dpdk-dev] [PATCH v2] examples/vhost: workaround qemu abort

Marvin Liu yong.liu at intel.com
Wed Jul 25 11:56:54 CEST 2018


Current qemu vhost net ring start has a dependency on feature bit
VHOST_USER_F_PROTOCOL_FEATURES. If vhost device start without it, stop
action will be skipped. Consequently, same ioevent fd will be added
twice after reloading driver and then cause qemu abort. However, ring
should be initialized in an enabled state when this feature bit not
negotiated. Work around qemu issue by enabling this feature bit in vhost
user backend.

Signed-off-by: Marvin Liu <yong.liu at intel.com>

diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index 2175c1186..4b87331fc 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -1519,8 +1519,12 @@ main(int argc, char *argv[])
 				"vhost driver register failure.\n");
 		}
 
-		if (builtin_net_driver)
+		if (builtin_net_driver) {
 			rte_vhost_driver_set_features(file, VIRTIO_NET_FEATURES);
+			/* Workaround for qemu vhost net device startup */
+			rte_vhost_driver_set_features(file,
+				1ULL << VHOST_USER_F_PROTOCOL_FEATURES);
+		}
 
 		if (mergeable == 0) {
 			rte_vhost_driver_disable_features(file,
-- 
2.17.0



More information about the dev mailing list