mem: skip attaching external memory in secondary process
authorDeepak Khandelwal <deepak.khandelwal@intel.com>
Thu, 21 Apr 2022 09:11:21 +0000 (14:41 +0530)
committerDavid Marchand <david.marchand@redhat.com>
Thu, 28 Apr 2022 11:44:13 +0000 (13:44 +0200)
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 <anatoly.burakov@intel.com>
Signed-off-by: Deepak Khandelwal <deepak.khandelwal@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/eal/freebsd/eal_memory.c
lib/eal/linux/eal_memory.c

index 78ac142..17ab10e 100644 (file)
@@ -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)) {
index ee1a9e6..c890c42 100644 (file)
@@ -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)) {