From d1668c9762ad5f2e9e6ad8436e6a23bac64473c9 Mon Sep 17 00:00:00 2001 From: Sergio Gonzalez Monroy Date: Fri, 7 Aug 2015 16:27:32 +0100 Subject: [PATCH] mem: fix ivshmem in malloc heap After the changes introduced by Dynamic Memzones, all the memsegs were added to the malloc heap during init. Those changes did not account for IVSHMEM memsegs which should not be added to the malloc heap as part of available memory. Fixes: fafcc11985a2 ("mem: rework memzone to be allocated by malloc") Signed-off-by: Sergio Gonzalez Monroy --- lib/librte_eal/common/malloc_heap.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/common/malloc_heap.c b/lib/librte_eal/common/malloc_heap.c index 21d8914405..d170d0376d 100644 --- a/lib/librte_eal/common/malloc_heap.c +++ b/lib/librte_eal/common/malloc_heap.c @@ -220,8 +220,17 @@ rte_eal_malloc_heap_init(void) for (ms = &mcfg->memseg[0], ms_cnt = 0; (ms_cnt < RTE_MAX_MEMSEG) && (ms->len > 0); - ms_cnt++, ms++) + ms_cnt++, ms++) { +#ifdef RTE_LIBRTE_IVSHMEM + /* + * if segment has ioremap address set, it's an IVSHMEM segment and + * it is not memory to allocate from. + */ + if (ms->ioremap_addr != 0) + continue; +#endif malloc_heap_add_memseg(&mcfg->malloc_heaps[ms->socket_id], ms); + } return 0; } -- 2.20.1