On 10/12/21 3:04 AM, Dmitry Kozlyuk wrote: > Mempool is a generic allocator that is not necessarily used for device > IO operations and its memory for DMA. Add MEMPOOL_F_NON_IO flag to mark > such mempools. > Discussion: https://mails.dpdk.org/archives/dev/2021-August/216654.html > > Signed-off-by: Dmitry Kozlyuk <dkozl...@nvidia.com> > Acked-by: Matan Azrad <ma...@nvidia.com> > --- > doc/guides/rel_notes/release_21_11.rst | 3 +++ > lib/mempool/rte_mempool.h | 4 ++++ > 2 files changed, 7 insertions(+) > > diff --git a/doc/guides/rel_notes/release_21_11.rst > b/doc/guides/rel_notes/release_21_11.rst > index 5036641842..dbabdc9759 100644 > --- a/doc/guides/rel_notes/release_21_11.rst > +++ b/doc/guides/rel_notes/release_21_11.rst > @@ -208,6 +208,9 @@ API Changes > the crypto/security operation. This field will be used to communicate > events such as soft expiry with IPsec in lookaside mode. > > +* mempool: Added ``MEMPOOL_F_NON_IO`` flag to give a hint to DPDK components > + that objects from this pool will not be used for device IO (e.g. DMA). > + > > ABI Changes > ----------- > diff --git a/lib/mempool/rte_mempool.h b/lib/mempool/rte_mempool.h > index e2bf40aa09..b48d9f89c2 100644 > --- a/lib/mempool/rte_mempool.h > +++ b/lib/mempool/rte_mempool.h > @@ -262,6 +262,7 @@ struct rte_mempool { > #define MEMPOOL_F_SC_GET 0x0008 /**< Default get is > "single-consumer".*/ > #define MEMPOOL_F_POOL_CREATED 0x0010 /**< Internal: pool is created. */ > #define MEMPOOL_F_NO_IOVA_CONTIG 0x0020 /**< Don't need IOVA contiguous > objs. */ > +#define MEMPOOL_F_NON_IO 0x0040 /**< Not used for device IO (DMA). */
Doesn't it imply MEMPOOL_F_NO_IOVA_CONTIG? Shouldn't it reject mempool population with not RTE_BAD_IOVA iova parameter? I see that it is just a hint, but just trying to make full picture consistent. As the second thought: isn't iova==RTE_BAD_IOVA sufficient as a hint? > > /** > * @internal When debug is enabled, store some statistics. > @@ -991,6 +992,9 @@ typedef void (rte_mempool_ctor_t)(struct rte_mempool *, > void *); > * "single-consumer". Otherwise, it is "multi-consumers". > * - MEMPOOL_F_NO_IOVA_CONTIG: If set, allocated objects won't > * necessarily be contiguous in IO memory. > + * - MEMPOOL_F_NON_IO: If set, the mempool is considered to be > + * never used for device IO, i.e. for DMA operations. > + * It's a hint to other components and does not affect the mempool > behavior. > * @return > * The pointer to the new allocated mempool, on success. NULL on error > * with rte_errno set appropriately. Possible rte_errno values include: >