From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id C76F45B32 for ; Thu, 15 Mar 2018 10:45:19 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Mar 2018 02:45:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,310,1517904000"; d="scan'208";a="25460394" Received: from dpdk9.bj.intel.com ([172.16.182.183]) by orsmga008.jf.intel.com with ESMTP; 15 Mar 2018 02:45:16 -0700 From: zhiyong.yang@intel.com To: dev@dpdk.org Cc: maxime.coquelin@redhat.com, jianfeng.tan@intel.com, dong1.wang@intel.com, zhihong.wang@intel.com, thomas@monjalon.net Date: Thu, 15 Mar 2018 17:45:09 +0800 Message-Id: <20180315094514.50417-1-zhiyong.yang@intel.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180214145330.4679-2-zhiyong.yang@intel.com> References: <20180214145330.4679-2-zhiyong.yang@intel.com> Subject: [dpdk-dev] [PATCH v2 0/5] add support for virtio-user server mode 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: , X-List-Received-Date: Thu, 15 Mar 2018 09:45:20 -0000 In a container environment if the vhost-user backend restarts, there's no way for it to reconnect to virtio-user currently. To address this, support for server mode is added. In this mode the socket file is created by virtio-user, which the backend then connects to. This means that if the backend restarts, it can reconnect to virtio-user and continue communications. The series add support for the feature and target for 18.05 release. Virtio-user with server mode creates socket file and then starts to wait for the first connection from vhost user with client mode in blocking mode. Virtio-user with server mode supports many times' vhost reconnections with same configurations. Virtio-user supports only one connection at the same time in server/client mode. How to test? The following scripts are as reference. ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3 -n 4 -m 256,0 --no-pci \ --file-prefix=testpmd0 --vdev=net_virtio_user0,mac=00:11:22:33:44:10, \ path=/tmp/sock0,server=1,queues=1 -- -i --rxq=1 --txq=1 --no-numa ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3e000 -n 4 --socket-mem 256,0 \ --vdev 'net_vhost0,iface=/tmp/sock0,client=1,queues=1' -- -i --rxq=1 --txq=1 \ --nb-cores=1 --no-numa step1 : at the virio-user side, run "start" step2: at the vhost-user side run "start tx_first 40000" Changes in V2: 1. split two patch 1/5 and 2/5 from v1 patchset to fix some existing issues which is not strongly related to support for server mode according to Maxime's comments. 2. move fdset related functions to librte_eal from librte_vhost exposed as new APIs according to Thomas' comments. 3. release note is added in the patch 5/5. 4. squash data structure change patch into 4/5 according to Maxime's suggestion. Zhiyong Yang (5): net/virtio: fix add pointer checking net/virtio: add checking for cvq eal: expose fdset related APIs net/virtio-user: add support for server mode net/vhost: add memory checking doc/guides/rel_notes/release_18_05.rst | 7 + drivers/net/vhost/rte_eth_vhost.c | 9 + drivers/net/virtio/virtio_ethdev.c | 10 +- drivers/net/virtio/virtio_user/vhost_user.c | 77 +++++- drivers/net/virtio/virtio_user/virtio_user_dev.c | 44 ++-- drivers/net/virtio/virtio_user/virtio_user_dev.h | 8 + drivers/net/virtio/virtio_user_ethdev.c | 82 +++++- lib/librte_eal/common/include/rte_eal_interrupts.h | 56 +++++ lib/librte_eal/linuxapp/eal/eal_interrupts.c | 257 +++++++++++++++++++ lib/librte_eal/rte_eal_version.map | 10 + lib/librte_vhost/Makefile | 2 +- lib/librte_vhost/fd_man.c | 274 --------------------- lib/librte_vhost/fd_man.h | 40 --- lib/librte_vhost/socket.c | 22 +- 14 files changed, 548 insertions(+), 350 deletions(-) delete mode 100644 lib/librte_vhost/fd_man.c delete mode 100644 lib/librte_vhost/fd_man.h -- 2.14.3