From 6933433fea7c7f590eabd95865e4fbb05105a710 Mon Sep 17 00:00:00 2001 From: Deepak Khandelwal Date: Thu, 21 Apr 2022 14:41:21 +0530 Subject: [PATCH] mem: skip attaching external memory in secondary process [ upstream commit 90bf3f89ed33f78e9f41818caf123e13e508dee7 ] Currently, EAL init in secondary processes will attach all fbarrays in the memconfig to have access to the primary process's page tables. However, fbarrays corresponding to external memory segments should not be attached at initialization, because this will happen as part of `rte_extmem_attach` [1] or `rte_malloc_heap_memory_attach` [2] calls. 1: https://doc.dpdk.org/api/rte__memory_8h.html#a2796da68de6825f8edf53759f8e4d230 2: https://doc.dpdk.org/api/rte__malloc_8h.html#af6360dea35bdf162feeb2b62cf149fd3 Fixes: ff3619d6244b ("malloc: allow attaching to external memory chunks") Suggested-by: Anatoly Burakov Signed-off-by: Deepak Khandelwal Acked-by: Anatoly Burakov --- lib/librte_eal/freebsd/eal/eal_memory.c | 4 ++-- lib/librte_eal/linux/eal/eal_memory.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/librte_eal/freebsd/eal/eal_memory.c b/lib/librte_eal/freebsd/eal/eal_memory.c index fb1549fbe6..1cc36dff60 100644 --- a/lib/librte_eal/freebsd/eal/eal_memory.c +++ b/lib/librte_eal/freebsd/eal/eal_memory.c @@ -508,8 +508,8 @@ memseg_secondary_init(void) msl = &mcfg->memsegs[msl_idx]; - /* skip empty memseg lists */ - if (msl->memseg_arr.len == 0) + /* skip empty and external memseg lists */ + if (msl->memseg_arr.len == 0 || msl->external) continue; if (rte_fbarray_attach(&msl->memseg_arr)) { diff --git a/lib/librte_eal/linux/eal/eal_memory.c b/lib/librte_eal/linux/eal/eal_memory.c index c93d9bb2b8..e7ab3aaf17 100644 --- a/lib/librte_eal/linux/eal/eal_memory.c +++ b/lib/librte_eal/linux/eal/eal_memory.c @@ -2423,8 +2423,8 @@ memseg_secondary_init(void) msl = &mcfg->memsegs[msl_idx]; - /* skip empty memseg lists */ - if (msl->memseg_arr.len == 0) + /* skip empty and external memseg lists */ + if (msl->memseg_arr.len == 0 || msl->external) continue; if (rte_fbarray_attach(&msl->memseg_arr)) {