DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] ivshmem: add all memzones of mempool to metada
@ 2016-06-01 13:18 Ferruh Yigit
  2016-06-01 15:07 ` Burakov, Anatoly
  2016-06-02  7:04 ` Olivier MATZ
  0 siblings, 2 replies; 7+ messages in thread
From: Ferruh Yigit @ 2016-06-01 13:18 UTC (permalink / raw)
  To: dev; +Cc: Anatoly Burakov, Olivier Matz, Ferruh Yigit

Mempool consist of multiple memzones, at least from two of them.
ivshmem assumes mempool and elements are all in same memzone.

Updating code to add all memzones when a mempool added.

Fixes: d1d914ebbc25 ("mempool: allocate in several memory chunks by
default")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_ivshmem/rte_ivshmem.c | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/lib/librte_ivshmem/rte_ivshmem.c b/lib/librte_ivshmem/rte_ivshmem.c
index c8b332c..5c83920 100644
--- a/lib/librte_ivshmem/rte_ivshmem.c
+++ b/lib/librte_ivshmem/rte_ivshmem.c
@@ -548,25 +548,39 @@ add_ring_to_metadata(const struct rte_ring * r,
 }
 
 static int
-add_mempool_to_metadata(const struct rte_mempool * mp,
-		struct ivshmem_config * config)
+add_mempool_memzone_to_metadata(const void *addr,
+		struct ivshmem_config *config)
 {
-	struct rte_memzone * mz;
-	int ret;
+	struct rte_memzone *mz;
 
-	mz = get_memzone_by_addr(mp);
-	ret = 0;
+	mz = get_memzone_by_addr(addr);
 
 	if (!mz) {
 		RTE_LOG(ERR, EAL, "Cannot find memzone for mempool!\n");
 		return -1;
 	}
 
-	/* mempool consists of memzone and ring */
-	ret = add_memzone_to_metadata(mz, config);
+	return add_memzone_to_metadata(mz, config);
+}
+
+static int
+add_mempool_to_metadata(const struct rte_mempool *mp,
+		struct ivshmem_config *config)
+{
+	struct rte_mempool_memhdr *memhdr;
+	int ret;
+
+	ret = add_mempool_memzone_to_metadata(mp, config);
 	if (ret < 0)
 		return -1;
 
+	STAILQ_FOREACH(memhdr, &mp->mem_list, next) {
+		ret = add_mempool_memzone_to_metadata(memhdr->addr, config);
+		if (ret < 0)
+			return -1;
+	}
+
+	/* mempool consists of memzone and ring */
 	return add_ring_to_metadata(mp->ring, config);
 }
 
-- 
2.5.5

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-06-07 10:08 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-01 13:18 [dpdk-dev] [PATCH] ivshmem: add all memzones of mempool to metada Ferruh Yigit
2016-06-01 15:07 ` Burakov, Anatoly
2016-06-02  7:04 ` Olivier MATZ
2016-06-03 11:05   ` Ferruh Yigit
2016-06-03 16:29     ` Ferruh Yigit
2016-06-03 16:38       ` [dpdk-dev] [PATCH v2] ivshmem: add all memzones of mempool to metadata Ferruh Yigit
2016-06-07 10:08         ` Thomas Monjalon

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).