DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Wodkowski, PawelX" <pawelx.wodkowski@intel.com>
To: "Wang, Zhihong" <zhihong.wang@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Cc: "Tan, Jianfeng" <jianfeng.tan@intel.com>,
	"Bie, Tiwei" <tiwei.bie@intel.com>,
	"maxime.coquelin@redhat.com" <maxime.coquelin@redhat.com>,
	"yliu@fridaylinux.org" <yliu@fridaylinux.org>,
	"Liang, Cunming" <cunming.liang@intel.com>,
	"Wang, Xiao W" <xiao.w.wang@intel.com>,
	"Daly, Dan" <dan.daly@intel.com>,
	"Wang, Zhihong" <zhihong.wang@intel.com>
Subject: Re: [dpdk-dev] [PATCH v3 0/5] vhost: support selective datapath
Date: Thu, 29 Mar 2018 12:15:11 +0000	[thread overview]
Message-ID: <F6F2A6264E145F47A18AB6DF8E87425D70118FD4@IRSMSX102.ger.corp.intel.com> (raw)
In-Reply-To: <20180227101342.18521-1-zhihong.wang@intel.com>

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Zhihong Wang
> Sent: Tuesday, February 27, 2018 11:14 AM
> To: dev@dpdk.org
> Cc: Tan, Jianfeng <jianfeng.tan@intel.com>; Bie, Tiwei <tiwei.bie@intel.com>;
> maxime.coquelin@redhat.com; yliu@fridaylinux.org; Liang, Cunming
> <cunming.liang@intel.com>; Wang, Xiao W <xiao.w.wang@intel.com>; Daly,
> Dan <dan.daly@intel.com>; Wang, Zhihong <zhihong.wang@intel.com>
> Subject: [dpdk-dev] [PATCH v3 0/5] vhost: support selective datapath
> 
> This patch set introduces support for selective datapath in DPDK vhost-user
> lib. vDPA stands for vhost Data Path Acceleration. The idea is to enable
> various types of virtio-compatible devices to do data transfer with virtio
> driver directly to enable acceleration.
> 
> The default datapath is the existing software implementation, more options
> will be available when new engines are added.
> 
> Design details
> ====
> 
> An engine is a group of virtio-compatible devices. The definition of engine
> is as follows:
> 
> struct rte_vdpa_eng_addr {
> 	union {
> 		uint8_t __dummy[64];
> 		struct rte_pci_addr pci_addr;
> 	};
> };
> 
> struct rte_vdpa_eng_info {
> 	char name[MAX_VDPA_NAME_LEN];
> 	struct rte_vdpa_eng_addr *addr;
> };
> 
> struct rte_vdpa_dev_ops {
> 	vdpa_dev_conf_t        dev_conf;
> 	vdpa_dev_close_t       dev_close;
> 	vdpa_vring_state_set_t vring_state_set;
> 	vdpa_feature_set_t     feature_set;
> 	vdpa_migration_done_t  migration_done;
> 	vdpa_get_vfio_group_fd_t  get_vfio_group_fd;
> 	vdpa_get_vfio_device_fd_t get_vfio_device_fd;
> 	vdpa_get_notify_area_t    get_notify_area;
> };
> 
> struct rte_vdpa_eng_ops {
> 	vdpa_eng_init_t   eng_init;
> 	vdpa_eng_uninit_t eng_uninit;
> 	vdpa_info_query_t info_query;
> };
> 
> struct rte_vdpa_eng_driver {
> 	const char *name;
> 	struct rte_vdpa_eng_ops eng_ops;
> 	struct rte_vdpa_dev_ops dev_ops;
> } __rte_cache_aligned;
> 
> struct rte_vdpa_engine {
> 	struct rte_vdpa_eng_info    eng_info;
> 	struct rte_vdpa_eng_driver *eng_drv;
> } __rte_cache_aligned;
> 
> A set of engine ops is defined in rte_vdpa_eng_ops for engine init, uninit,
> and attributes reporting. The attributes are defined as follows:
> 
> struct rte_vdpa_eng_attr {
> 	uint64_t features;
> 	uint64_t protocol_features;
> 	uint32_t queue_num;
> 	uint32_t dev_num;
> };
> 
> A set of device ops is defined in rte_vdpa_dev_ops for each virtio device
> in the engine to do device specific operations.
> 
> Changes to the current vhost-user lib are:
> ====
> 
>  1. Make vhost device capabilities configurable to adopt various engines.
>     Such capabilities include supported features, protocol features, queue
>     number. APIs are introduced to let app configure these capabilities.
> 
>  2. In addition to the existing vhost framework, a set of callbacks is
>     added for vhost to call the driver for device operations at the right
>     time:
> 
>      a. dev_conf: Called to configure the actual device when the virtio
>         device becomes ready.
> 
>      b. dev_close: Called to close the actual device when the virtio device
>         is stopped.
> 
>      c. vring_state_set: Called to change the state of the vring in the
>         actual device when vring state changes.
> 
>      d. feature_set: Called to set the negotiated features to device.
> 
>      e. migration_done: Called to allow the device to response to RARP
>         sending.
> 
>      f. get_vfio_group_fd: Called to get the VFIO group fd of the device.
> 
>      g. get_vfio_device_fd: Called to get the VFIO device fd of the device.
> 
>      h. get_notify_area: Called to get the notify area info of the queue.
> 
>  3. To make vhost aware of its own type, an engine id (eid) and a device
>     id (did) are added into the vhost data structure to identify the actual
>     device. APIs are introduced to let app configure them. When the default
>     software datapath is used, eid and did are set to -1. When alternative
>     datapath is used, eid and did are set by app to specify which device to
>     use. Each vhost-user socket can have only 1 connection in this case.

Why only one connection is possible? We are already working on multiple
simultaneous connections in SPDK. So this will be some kind of step backward.

> 
> Working process:
> ====
> 
>  1. Register driver during DPDK initialization.
> 
>  2. Register engine with driver name and address.
> 
>  3. Get engine attributes.
> 
>  4. For vhost device creation:
> 
>       a. Register vhost-user socket.
> 
>       b. Set eid and did of the vhost-user socket.
> 
>       c. Register vhost-user callbacks.
> 
>       d. Start to wait for connection.
> 
>  4. When connection comes and virtio device data structure is negotiated,
>     the device will be configured with all needed info.
> 

Can you please provide new or modify existing example to show how to use this new API?
It would be easier to find any possible gaps if we can see real use case.

Pawel

  parent reply	other threads:[~2018-03-29 12:15 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-02 23:28 [dpdk-dev] [PATCH 0/7] " Zhihong Wang
2018-02-02 23:28 ` [dpdk-dev] [PATCH 1/7] vhost: make capabilities configurable Zhihong Wang
2018-02-06 10:19   ` Maxime Coquelin
2018-02-08  3:03     ` Wang, Zhihong
2018-02-02 23:28 ` [dpdk-dev] [PATCH 2/7] vhost: export vhost feature definitions Zhihong Wang
2018-02-02 23:28 ` [dpdk-dev] [PATCH 3/7] vhost: support selective datapath Zhihong Wang
2018-02-02 23:28 ` [dpdk-dev] [PATCH 4/7] vhost: add apis for datapath configuration Zhihong Wang
2018-02-02 23:28 ` [dpdk-dev] [PATCH 5/7] vhost: adapt vhost lib for selective datapath Zhihong Wang
2018-02-02 23:28 ` [dpdk-dev] [PATCH 6/7] vhost: get callfd before device setup Zhihong Wang
2018-02-02 23:28 ` [dpdk-dev] [PATCH 7/7] vhost: export new apis Zhihong Wang
2018-03-05  9:20 ` [dpdk-dev] [PATCH v2 0/6] vhost: support selective datapath Zhihong Wang
2018-03-05  9:20   ` [dpdk-dev] [PATCH v2 1/6] vhost: export vhost feature definitions Zhihong Wang
2018-03-06  9:37     ` Tan, Jianfeng
2018-03-06 14:03       ` Maxime Coquelin
2018-03-15 10:58         ` Wang, Zhihong
2018-03-05  9:20   ` [dpdk-dev] [PATCH v2 2/6] vhost: support selective datapath Zhihong Wang
2018-03-05  9:20   ` [dpdk-dev] [PATCH v2 3/6] vhost: add apis for datapath configuration Zhihong Wang
2018-03-05  9:20   ` [dpdk-dev] [PATCH v2 4/6] vhost: adapt vhost lib for selective datapath Zhihong Wang
2018-03-05  9:20   ` [dpdk-dev] [PATCH v2 5/6] vhost: add apis for live migration Zhihong Wang
2018-03-05  9:20   ` [dpdk-dev] [PATCH v2 6/6] vhost: export new apis Zhihong Wang
2018-03-06  9:51     ` Tan, Jianfeng
2018-03-15 10:55       ` Wang, Zhihong
2018-03-19 10:12 ` [dpdk-dev] [PATCH v3 0/5] vhost: support selective datapath Zhihong Wang
2018-03-19 10:12   ` [dpdk-dev] [PATCH v3 1/5] vhost: export vhost feature definitions Zhihong Wang
2018-03-19 10:12   ` [dpdk-dev] [PATCH v3 2/5] vhost: support selective datapath Zhihong Wang
2018-03-21 21:05     ` Maxime Coquelin
2018-03-22  7:55       ` Wang, Zhihong
2018-03-22  8:31         ` Maxime Coquelin
2018-03-19 10:12   ` [dpdk-dev] [PATCH v3 3/5] vhost: add apis for datapath configuration Zhihong Wang
2018-03-21 21:08     ` Maxime Coquelin
2018-03-22  8:22       ` Wang, Zhihong
2018-03-22 14:18         ` Maxime Coquelin
2018-03-23 10:35           ` Wang, Zhihong
2018-03-19 10:12   ` [dpdk-dev] [PATCH v3 4/5] vhost: adapt vhost lib for selective datapath Zhihong Wang
2018-03-19 10:13   ` [dpdk-dev] [PATCH v3 5/5] vhost: add apis for live migration Zhihong Wang
2018-03-29 12:15   ` Wodkowski, PawelX [this message]
2018-03-30  9:35     ` [dpdk-dev] [PATCH v3 0/5] vhost: support selective datapath Wang, Zhihong
2018-03-30 10:00 ` [dpdk-dev] [PATCH v4 " Zhihong Wang
2018-03-30 10:00   ` [dpdk-dev] [PATCH v4 1/5] vhost: export vhost feature definitions Zhihong Wang
2018-03-31  5:56     ` Maxime Coquelin
2018-03-30 10:01   ` [dpdk-dev] [PATCH v4 2/5] vhost: support selective datapath Zhihong Wang
2018-03-31  6:10     ` Maxime Coquelin
2018-04-02  1:58       ` Wang, Zhihong
2018-03-31  7:38     ` Maxime Coquelin
2018-04-02  2:03       ` Wang, Zhihong
2018-03-30 10:01   ` [dpdk-dev] [PATCH v4 3/5] vhost: add apis for datapath configuration Zhihong Wang
2018-03-31  7:04     ` Maxime Coquelin
2018-04-02  2:01       ` Wang, Zhihong
2018-03-30 10:01   ` [dpdk-dev] [PATCH v4 4/5] vhost: adapt vhost lib for selective datapath Zhihong Wang
2018-03-31  7:35     ` Maxime Coquelin
2018-04-02 11:52       ` Wang, Zhihong
2018-03-30 10:01   ` [dpdk-dev] [PATCH v4 5/5] vhost: add apis for live migration Zhihong Wang
2018-03-31  7:39     ` Maxime Coquelin
2018-04-02 11:46 ` [dpdk-dev] [PATCH v5 0/5] vhost: support selective datapath Zhihong Wang
2018-04-02 11:46   ` [dpdk-dev] [PATCH v5 1/5] vhost: export vhost feature definitions Zhihong Wang
2018-04-02 11:46   ` [dpdk-dev] [PATCH v5 2/5] vhost: support selective datapath Zhihong Wang
2018-04-03  8:02     ` Maxime Coquelin
2018-04-15 17:39       ` Thomas Monjalon
2018-04-16  7:26         ` Maxime Coquelin
2018-04-03  8:19     ` Maxime Coquelin
2018-04-03 14:35       ` Wang, Zhihong
2018-04-02 11:46   ` [dpdk-dev] [PATCH v5 3/5] vhost: add apis for datapath configuration Zhihong Wang
2018-04-03  8:07     ` Maxime Coquelin
2018-04-02 11:46   ` [dpdk-dev] [PATCH v5 4/5] vhost: adapt vhost lib for selective datapath Zhihong Wang
2018-04-03  8:05     ` Maxime Coquelin
2018-04-02 11:46   ` [dpdk-dev] [PATCH v5 5/5] vhost: add apis for live migration Zhihong Wang
2018-04-03  8:27   ` [dpdk-dev] [PATCH v5 0/5] vhost: support selective datapath Maxime Coquelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=F6F2A6264E145F47A18AB6DF8E87425D70118FD4@IRSMSX102.ger.corp.intel.com \
    --to=pawelx.wodkowski@intel.com \
    --cc=cunming.liang@intel.com \
    --cc=dan.daly@intel.com \
    --cc=dev@dpdk.org \
    --cc=jianfeng.tan@intel.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=tiwei.bie@intel.com \
    --cc=xiao.w.wang@intel.com \
    --cc=yliu@fridaylinux.org \
    --cc=zhihong.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).