From patchwork Wed Jul 25 09:56:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marvin Liu X-Patchwork-Id: 43333 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1FEDF23D; Wed, 25 Jul 2018 04:12:04 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 9362A160 for ; Wed, 25 Jul 2018 04:12:02 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Jul 2018 19:12:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,400,1526367600"; d="scan'208";a="59230168" Received: from dpdk-test32.sh.intel.com ([10.67.119.193]) by orsmga007.jf.intel.com with ESMTP; 24 Jul 2018 19:11:57 -0700 From: Marvin Liu To: tiwei.bie@intel.com, dev@dpdk.org Cc: Marvin Liu Date: Wed, 25 Jul 2018 17:56:54 +0800 Message-Id: <20180725095654.66498-1-yong.liu@intel.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180724151649.44490-1-yong.liu@intel.com> References: <20180724151649.44490-1-yong.liu@intel.com> Subject: [dpdk-dev] [PATCH v2] examples/vhost: workaround qemu abort X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 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,