]> git.droids-corp.org - dpdk.git/commitdiff
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 78ac142b82cb5213f5b1046cb3d17a140492588a..17ab10e0ca1d4cb4b523e3ad0aff870e526af8dc 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 ee1a9e6800490191450d503d89ed42cb5f5a54ad..c890c42106a30125f7f4e08f18d766f421ec7b3e 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)) {