]> git.droids-corp.org - dpdk.git/commitdiff
mem: fix ivshmem in malloc heap
authorSergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Fri, 7 Aug 2015 15:27:32 +0000 (16:27 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 9 Aug 2015 17:35:50 +0000 (19:35 +0200)
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 <sergio.gonzalez.monroy@intel.com>
lib/librte_eal/common/malloc_heap.c

index 21d8914405f19cc837b160a2fe988149c51cab82..d170d0376d97bcd60b0e8fb2b3b9f755ec8306df 100644 (file)
@@ -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;
 }