[v13,10/12] build: disable libnuma in cross builds

Message ID 1605874101-30893-11-git-send-email-juraj.linkes@pantheon.tech (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series Arm build options rework |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Juraj Linkeš Nov. 20, 2020, 12:08 p.m. UTC
  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@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(-)
  

Comments

Andrew Boyer Jan. 11, 2021, 8:22 p.m. UTC | #1
> On Nov 20, 2020, at 7:08 AM, Juraj Linkeš <juraj.linkes@pantheon.tech> wrote:
> 
> 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@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/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

Looks like ‘check_libnuma’ should be ‘find_libnuma’. There are no other references to ‘check_libnuma’.

-Andrew

> +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
> 
> ...
  
Juraj Linkeš Jan. 12, 2021, 6:54 a.m. UTC | #2
> -----Original Message-----
> From: Andrew Boyer <aboyer@pensando.io>
> Sent: Monday, January 11, 2021 9:23 PM
> To: Juraj Linkeš <juraj.linkes@pantheon.tech>
> Cc: Bruce Richardson <bruce.richardson@intel.com>; Ruifeng Wang
> <Ruifeng.Wang@arm.com>; Honnappa.Nagarahalli@arm.com;
> Phil.Yang@arm.com; vcchunga@amazon.com; Dharmik.Thakkar@arm.com;
> jerinjacobk@gmail.com; hemant.agrawal@nxp.com;
> ajit.khaparde@broadcom.com; ferruh.yigit@intel.com; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v13 10/12] build: disable libnuma in cross builds
> 
> 
> 
> > On Nov 20, 2020, at 7:08 AM, Juraj Linkeš <juraj.linkes@pantheon.tech>
> wrote:
> >
> > 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@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/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
> 
> Looks like ‘check_libnuma’ should be ‘find_libnuma’. There are no other
> references to ‘check_libnuma’.
> 

I thought I fixed this already, but it is in v14 as well, good catch.

> -Andrew
> 
> > +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
> >
> > ...
>
  

Patch

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