[v9,12/14] build: disable libnuma in cross builds
Checks
Commit Message
Some Arm SoCs are not NUMA systems. Add the capability to disable NUMA
for cross build and disabled NUMA in Arm cross files.
Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
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(-)
Comments
<snip>
>
> Some Arm SoCs are not NUMA systems. Add the capability to disable NUMA
> for cross build and disabled NUMA in Arm cross files.
>
> Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@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 7383f42e2..f5403f0a6 100644
> --- a/config/arm/arm64_armada_linux_gcc
> +++ b/config/arm/arm64_armada_linux_gcc
> @@ -17,4 +17,5 @@ endian = 'little'
> implementer_id = '0x56'
> 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 00101962b..3458b9d7b 100644
> --- a/config/arm/arm64_dpaa_linux_gcc
> +++ b/config/arm/arm64_dpaa_linux_gcc
> @@ -17,3 +17,4 @@ endian = 'little'
> implementer_id = 'dpaa'
> 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
> 7233db120..a2584b1fb 100644
> --- a/config/arm/meson.build
> +++ b/config/arm/meson.build
> @@ -62,8 +62,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
> 208d1ea01..2ddde22b7 100644
> --- a/config/meson.build
> +++ b/config/meson.build
> @@ -141,12 +141,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
@@ -17,4 +17,5 @@ endian = 'little'
implementer_id = '0x56'
max_lcores = 16
max_numa_nodes = 1
+numa = false
disabled_drivers = ['bus/dpaa', 'bus/fslmc', 'common/dpaax']
@@ -17,3 +17,4 @@ implementer_id = '0x41'
part_number = '0xd08'
max_lcores = 16
max_numa_nodes = 1
+numa = false
@@ -17,3 +17,4 @@ endian = 'little'
implementer_id = 'dpaa'
max_lcores = 16
max_numa_nodes = 1
+numa = false
@@ -17,3 +17,4 @@ implementor_id = '0x41'
implementor_pn = '0xd0c'
max_lcores = 64
max_numa_nodes = 1
+numa = false
@@ -17,3 +17,4 @@ implementer_id = '0x41'
part_number = '0xd0c'
max_lcores = 4
max_numa_nodes = 1
+numa = false
@@ -17,3 +17,4 @@ implementer_id = '0x43'
part_number = '0xb2'
max_lcores = 36
max_numa_nodes = 1
+numa = false
@@ -17,3 +17,4 @@ implementer_id = '0x41'
part_number = '0xd08'
max_lcores = 16
max_numa_nodes = 1
+numa = false
@@ -62,8 +62,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],
@@ -141,12 +141,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
@@ -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