vhost: promote some APIs to stable
Checks
Commit Message
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.
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(-)
Comments
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.
>
> 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(-)
>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
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;
>
Hi Kevin,
> -----Original Message-----
> From: Kevin Traynor <ktraynor@redhat.com>
> Sent: Wednesday, September 8, 2021 8:01 PM
> To: Xia, Chenbo <chenbo.xia@intel.com>; dev@dpdk.org;
> maxime.coquelin@redhat.com
> Cc: Liu, Changpeng <changpeng.liu@intel.com>; mdr@ashroe.eu
> Subject: Re: [dpdk-dev] [PATCH] vhost: promote some APIs to stable
>
> 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/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.
Good point. I think it can be removed now. But we didn't send the deprecation
notice last release. I am not sure if it's ok to remove it this release.
@Ray & Maxime,
What do you think? I think since this API is unsafe and the safe version is
promoted, it makes sense to remove this.
Thanks,
Chenbo
>
> 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;
> >
On 09/09/2021 03:13, Xia, Chenbo wrote:
> Hi Kevin,
>
>> -----Original Message-----
>> From: Kevin Traynor <ktraynor@redhat.com>
>> Sent: Wednesday, September 8, 2021 8:01 PM
>> To: Xia, Chenbo <chenbo.xia@intel.com>; dev@dpdk.org;
>> maxime.coquelin@redhat.com
>> Cc: Liu, Changpeng <changpeng.liu@intel.com>; mdr@ashroe.eu
>> Subject: Re: [dpdk-dev] [PATCH] vhost: promote some APIs to stable
>>
>> 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/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.
>
> Good point. I think it can be removed now. But we didn't send the deprecation
> notice last release. I am not sure if it's ok to remove it this release.
>
> @Ray & Maxime,
>
> What do you think? I think since this API is unsafe and the safe version is
> promoted, it makes sense to remove this.
Strictly speaking there should have been depreciation notice.
However if the API has been marked depreciated since 2018 and _is_ unsafe.
You'd have to imagine that is sufficient to warrant removal at this stage.
Thomas, David and Ferruh - any inputs/comments or objections?
>
> Thanks,
> Chenbo
>
>>
>> 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;
>>>
>
On 9/9/21 1:19 PM, Kinsella, Ray wrote:
>
>
> On 09/09/2021 03:13, Xia, Chenbo wrote:
>> Hi Kevin,
>>
>>> -----Original Message-----
>>> From: Kevin Traynor <ktraynor@redhat.com>
>>> Sent: Wednesday, September 8, 2021 8:01 PM
>>> To: Xia, Chenbo <chenbo.xia@intel.com>; dev@dpdk.org;
>>> maxime.coquelin@redhat.com
>>> Cc: Liu, Changpeng <changpeng.liu@intel.com>; mdr@ashroe.eu
>>> Subject: Re: [dpdk-dev] [PATCH] vhost: promote some APIs to stable
>>>
>>> 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/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.
>>
>> Good point. I think it can be removed now. But we didn't send the deprecation
>> notice last release. I am not sure if it's ok to remove it this release.
>>
>> @Ray & Maxime,
>>
>> What do you think? I think since this API is unsafe and the safe version is
>> promoted, it makes sense to remove this.
>
> Strictly speaking there should have been depreciation notice.
> However if the API has been marked depreciated since 2018 and _is_ unsafe.
> You'd have to imagine that is sufficient to warrant removal at this stage.
>
> Thomas, David and Ferruh - any inputs/comments or objections?
I aagree it can be removed in this release. SPDK project was the only
user I'm aware of, and they migrated to the safe variant long time ago.
I propose to apply this patch first, then I will post a patch removing
this deprecated symbol if nobody disagree.
Thanks,
Maxime
>>
>> Thanks,
>> Chenbo
>>
>>>
>>> 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;
>>>>
>>
>
On 9/7/21 4:58 AM, 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.
>
> 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(-)
>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
On 9/7/21 4:58 AM, 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.
>
> 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(-)
>
Applied to dpdk-next-virtio/main.
Thanks,
Maxime
@@ -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);
@@ -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);
@@ -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;
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;