Thread (82 messages) 82 messages, 9 authors, 2021-10-29

Re: [dpdk-dev] [PATCH v4 2/4] mempool: add non-IO flag

From: Olivier Matz <hidden>
Date: 2021-10-15 09:43:26

On Fri, Oct 15, 2021 at 12:33:31PM +0300, Andrew Rybchenko wrote:
On 10/15/21 12:18 PM, Dmitry Kozlyuk wrote:
quoted
quoted
-----Original Message-----
From: Andrew Rybchenko <redacted>
[...]
quoted
diff --git a/lib/mempool/rte_mempool.c b/lib/mempool/rte_mempool.c
index 51c0ba2931..2204f140b3 100644
--- a/lib/mempool/rte_mempool.c
+++ b/lib/mempool/rte_mempool.c
@@ -371,6 +371,8 @@ rte_mempool_populate_iova(struct rte_mempool *mp,
char *vaddr,

      STAILQ_INSERT_TAIL(&mp->mem_list, memhdr, next);
      mp->nb_mem_chunks++;
+     if (iova == RTE_BAD_IOVA)
+             mp->flags |= MEMPOOL_F_NON_IO;
As I understand rte_mempool_populate_iova() may be called few times for
one mempool. The flag must be set if all invocations are done with
RTE_BAD_IOVA. So, it should be set by default and just removed when iova
!= RTE_BAD_IOVA happens.
I don't agree at all. If any object of the pool is unsuitable for IO,
the pool cannot be considered suitable for IO. So if there's a single
invocation with RTE_BAD_IOVA, the flag must be set forever.
If so, some objects may be used for IO, some cannot be used.
What should happen if an application allocates an object
which is suitable for IO and try to use it this way?
If the application can predict if the allocated object is usable for IO
before allocating it, I would be surprised to have it used for IO. I agree
with Dmitry here.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help