[dpdk-dev] [PATCH v13 10/12] build: disable libnuma in cross builds
Juraj Linkeš
juraj.linkes at pantheon.tech
Fri Nov 20 13:08:19 CET 2020
Some Arm SoCs are not NUMA systems. Add the capability to disable NUMA
for cross build and disable NUMA in Arm cross files.
Signed-off-by: Juraj Linkeš <juraj.linkes at pantheon.tech>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli at arm.com>
---
config/arm/arm64_armada_linux_gcc | 1 +
config/arm/arm64_bluefield_linux_gcc | 1 +
config/arm/arm64_dpaa_linux_gcc | 1 +
config/arm/arm64_graviton2_linux_gcc | 1 +
config/arm/arm64_n1sdp_linux_gcc | 1 +
config/arm/arm64_octeontx2_linux_gcc | 1 +
config/arm/arm64_stingray_linux_gcc | 1 +
config/arm/meson.build | 2 --
config/meson.build | 19 +++++++++++++------
.../linux_gsg/cross_build_dpdk_for_arm64.rst | 4 ++++
10 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/config/arm/arm64_armada_linux_gcc b/config/arm/arm64_armada_linux_gcc
index e365f61d0..487cb2923 100644
--- a/config/arm/arm64_armada_linux_gcc
+++ b/config/arm/arm64_armada_linux_gcc
@@ -18,4 +18,5 @@ implementer_id = '0x56'
part_number = '0xd08'
max_lcores = 16
max_numa_nodes = 1
+numa = false
disabled_drivers = ['bus/dpaa', 'bus/fslmc', 'common/dpaax']
diff --git a/config/arm/arm64_bluefield_linux_gcc b/config/arm/arm64_bluefield_linux_gcc
index 4f56790c5..6bef87fbd 100644
--- a/config/arm/arm64_bluefield_linux_gcc
+++ b/config/arm/arm64_bluefield_linux_gcc
@@ -17,3 +17,4 @@ implementer_id = '0x41'
part_number = '0xd08'
max_lcores = 16
max_numa_nodes = 1
+numa = false
diff --git a/config/arm/arm64_dpaa_linux_gcc b/config/arm/arm64_dpaa_linux_gcc
index 8641fee63..37398c762 100644
--- a/config/arm/arm64_dpaa_linux_gcc
+++ b/config/arm/arm64_dpaa_linux_gcc
@@ -18,3 +18,4 @@ implementer_id = 'dpaa'
part_number = '0xd08'
max_lcores = 16
max_numa_nodes = 1
+numa = false
diff --git a/config/arm/arm64_graviton2_linux_gcc b/config/arm/arm64_graviton2_linux_gcc
index d0bfec87d..cfe239797 100644
--- a/config/arm/arm64_graviton2_linux_gcc
+++ b/config/arm/arm64_graviton2_linux_gcc
@@ -17,3 +17,4 @@ implementor_id = '0x41'
implementor_pn = '0xd0c'
max_lcores = 64
max_numa_nodes = 1
+numa = false
diff --git a/config/arm/arm64_n1sdp_linux_gcc b/config/arm/arm64_n1sdp_linux_gcc
index 138ae08c3..b00f2d1ef 100644
--- a/config/arm/arm64_n1sdp_linux_gcc
+++ b/config/arm/arm64_n1sdp_linux_gcc
@@ -17,3 +17,4 @@ implementer_id = '0x41'
part_number = '0xd0c'
max_lcores = 4
max_numa_nodes = 1
+numa = false
diff --git a/config/arm/arm64_octeontx2_linux_gcc b/config/arm/arm64_octeontx2_linux_gcc
index 26cf471ad..593769709 100644
--- a/config/arm/arm64_octeontx2_linux_gcc
+++ b/config/arm/arm64_octeontx2_linux_gcc
@@ -17,3 +17,4 @@ implementer_id = '0x43'
part_number = '0xb2'
max_lcores = 36
max_numa_nodes = 1
+numa = false
diff --git a/config/arm/arm64_stingray_linux_gcc b/config/arm/arm64_stingray_linux_gcc
index 4f56790c5..6bef87fbd 100644
--- a/config/arm/arm64_stingray_linux_gcc
+++ b/config/arm/arm64_stingray_linux_gcc
@@ -17,3 +17,4 @@ implementer_id = '0x41'
part_number = '0xd08'
max_lcores = 16
max_numa_nodes = 1
+numa = false
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 7db343b8a..f5e1ad20c 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -61,8 +61,6 @@ part_number_config_arm = {
['RTE_MACHINE', '"neoverse-n1"'],
['RTE_ARM_FEATURE_ATOMICS', true],
['RTE_USE_C11_MEM_MODEL', true],
- ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
- ['RTE_LIBRTE_VHOST_NUMA', false],
['RTE_MAX_MEM_MB', 1048576],
['RTE_CACHE_LINE_SIZE', 64],
['RTE_MAX_LCORE', 64],
diff --git a/config/meson.build b/config/meson.build
index 2bff6137f..9583be4ab 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -142,12 +142,19 @@ endif
# check for libraries used in multiple places in DPDK
has_libnuma = 0
-numa_dep = cc.find_library('numa', required: false)
-if numa_dep.found() and cc.has_header('numaif.h')
- dpdk_conf.set10('RTE_HAS_LIBNUMA', true)
- has_libnuma = 1
- add_project_link_arguments('-lnuma', language: 'c')
- dpdk_extra_ldflags += '-lnuma'
+find_libnuma = true
+if meson.is_cross_build() and not meson.get_cross_property('numa', true)
+ # don't look for libnuma if explicitly disabled in cross build
+ check_libnuma = false
+endif
+if find_libnuma
+ numa_dep = cc.find_library('numa', required: false)
+ if numa_dep.found() and cc.has_header('numaif.h')
+ dpdk_conf.set10('RTE_HAS_LIBNUMA', true)
+ has_libnuma = 1
+ add_project_link_arguments('-lnuma', language: 'c')
+ dpdk_extra_ldflags += '-lnuma'
+ endif
endif
has_libfdt = 0
diff --git a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
index 210ad4508..063661ebf 100644
--- a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
+++ b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
@@ -147,3 +147,7 @@ There are other options you may specify in a cross file to tailor the build::
disabled_drivers = ['bus/dpaa', 'crypto'] # add disabled drivers
# valid values are directories (optionally with their subdirs)
# in the drivers directory
+
+ numa = false # set to false to force building for a non-NUMA system
+ # if not set or set to true, the build system will build for a NUMA
+ # system only if libnuma is installed
--
2.20.1
More information about the dev
mailing list