From: Deepak Khandelwal Date: Thu, 21 Apr 2022 09:11:21 +0000 (+0530) Subject: mem: skip attaching external memory in secondary process X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=90bf3f89ed33f78e9f41818caf123e13e508dee7;p=dpdk.git mem: skip attaching external memory in secondary process 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") Cc: stable@dpdk.org Suggested-by: Anatoly Burakov Signed-off-by: Deepak Khandelwal Acked-by: Anatoly Burakov --- diff --git a/lib/eal/freebsd/eal_memory.c b/lib/eal/freebsd/eal_memory.c index 78ac142b82..17ab10e0ca 100644 --- a/lib/eal/freebsd/eal_memory.c +++ b/lib/eal/freebsd/eal_memory.c @@ -446,8 +446,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/eal/linux/eal_memory.c b/lib/eal/linux/eal_memory.c index ee1a9e6800..c890c42106 100644 --- a/lib/eal/linux/eal_memory.c +++ b/lib/eal/linux/eal_memory.c @@ -1874,8 +1874,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)) {