DPDK patches and discussions
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Chenbo Xia <chenbo.xia@intel.com>,
	dev@dpdk.org, maxime.coquelin@redhat.com
Cc: changpeng.liu@intel.com, mdr@ashroe.eu
Subject: Re: [dpdk-dev] [PATCH] vhost: promote some APIs to stable
Date: Wed, 8 Sep 2021 13:01:23 +0100	[thread overview]
Message-ID: <202f3e82-39ad-86d7-3f8a-ab1787c4795c@redhat.com> (raw)
In-Reply-To: <20210907025800.55680-1-chenbo.xia@intel.com>

On 07/09/2021 03:58, Chenbo Xia wrote:
> As reported by symbol bot, APIs listed in this patch have been
> experimental for more than two years. This patch promotes these
> 18 APIs to stable.
> 

Patch lgtm. One question about a possible follow on below.

Acked-by: Kevin Traynor <ktraynor@redhat.com>

> Signed-off-by: Chenbo Xia <chenbo.xia@intel.com>
> ---
>  lib/vhost/rte_vhost.h        | 13 -------------
>  lib/vhost/rte_vhost_crypto.h |  5 -----
>  lib/vhost/version.map        | 36 ++++++++++++++++++------------------
>  3 files changed, 18 insertions(+), 36 deletions(-)
> 
> diff --git a/lib/vhost/rte_vhost.h b/lib/vhost/rte_vhost.h
> index 8d875e9322..fd372d5259 100644
> --- a/lib/vhost/rte_vhost.h
> +++ b/lib/vhost/rte_vhost.h
> @@ -342,7 +342,6 @@ rte_vhost_gpa_to_vva(struct rte_vhost_memory *mem, uint64_t gpa)
>   * @return
>   *  the host virtual address on success, 0 on failure
>   */
> -__rte_experimental
>  static __rte_always_inline uint64_t
>  rte_vhost_va_from_guest_pa(struct rte_vhost_memory *mem,
>  						   uint64_t gpa, uint64_t *len)
> @@ -522,7 +521,6 @@ int rte_vhost_driver_get_features(const char *path, uint64_t *features);
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_driver_set_protocol_features(const char *path,
>  		uint64_t protocol_features);
> @@ -537,7 +535,6 @@ rte_vhost_driver_set_protocol_features(const char *path,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_driver_get_protocol_features(const char *path,
>  		uint64_t *protocol_features);
> @@ -552,7 +549,6 @@ rte_vhost_driver_get_protocol_features(const char *path,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_driver_get_queue_num(const char *path, uint32_t *queue_num);
>  
> @@ -768,7 +764,6 @@ int rte_vhost_get_vhost_vring(int vid, uint16_t vring_idx,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_get_vhost_ring_inflight(int vid, uint16_t vring_idx,
>  	struct rte_vhost_ring_inflight *vring);
> @@ -788,7 +783,6 @@ rte_vhost_get_vhost_ring_inflight(int vid, uint16_t vring_idx,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_set_inflight_desc_split(int vid, uint16_t vring_idx,
>  	uint16_t idx);
> @@ -811,7 +805,6 @@ rte_vhost_set_inflight_desc_split(int vid, uint16_t vring_idx,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_set_inflight_desc_packed(int vid, uint16_t vring_idx,
>  	uint16_t head, uint16_t last, uint16_t *inflight_entry);
> @@ -828,7 +821,6 @@ rte_vhost_set_inflight_desc_packed(int vid, uint16_t vring_idx,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_set_last_inflight_io_split(int vid,
>  	uint16_t vring_idx, uint16_t idx);
> @@ -848,7 +840,6 @@ rte_vhost_set_last_inflight_io_split(int vid,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_set_last_inflight_io_packed(int vid,
>  	uint16_t vring_idx, uint16_t head);
> @@ -867,7 +858,6 @@ rte_vhost_set_last_inflight_io_packed(int vid,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_clr_inflight_desc_split(int vid, uint16_t vring_idx,
>  	uint16_t last_used_idx, uint16_t idx);
> @@ -884,7 +874,6 @@ rte_vhost_clr_inflight_desc_split(int vid, uint16_t vring_idx,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_clr_inflight_desc_packed(int vid, uint16_t vring_idx,
>  	uint16_t head);
> @@ -965,7 +954,6 @@ rte_vhost_get_vring_base(int vid, uint16_t queue_id,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_get_vring_base_from_inflight(int vid,
>  	uint16_t queue_id, uint16_t *last_avail_idx, uint16_t *last_used_idx);
> @@ -1000,7 +988,6 @@ rte_vhost_set_vring_base(int vid, uint16_t queue_id,
>   * @return
>   *  0 on success, -1 on failure
>   */
> -__rte_experimental
>  int
>  rte_vhost_extern_callback_register(int vid,
>  		struct rte_vhost_user_extern_ops const * const ops, void *ctx);
> diff --git a/lib/vhost/rte_vhost_crypto.h b/lib/vhost/rte_vhost_crypto.h
> index 8531757285..f54d731139 100644
> --- a/lib/vhost/rte_vhost_crypto.h
> +++ b/lib/vhost/rte_vhost_crypto.h
> @@ -58,7 +58,6 @@ rte_vhost_crypto_driver_start(const char *path);
>   *  0 if the Vhost Crypto Instance is created successfully.
>   *  Negative integer if otherwise
>   */
> -__rte_experimental
>  int
>  rte_vhost_crypto_create(int vid, uint8_t cryptodev_id,
>  		struct rte_mempool *sess_pool,
> @@ -74,7 +73,6 @@ rte_vhost_crypto_create(int vid, uint8_t cryptodev_id,
>   *  0 if the Vhost Crypto Instance is created successfully.
>   *  Negative integer if otherwise.
>   */
> -__rte_experimental
>  int
>  rte_vhost_crypto_free(int vid);
>  
> @@ -89,7 +87,6 @@ rte_vhost_crypto_free(int vid);
>   *  0 if completed successfully.
>   *  Negative integer if otherwise.
>   */
> -__rte_experimental
>  int
>  rte_vhost_crypto_set_zero_copy(int vid, enum rte_vhost_crypto_zero_copy option);
>  
> @@ -110,7 +107,6 @@ rte_vhost_crypto_set_zero_copy(int vid, enum rte_vhost_crypto_zero_copy option);
>   * @return
>   *  The number of fetched and processed vhost crypto request operations.
>   */
> -__rte_experimental
>  uint16_t
>  rte_vhost_crypto_fetch_requests(int vid, uint32_t qid,
>  		struct rte_crypto_op **ops, uint16_t nb_ops);
> @@ -132,7 +128,6 @@ rte_vhost_crypto_fetch_requests(int vid, uint32_t qid,
>   * @return
>   *  The number of ops processed.
>   */
> -__rte_experimental
>  uint16_t
>  rte_vhost_crypto_finalize_requests(struct rte_crypto_op **ops,
>  		uint16_t nb_ops, int *callfds, uint16_t *nb_callfds);
> diff --git a/lib/vhost/version.map b/lib/vhost/version.map
> index c92a9d4962..8ebde3f694 100644
> --- a/lib/vhost/version.map
> +++ b/lib/vhost/version.map
> @@ -13,6 +13,13 @@ DPDK_22 {
>  	rte_vdpa_reset_stats;
>  	rte_vdpa_unregister_device;
>  	rte_vhost_avail_entries;
> +	rte_vhost_clr_inflight_desc_packed;
> +	rte_vhost_clr_inflight_desc_split;
> +	rte_vhost_crypto_create;
> +	rte_vhost_crypto_fetch_requests;
> +	rte_vhost_crypto_finalize_requests;
> +	rte_vhost_crypto_free;
> +	rte_vhost_crypto_set_zero_copy;
>  	rte_vhost_dequeue_burst;
>  	rte_vhost_driver_attach_vdpa_device;
>  	rte_vhost_driver_callback_register;
> @@ -20,13 +27,17 @@ DPDK_22 {
>  	rte_vhost_driver_disable_features;
>  	rte_vhost_driver_enable_features;
>  	rte_vhost_driver_get_features;
> +	rte_vhost_driver_get_protocol_features;
> +	rte_vhost_driver_get_queue_num;
>  	rte_vhost_driver_get_vdpa_device;
>  	rte_vhost_driver_register;
>  	rte_vhost_driver_set_features;
> +	rte_vhost_driver_set_protocol_features;
>  	rte_vhost_driver_start;
>  	rte_vhost_driver_unregister;
>  	rte_vhost_enable_guest_notification;
>  	rte_vhost_enqueue_burst;
> +	rte_vhost_extern_callback_register;
>  	rte_vhost_get_ifname;
>  	rte_vhost_get_log_base;
>  	rte_vhost_get_mem_table;
> @@ -35,15 +46,22 @@ DPDK_22 {
>  	rte_vhost_get_numa_node;
>  	rte_vhost_get_queue_num;
>  	rte_vhost_get_vdpa_device;
> +	rte_vhost_get_vhost_ring_inflight;
>  	rte_vhost_get_vhost_vring;
>  	rte_vhost_get_vring_base;
> +	rte_vhost_get_vring_base_from_inflight;
>  	rte_vhost_get_vring_num;

>  	rte_vhost_gpa_to_vva;

Can this ^^^ be also removed now that rte_vhost_va_from_guest_pa() is
promoted to non-experimental? It is marked as deprecated in API (see
below) but i don't see anything in the deprecation documentation.

commit 9553e6e408883b3677e208dc66049bcd7f758529
Author: Maxime Coquelin <maxime.coquelin@redhat.com>
Date:   Wed Mar 14 17:31:25 2018 +0100

    vhost: deprecate unsafe GPA translation API

    This patch marks rte_vhost_gpa_to_vva() as deprecated because
    it is unsafe. Application relying on this API should move
    to the new rte_vhost_va_from_guest_pa() API, and check
    returned length to avoid out-of-bound accesses.

    This issue has been assigned CVE-2018-1059.

    Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>


>  	rte_vhost_host_notifier_ctrl;
>  	rte_vhost_log_used_vring;
>  	rte_vhost_log_write;
>  	rte_vhost_rx_queue_count;
> +	rte_vhost_set_inflight_desc_packed;
> +	rte_vhost_set_inflight_desc_split;
> +	rte_vhost_set_last_inflight_io_packed;
> +	rte_vhost_set_last_inflight_io_split;
>  	rte_vhost_set_vring_base;
> +	rte_vhost_va_from_guest_pa;
>  	rte_vhost_vring_call;
>  
>  	local: *;
> @@ -52,25 +70,7 @@ DPDK_22 {
>  EXPERIMENTAL {
>  	global:
>  
> -	rte_vhost_driver_get_protocol_features;
> -	rte_vhost_driver_get_queue_num;
> -	rte_vhost_crypto_create;
>  	rte_vhost_crypto_driver_start;
> -	rte_vhost_crypto_free;
> -	rte_vhost_crypto_fetch_requests;
> -	rte_vhost_crypto_finalize_requests;
> -	rte_vhost_crypto_set_zero_copy;
> -	rte_vhost_va_from_guest_pa;
> -	rte_vhost_extern_callback_register;
> -	rte_vhost_driver_set_protocol_features;
> -	rte_vhost_set_inflight_desc_split;
> -	rte_vhost_set_inflight_desc_packed;
> -	rte_vhost_set_last_inflight_io_split;
> -	rte_vhost_set_last_inflight_io_packed;
> -	rte_vhost_clr_inflight_desc_split;
> -	rte_vhost_clr_inflight_desc_packed;
> -	rte_vhost_get_vhost_ring_inflight;
> -	rte_vhost_get_vring_base_from_inflight;
>  	rte_vhost_slave_config_change;
>  	rte_vhost_async_channel_register;
>  	rte_vhost_async_channel_unregister;
> 


  parent reply	other threads:[~2021-09-08 12:01 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-07  2:58 Chenbo Xia
2021-09-08  8:56 ` Kinsella, Ray
2021-09-08 12:01 ` Kevin Traynor [this message]
2021-09-09  2:13   ` Xia, Chenbo
2021-09-09 11:19     ` Kinsella, Ray
2021-09-13 16:02       ` Maxime Coquelin
2021-09-13 19:18 ` Maxime Coquelin
2021-09-14 11:30 ` 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=202f3e82-39ad-86d7-3f8a-ab1787c4795c@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=changpeng.liu@intel.com \
    --cc=chenbo.xia@intel.com \
    --cc=dev@dpdk.org \
    --cc=maxime.coquelin@redhat.com \
    --cc=mdr@ashroe.eu \
    /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).