All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Hu, Jiayu" <jiayu.hu@intel.com>
To: Maxime Coquelin <maxime.coquelin@redhat.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Cc: "Xia, Chenbo" <chenbo.xia@intel.com>,
	"Wang, Yinan" <yinan.wang@intel.com>
Subject: Re: [dpdk-dev] [PATCH 2/2] vhost: add thread unsafe async registration functions
Date: Tue, 6 Jul 2021 08:36:02 +0000	[thread overview]
Message-ID: <53ef07bdb99847359b150836bff36af2@intel.com> (raw)
In-Reply-To: <f181fb8b-fcb3-7aa5-1025-0c507f56dafd@redhat.com>



> -----Original Message-----
> From: Maxime Coquelin <maxime.coquelin@redhat.com>
> Sent: Monday, July 5, 2021 4:59 PM
> To: Hu, Jiayu <jiayu.hu@intel.com>; dev@dpdk.org
> Cc: Xia, Chenbo <chenbo.xia@intel.com>; Wang, Yinan
> <yinan.wang@intel.com>
> Subject: Re: [PATCH 2/2] vhost: add thread unsafe async registration
> functions
> On 5/28/21 10:11 AM, Jiayu Hu wrote:
> > This patch is to add thread unsafe version for async register and
> > unregister functions.
> >
> > Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
> > ---
> >  doc/guides/prog_guide/vhost_lib.rst |  12 +++
> >  lib/vhost/rte_vhost_async.h         |  42 ++++++++++
> >  lib/vhost/version.map               |   4 +
> >  lib/vhost/vhost.c                   | 161 +++++++++++++++++++++++++++---------
> >  4 files changed, 178 insertions(+), 41 deletions(-)
> >
> > diff --git a/lib/vhost/vhost.c b/lib/vhost/vhost.c index
> > c96f633..025e150 100644
> > --- a/lib/vhost/vhost.c
> > +++ b/lib/vhost/vhost.c
> > @@ -1609,46 +1609,20 @@ int rte_vhost_extern_callback_register(int vid,
> >  	return 0;
> >  }
> >
> > -int rte_vhost_async_channel_register(int vid, uint16_t queue_id,
> > -					uint32_t features,
> > -					struct rte_vhost_async_channel_ops
> *ops)
> > +static __rte_always_inline int
> > +async_channel_register(int vid, uint16_t queue_id,
> > +		struct rte_vhost_async_features f,
> > +		struct rte_vhost_async_channel_ops *ops)
> >  {
> > -	struct vhost_virtqueue *vq;
> >  	struct virtio_net *dev = get_device(vid);
> > -	struct rte_vhost_async_features f;
> > +	struct vhost_virtqueue *vq = dev->virtqueue[queue_id];
> >  	int node;
> >
> > -	if (dev == NULL || ops == NULL)
> > -		return -1;
> > -
> > -	f.intval = features;
> > -
> > -	if (queue_id >= VHOST_MAX_VRING)
> > -		return -1;
> > -
> > -	vq = dev->virtqueue[queue_id];
> > -
> > -	if (unlikely(vq == NULL || !dev->async_copy))
> > -		return -1;
> > -
> > -	if (unlikely(!f.async_inorder)) {
> > -		VHOST_LOG_CONFIG(ERR,
> > -			"async copy is not supported on non-inorder mode "
> > -			"(vid %d, qid: %d)\n", vid, queue_id);
> > -		return -1;
> > -	}
> > -
> > -	if (unlikely(ops->check_completed_copies == NULL ||
> > -		ops->transfer_data == NULL))
> > -		return -1;
> > -
> > -	rte_spinlock_lock(&vq->access_lock);
> > -
> >  	if (unlikely(vq->async_registered)) {
> >  		VHOST_LOG_CONFIG(ERR,
> >  			"async register failed: channel already registered "
> >  			"(vid %d, qid: %d)\n", vid, queue_id);
> > -		goto reg_out;
> > +		return -1;
> >  	}
> >
> >  #ifdef RTE_LIBRTE_VHOST_NUMA
> > @@ -1670,7 +1644,7 @@ int rte_vhost_async_channel_register(int vid,
> uint16_t queue_id,
> >  		VHOST_LOG_CONFIG(ERR,
> >  			"async register failed: cannot allocate memory for
> async_pkts_info "
> >  			"(vid %d, qid: %d)\n", vid, queue_id);
> > -		goto reg_out;
> > +		return -1;
> >  	}
> >
> >  	vq->it_pool = rte_malloc_socket(NULL, @@ -1681,7 +1655,7 @@ int
> > rte_vhost_async_channel_register(int vid, uint16_t queue_id,
> >  		VHOST_LOG_CONFIG(ERR,
> >  			"async register failed: cannot allocate memory for
> it_pool "
> >  			"(vid %d, qid: %d)\n", vid, queue_id);
> > -		goto reg_out;
> > +		return -1;
> >  	}
> >
> >  	vq->vec_pool = rte_malloc_socket(NULL, @@ -1692,7 +1666,7 @@
> int
> > rte_vhost_async_channel_register(int vid, uint16_t queue_id,
> >  		VHOST_LOG_CONFIG(ERR,
> >  			"async register failed: cannot allocate memory for
> vec_pool "
> >  			"(vid %d, qid: %d)\n", vid, queue_id);
> > -		goto reg_out;
> > +		return -1;
> >  	}
> >
> >  	if (vq_is_packed(dev)) {
> > @@ -1704,7 +1678,7 @@ int rte_vhost_async_channel_register(int vid,
> uint16_t queue_id,
> >  			VHOST_LOG_CONFIG(ERR,
> >  				"async register failed: cannot allocate
> memory for async buffers "
> >  				"(vid %d, qid: %d)\n", vid, queue_id);
> > -			goto reg_out;
> > +			return -1;
> >  		}
> >  	} else {
> >  		vq->async_descs_split = rte_malloc_socket(NULL, @@ -
> 1715,22
> > +1689,92 @@ int rte_vhost_async_channel_register(int vid, uint16_t
> queue_id,
> >  			VHOST_LOG_CONFIG(ERR,
> >  				"async register failed: cannot allocate
> memory for async descs "
> >  				"(vid %d, qid: %d)\n", vid, queue_id);
> > -			goto reg_out;
> > +			return -1;
> >  		}
> >  	}
> >
> >  	vq->async_ops.check_completed_copies = ops-
> >check_completed_copies;
> >  	vq->async_ops.transfer_data = ops->transfer_data;
> > -
> >  	vq->async_inorder = f.async_inorder;
> >  	vq->async_threshold = f.async_threshold;
> > -
> >  	vq->async_registered = true;
> >
> > -reg_out:
> > +	return 0;
> > +}
> > +
> > +int rte_vhost_async_channel_register(int vid, uint16_t queue_id,
> > +					uint32_t features,
> > +					struct rte_vhost_async_channel_ops
> *ops) {
> > +	struct vhost_virtqueue *vq;
> > +	struct virtio_net *dev = get_device(vid);
> > +	struct rte_vhost_async_features f;
> > +	int ret;
> > +
> > +	if (dev == NULL || ops == NULL)
> > +		return -1;
> > +
> > +	f.intval = features;
> 
> Not directly related to this patch set, but could you please rework struct
> rte_vhost_async_features? There is no point to pack the flags and threshold
> values.
> 
> Also, the prototype should just pass the struct directly, or add different fields
> for the threshold and the features.
> 

Will rework the structure in v2.

Thanks,
Jiayu

  reply	other threads:[~2021-07-06  8:36 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-28  8:11 [dpdk-dev] [PATCH 0/2] provide thread unsafe async registration functions Jiayu Hu
2021-05-28  8:11 ` [dpdk-dev] [PATCH 1/2] vhost: fix lock on device readiness notification Jiayu Hu
2021-07-02  7:36   ` Maxime Coquelin
2021-07-07 11:18   ` [dpdk-dev] [PATCH v2 0/3] provide thread unsafe async registration functions Jiayu Hu
2021-07-07 11:18     ` [dpdk-dev] [PATCH v2 1/3] vhost: fix lock on device readiness notification Jiayu Hu
2021-07-09  9:43       ` [dpdk-dev] [PATCH v3 0/3] provide thread unsafe async registration functions Jiayu Hu
2021-07-09  9:43         ` [dpdk-dev] [PATCH v3 1/3] vhost: fix lock on device readiness notification Jiayu Hu
2021-07-13  7:46           ` [dpdk-dev] [PATCH v4 0/3] provide thread unsafe async registration functions Jiayu Hu
2021-07-13  7:46             ` [dpdk-dev] [PATCH v4 1/3] vhost: fix lock on device readiness notification Jiayu Hu
2021-07-16 19:51               ` [dpdk-dev] [PATCH v5 0/3] provide thread unsafe async registration functions Jiayu Hu
2021-07-16 19:51                 ` [dpdk-dev] [PATCH v5 1/3] vhost: fix lock on device readiness notification Jiayu Hu
2021-07-19 15:00                   ` [dpdk-dev] [PATCH v6 0/3] provide thread unsafe async registration functions Jiayu Hu
2021-07-19 15:00                     ` [dpdk-dev] [PATCH v6 1/3] vhost: fix lock on device readiness notification Jiayu Hu
2021-07-19 15:00                     ` [dpdk-dev] [PATCH v6 2/3] vhost: rework async configuration structure Jiayu Hu
2021-07-20  7:18                       ` Maxime Coquelin
2021-07-20  7:45                         ` Hu, Jiayu
2021-07-19 15:00                     ` [dpdk-dev] [PATCH v6 3/3] vhost: add thread unsafe async registeration functions Jiayu Hu
2021-07-20  7:25                       ` Maxime Coquelin
2021-07-21  6:16                     ` [dpdk-dev] [PATCH v6 0/3] provide thread unsafe async registration functions Xia, Chenbo
2021-07-16 19:51                 ` [dpdk-dev] [PATCH v5 2/3] vhost: rework async configuration structure Jiayu Hu
2021-07-19  2:25                   ` Xia, Chenbo
2021-07-19  7:20                   ` Maxime Coquelin
2021-07-16 19:51                 ` [dpdk-dev] [PATCH v5 3/3] vhost: add thread unsafe async registeration functions Jiayu Hu
2021-07-19  2:27                   ` Xia, Chenbo
2021-07-13  7:46             ` [dpdk-dev] [PATCH v4 2/3] vhost: rework async configuration struct Jiayu Hu
2021-07-16  6:03               ` Xia, Chenbo
2021-07-16  6:18                 ` Hu, Jiayu
2021-07-16  6:27                   ` Xia, Chenbo
2021-07-16  6:34                     ` Hu, Jiayu
2021-07-13  7:46             ` [dpdk-dev] [PATCH v4 3/3] vhost: add thread unsafe async registeration functions Jiayu Hu
2021-07-16  6:54               ` Xia, Chenbo
2021-07-09  9:43         ` [dpdk-dev] [PATCH v3 2/3] vhost: rework async configuration struct Jiayu Hu
2021-07-09  9:43         ` [dpdk-dev] [PATCH v3 3/3] vhost: add thread unsafe async registeration functions Jiayu Hu
2021-07-07 11:18     ` [dpdk-dev] [PATCH v2 2/3] vhost: rework async feature struct Jiayu Hu
2021-07-07  6:39       ` Maxime Coquelin
2021-07-07 11:18     ` [dpdk-dev] [PATCH v2 3/3] vhost: add thread unsafe async registeration functions Jiayu Hu
2021-05-28  8:11 ` [dpdk-dev] [PATCH 2/2] vhost: add thread unsafe async registration functions Jiayu Hu
2021-07-02  7:40   ` Maxime Coquelin
2021-07-05  1:35     ` Hu, Jiayu
2021-07-05  8:58   ` Maxime Coquelin
2021-07-06  8:36     ` Hu, Jiayu [this message]
2021-06-04  7:18 ` [dpdk-dev] [PATCH 0/2] provide " Maxime Coquelin
2021-06-04  7:24 ` Maxime Coquelin
2021-06-07  8:07   ` Hu, Jiayu
2021-06-07 13:20     ` Maxime Coquelin
2021-06-08  6:36       ` Hu, Jiayu
2021-06-29  5:36       ` Hu, Jiayu
2021-07-01 15:42         ` Maxime Coquelin
2021-07-02  0:53           ` Hu, Jiayu

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=53ef07bdb99847359b150836bff36af2@intel.com \
    --to=jiayu.hu@intel.com \
    --cc=chenbo.xia@intel.com \
    --cc=dev@dpdk.org \
    --cc=maxime.coquelin@redhat.com \
    --cc=yinan.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.