From: Maxime Coquelin Date: Tue, 2 Nov 2021 09:56:11 +0000 (+0100) Subject: vhost: mark vDPA driver API as internal X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=94c16e89d779de4240d82561f67c81f7f95248a4;p=dpdk.git vhost: mark vDPA driver API as internal This patch marks the vDPA driver APIs as internal and rename the corresponding header file to vdpa_driver.h. Signed-off-by: Maxime Coquelin Acked-by: Thomas Monjalon Reviewed-by: Chenbo Xia --- diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index a708ad7691..9c303a1da9 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -104,10 +104,6 @@ Deprecation Notices is deprecated as ambiguous with respect to the embedded switch. The use of these attributes will become invalid starting from DPDK 22.11. -* vhost: ``rte_vdpa_register_device``, ``rte_vdpa_unregister_device``, - ``rte_vhost_host_notifier_ctrl`` and ``rte_vdpa_relay_vring_used`` vDPA - driver interface will be marked as internal in DPDK v21.11. - * vhost: rename ``struct vhost_device_ops`` to ``struct rte_vhost_device_ops`` in DPDK v21.11. diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 5a0e56de38..814ecac3ed 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -464,6 +464,10 @@ API Changes should be provided, and offset for immediate source bitfield is assigned from destination one. +* vhost: ``rte_vdpa_register_device``, ``rte_vdpa_unregister_device``, + ``rte_vhost_host_notifier_ctrl`` and ``rte_vdpa_relay_vring_used`` vDPA + driver interface are marked as internal. + * cryptodev: The API rte_cryptodev_pmd_is_valid_dev is modified to rte_cryptodev_is_valid_dev as it can be used by the application as well as PMD to check whether the device is valid or not. diff --git a/drivers/vdpa/ifc/ifcvf_vdpa.c b/drivers/vdpa/ifc/ifcvf_vdpa.c index dd5251d382..3853c4cf7e 100644 --- a/drivers/vdpa/ifc/ifcvf_vdpa.c +++ b/drivers/vdpa/ifc/ifcvf_vdpa.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.h b/drivers/vdpa/mlx5/mlx5_vdpa.h index cf4f384fa4..a6c9404cb0 100644 --- a/drivers/vdpa/mlx5/mlx5_vdpa.h +++ b/drivers/vdpa/mlx5/mlx5_vdpa.h @@ -12,7 +12,7 @@ #pragma GCC diagnostic ignored "-Wpedantic" #endif #include -#include +#include #include #ifdef PEDANTIC #pragma GCC diagnostic error "-Wpedantic" diff --git a/lib/vhost/meson.build b/lib/vhost/meson.build index 2d8fe0239f..cdb37a4814 100644 --- a/lib/vhost/meson.build +++ b/lib/vhost/meson.build @@ -29,9 +29,11 @@ sources = files( ) headers = files( 'rte_vdpa.h', - 'rte_vdpa_dev.h', 'rte_vhost.h', 'rte_vhost_async.h', 'rte_vhost_crypto.h', ) +driver_sdk_headers = files( + 'vdpa_driver.h', +) deps += ['ethdev', 'cryptodev', 'hash', 'pci'] diff --git a/lib/vhost/rte_vdpa_dev.h b/lib/vhost/rte_vdpa_dev.h deleted file mode 100644 index b0f494815f..0000000000 --- a/lib/vhost/rte_vdpa_dev.h +++ /dev/null @@ -1,138 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2018 Intel Corporation - */ - -#ifndef _RTE_VDPA_H_DEV_ -#define _RTE_VDPA_H_DEV_ - -#include - -#include "rte_vhost.h" -#include "rte_vdpa.h" - -#define RTE_VHOST_QUEUE_ALL UINT16_MAX - -/** - * vdpa device operations - */ -struct rte_vdpa_dev_ops { - /** Get capabilities of this device (Mandatory) */ - int (*get_queue_num)(struct rte_vdpa_device *dev, uint32_t *queue_num); - - /** Get supported features of this device (Mandatory) */ - int (*get_features)(struct rte_vdpa_device *dev, uint64_t *features); - - /** Get supported protocol features of this device (Mandatory) */ - int (*get_protocol_features)(struct rte_vdpa_device *dev, - uint64_t *protocol_features); - - /** Driver configure the device (Mandatory) */ - int (*dev_conf)(int vid); - - /** Driver close the device (Mandatory) */ - int (*dev_close)(int vid); - - /** Enable/disable this vring (Mandatory) */ - int (*set_vring_state)(int vid, int vring, int state); - - /** Set features when changed (Mandatory) */ - int (*set_features)(int vid); - - /** Destination operations when migration done */ - int (*migration_done)(int vid); - - /** Get the vfio group fd */ - int (*get_vfio_group_fd)(int vid); - - /** Get the vfio device fd */ - int (*get_vfio_device_fd)(int vid); - - /** Get the notify area info of the queue */ - int (*get_notify_area)(int vid, int qid, - uint64_t *offset, uint64_t *size); - - /** Get statistics name */ - int (*get_stats_names)(struct rte_vdpa_device *dev, - struct rte_vdpa_stat_name *stats_names, - unsigned int size); - - /** Get statistics of the queue */ - int (*get_stats)(struct rte_vdpa_device *dev, int qid, - struct rte_vdpa_stat *stats, unsigned int n); - - /** Reset statistics of the queue */ - int (*reset_stats)(struct rte_vdpa_device *dev, int qid); - - /** Reserved for future extension */ - void *reserved[2]; -}; - -/** - * vdpa device structure includes device address and device operations. - */ -struct rte_vdpa_device { - RTE_TAILQ_ENTRY(rte_vdpa_device) next; - /** Generic device information */ - struct rte_device *device; - /** vdpa device operations */ - struct rte_vdpa_dev_ops *ops; -}; - -/** - * Register a vdpa device - * - * @param rte_dev - * the generic device pointer - * @param ops - * the vdpa device operations - * @return - * vDPA device pointer on success, NULL on failure - */ -struct rte_vdpa_device * -rte_vdpa_register_device(struct rte_device *rte_dev, - struct rte_vdpa_dev_ops *ops); - -/** - * Unregister a vdpa device - * - * @param dev - * vDPA device pointer - * @return - * device id on success, -1 on failure - */ -int -rte_vdpa_unregister_device(struct rte_vdpa_device *dev); - -/** - * Enable/Disable host notifier mapping for a vdpa port. - * - * @param vid - * vhost device id - * @param enable - * true for host notifier map, false for host notifier unmap - * @param qid - * vhost queue id, RTE_VHOST_QUEUE_ALL to configure all the device queues - * @return - * 0 on success, -1 on failure - */ -int -rte_vhost_host_notifier_ctrl(int vid, uint16_t qid, bool enable); - -/** - * Synchronize the used ring from mediated ring to guest, log dirty - * page for each writeable buffer, caller should handle the used - * ring logging before device stop. - * - * @param vid - * vhost device id - * @param qid - * vhost queue id - * @param vring_m - * mediated virtio ring pointer - * @return - * number of synced used entries on success, -1 on failure - */ -int -rte_vdpa_relay_vring_used(int vid, uint16_t qid, void *vring_m); - -#endif /* _RTE_VDPA_DEV_H_ */ diff --git a/lib/vhost/vdpa.c b/lib/vhost/vdpa.c index 6dd91859ac..09ad5d866e 100644 --- a/lib/vhost/vdpa.c +++ b/lib/vhost/vdpa.c @@ -17,7 +17,7 @@ #include #include "rte_vdpa.h" -#include "rte_vdpa_dev.h" +#include "vdpa_driver.h" #include "vhost.h" /** Double linked list of vDPA devices. */ diff --git a/lib/vhost/vdpa_driver.h b/lib/vhost/vdpa_driver.h new file mode 100644 index 0000000000..fc2d6acedd --- /dev/null +++ b/lib/vhost/vdpa_driver.h @@ -0,0 +1,144 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Intel Corporation + */ + +#ifndef _VDPA_DRIVER_H_ +#define _VDPA_DRIVER_H_ + +#include + +#include + +#include "rte_vhost.h" +#include "rte_vdpa.h" + +#define RTE_VHOST_QUEUE_ALL UINT16_MAX + +/** + * vdpa device operations + */ +struct rte_vdpa_dev_ops { + /** Get capabilities of this device (Mandatory) */ + int (*get_queue_num)(struct rte_vdpa_device *dev, uint32_t *queue_num); + + /** Get supported features of this device (Mandatory) */ + int (*get_features)(struct rte_vdpa_device *dev, uint64_t *features); + + /** Get supported protocol features of this device (Mandatory) */ + int (*get_protocol_features)(struct rte_vdpa_device *dev, + uint64_t *protocol_features); + + /** Driver configure the device (Mandatory) */ + int (*dev_conf)(int vid); + + /** Driver close the device (Mandatory) */ + int (*dev_close)(int vid); + + /** Enable/disable this vring (Mandatory) */ + int (*set_vring_state)(int vid, int vring, int state); + + /** Set features when changed (Mandatory) */ + int (*set_features)(int vid); + + /** Destination operations when migration done */ + int (*migration_done)(int vid); + + /** Get the vfio group fd */ + int (*get_vfio_group_fd)(int vid); + + /** Get the vfio device fd */ + int (*get_vfio_device_fd)(int vid); + + /** Get the notify area info of the queue */ + int (*get_notify_area)(int vid, int qid, + uint64_t *offset, uint64_t *size); + + /** Get statistics name */ + int (*get_stats_names)(struct rte_vdpa_device *dev, + struct rte_vdpa_stat_name *stats_names, + unsigned int size); + + /** Get statistics of the queue */ + int (*get_stats)(struct rte_vdpa_device *dev, int qid, + struct rte_vdpa_stat *stats, unsigned int n); + + /** Reset statistics of the queue */ + int (*reset_stats)(struct rte_vdpa_device *dev, int qid); + + /** Reserved for future extension */ + void *reserved[2]; +}; + +/** + * vdpa device structure includes device address and device operations. + */ +struct rte_vdpa_device { + RTE_TAILQ_ENTRY(rte_vdpa_device) next; + /** Generic device information */ + struct rte_device *device; + /** vdpa device operations */ + struct rte_vdpa_dev_ops *ops; +}; + +/** + * Register a vdpa device + * + * @param rte_dev + * the generic device pointer + * @param ops + * the vdpa device operations + * @return + * vDPA device pointer on success, NULL on failure + */ +__rte_internal +struct rte_vdpa_device * +rte_vdpa_register_device(struct rte_device *rte_dev, + struct rte_vdpa_dev_ops *ops); + +/** + * Unregister a vdpa device + * + * @param dev + * vDPA device pointer + * @return + * device id on success, -1 on failure + */ +__rte_internal +int +rte_vdpa_unregister_device(struct rte_vdpa_device *dev); + +/** + * Enable/Disable host notifier mapping for a vdpa port. + * + * @param vid + * vhost device id + * @param enable + * true for host notifier map, false for host notifier unmap + * @param qid + * vhost queue id, RTE_VHOST_QUEUE_ALL to configure all the device queues + * @return + * 0 on success, -1 on failure + */ +__rte_internal +int +rte_vhost_host_notifier_ctrl(int vid, uint16_t qid, bool enable); + +/** + * Synchronize the used ring from mediated ring to guest, log dirty + * page for each writeable buffer, caller should handle the used + * ring logging before device stop. + * + * @param vid + * vhost device id + * @param qid + * vhost queue id + * @param vring_m + * mediated virtio ring pointer + * @return + * number of synced used entries on success, -1 on failure + */ +__rte_internal +int +rte_vdpa_relay_vring_used(int vid, uint16_t qid, void *vring_m); + +#endif /* _VDPA_DRIVER_H_ */ diff --git a/lib/vhost/version.map b/lib/vhost/version.map index c8599ddb97..a7ef7f1976 100644 --- a/lib/vhost/version.map +++ b/lib/vhost/version.map @@ -8,10 +8,7 @@ DPDK_22 { rte_vdpa_get_rte_device; rte_vdpa_get_stats; rte_vdpa_get_stats_names; - rte_vdpa_register_device; - rte_vdpa_relay_vring_used; rte_vdpa_reset_stats; - rte_vdpa_unregister_device; rte_vhost_avail_entries; rte_vhost_clr_inflight_desc_packed; rte_vhost_clr_inflight_desc_split; @@ -52,7 +49,6 @@ DPDK_22 { 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; @@ -89,3 +85,12 @@ EXPERIMENTAL { # added in 21.11 rte_vhost_get_monitor_addr; }; + +INTERNAL { + global; + + rte_vdpa_register_device; + rte_vdpa_relay_vring_used; + rte_vdpa_unregister_device; + rte_vhost_host_notifier_ctrl; +}; diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h index 05ccc35f37..c07219296d 100644 --- a/lib/vhost/vhost.h +++ b/lib/vhost/vhost.h @@ -22,7 +22,7 @@ #include "rte_vhost.h" #include "rte_vdpa.h" -#include "rte_vdpa_dev.h" +#include "vdpa_driver.h" #include "rte_vhost_async.h"