DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
@ 2020-04-09 14:14 Juraj Linkeš
  2020-04-10  9:46 ` Bruce Richardson
  2020-04-13  6:23 ` Ruifeng Wang
  0 siblings, 2 replies; 5+ messages in thread
From: Juraj Linkeš @ 2020-04-09 14:14 UTC (permalink / raw)
  To: bruce.richardson; +Cc: dev, Juraj Linkeš

* Add arm-linux-gnueabihf cross-file
* Add generic and default arm 32 bit flags to arm meson.build
* Add support for disabling drivers using flags defined in Meson
  * Change checks from dpdk_conf.has() to dpdk.conf.get()
  * When processing which drivers to build, check whether the
    appropriate RTE flag isn't set to false

Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
 app/test-pmd/meson.build              |   4 +-
 app/test/meson.build                  |   2 +-
 config/arm/arm_armv7a_linux_gcc       |  17 ++++
 config/arm/meson.build                | 157 +++++++++++++++++++++-------------
 drivers/meson.build                   |  13 ++-
 drivers/net/kni/meson.build           |   2 +-
 examples/ethtool/meson.build          |   2 +-
 examples/ioat/meson.build             |   2 +-
 examples/kni/meson.build              |   2 +-
 examples/vm_power_manager/meson.build |   4 +-
 lib/librte_port/meson.build           |   2 +-
 lib/meson.build                       |   2 +-
 12 files changed, 133 insertions(+), 76 deletions(-)
 create mode 100644 config/arm/arm_armv7a_linux_gcc

diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
index 6006c60f9..eac092d94 100644
--- a/app/test-pmd/meson.build
+++ b/app/test-pmd/meson.build
@@ -31,10 +31,10 @@ endif
 if dpdk_conf.has('RTE_LIBRTE_BNXT_PMD')
 	deps += 'pmd_bnxt'
 endif
-if dpdk_conf.has('RTE_LIBRTE_I40E_PMD')
+if dpdk_conf.has('RTE_LIBRTE_I40E_PMD') and dpdk_conf.get('RTE_LIBRTE_I40E_PMD')
 	deps += 'pmd_i40e'
 endif
-if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD')
+if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD') and dpdk_conf.get('RTE_LIBRTE_IXGBE_PMD')
 	deps += 'pmd_ixgbe'
 endif
 if dpdk_conf.has('RTE_LIBRTE_SOFTNIC_PMD')
diff --git a/app/test/meson.build b/app/test/meson.build
index 351d29cb6..64d5d7bdb 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -348,7 +348,7 @@ endif
 if dpdk_conf.has('RTE_LIBRTE_POWER')
 	test_deps += 'power'
 endif
-if dpdk_conf.has('RTE_LIBRTE_KNI')
+if dpdk_conf.has('RTE_LIBRTE_KNI') and dpdk_conf.get('RTE_LIBRTE_KNI')
 	test_deps += 'kni'
 endif
 if dpdk_conf.has('RTE_LIBRTE_PDUMP')
diff --git a/config/arm/arm_armv7a_linux_gcc b/config/arm/arm_armv7a_linux_gcc
new file mode 100644
index 000000000..39566d2ea
--- /dev/null
+++ b/config/arm/arm_armv7a_linux_gcc
@@ -0,0 +1,17 @@
+[binaries]
+c = 'arm-linux-gnueabihf-gcc'
+cpp = 'arm-linux-gnueabihf-cpp'
+ar = 'arm-linux-gnueabihf-gcc-ar'
+strip = 'arm-linux-gnueabihf-strip'
+pkgconfig = 'arm-linux-gnueabihf-pkg-config'
+pcap-config = ''
+
+[host_machine]
+system = 'linux'
+cpu_family = 'arm'
+cpu = 'armv7-a'
+endian = 'little'
+
+[properties]
+implementor_id = 'generic_arm32'
+implementor_pn = 'default_arm32'
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 6e75e6d97..d359f2e14 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -34,6 +34,11 @@ flags_generic = [
 	['RTE_MAX_LCORE', 256],
 	['RTE_USE_C11_MEM_MODEL', true],
 	['RTE_CACHE_LINE_SIZE', 128]]
+flags_generic_arm32 = [
+	['RTE_MACHINE', '"armv7a"'],
+	['RTE_MAX_LCORE', 128],
+	['RTE_USE_C11_MEM_MODEL', false],
+	['RTE_CACHE_LINE_SIZE', 64]]
 flags_arm = [
 	['RTE_MACHINE', '"armv8a"'],
 	['RTE_MAX_LCORE', 16],
@@ -63,6 +68,32 @@ flags_armada = [
 	['RTE_MAX_LCORE', 16]]
 
 flags_default_extra = []
+flags_default_arm32_extra = [
+        ['RTE_ARCH_ARM_NEON_MEMCPY', false],
+        ['RTE_FORCE_INTRINSICS', true],
+        ['RTE_ARCH_STRICT_ALIGN', true],
+        ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
+        ['RTE_LIBRTE_VHOST_NUMA', false],
+        ['RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT', false],
+        ['RTE_LIBRTE_KNI', false],
+        ['RTE_LIBRTE_ARK_PMD', false],
+        ['RTE_LIBRTE_EM_PMD', false],
+        ['RTE_LIBRTE_IGB_PMD', false],
+        ['RTE_LIBRTE_CXGBE_PMD', false],
+        ['RTE_LIBRTE_E1000_PMD', false],
+        ['RTE_LIBRTE_ENIC_PMD', false],
+        ['RTE_LIBRTE_FM10K_PMD', false],
+        ['RTE_LIBRTE_I40E_PMD', false],
+        ['RTE_LIBRTE_IXGBE_PMD', false],
+        ['RTE_LIBRTE_VMXNET3_PMD', false],
+        ['RTE_LIBRTE_QEDE_PMD', false],
+        ['RTE_LIBRTE_SFC_EFX_PMD', false],
+        ['RTE_LIBRTE_AVP_PMD', false],
+        ['RTE_LIBRTE_NFP_PMD', false],
+        ['RTE_LIBRTE_HINIC_PMD', false],
+        ['RTE_LIBRTE_HNS3_PMD', false],
+        ['RTE_LIBRTE_PMD_IOAT_RAWDEV', false],
+        ['RTE_LIBRTE_IONIC_PMD', false]]
 flags_n1sdp_extra = [
 	['RTE_MACHINE', '"n1sdp"'],
 	['RTE_MAX_NUMA_NODES', 1],
@@ -99,6 +130,9 @@ machine_args_generic = [
 	['0xd0b', ['-mcpu=cortex-a76']],
 	['0xd0c', ['-march=armv8.2-a+crc+crypto', '-mcpu=neoverse-n1'], flags_n1sdp_extra]]
 
+machine_args_generic_arm32 = [
+        ['default_arm32', ['-march=armv7-a', '-mtune=cortex-a9', '-mfpu=neon'], flags_default_arm32_extra]]
+
 machine_args_cavium = [
 	['default', ['-march=armv8-a+crc+crypto','-mcpu=thunderx']],
 	['native', ['-march=native']],
@@ -114,6 +148,7 @@ machine_args_emag = [
 
 ## Arm implementer ID (ARM DDI 0487C.a, Section G7.2.106, Page G7-5321)
 impl_generic = ['Generic armv8', flags_generic, machine_args_generic]
+impl_generic_arm32 = ['Generic armv7', flags_generic_arm32, machine_args_generic_arm32]
 impl_0x41 = ['Arm', flags_arm, machine_args_generic]
 impl_0x42 = ['Broadcom', flags_generic, machine_args_generic]
 impl_0x43 = ['Cavium', flags_cavium, machine_args_cavium]
@@ -136,74 +171,74 @@ if not dpdk_conf.get('RTE_ARCH_64')
 	dpdk_conf.set('RTE_ARCH_ARMv7', 1)
 	# the minimum architecture supported, armv7-a, needs the following,
 	# mk/machine/armv7a/rte.vars.mk sets it too
-	machine_args += '-mfpu=neon'
 else
 	dpdk_conf.set('RTE_CACHE_LINE_SIZE', 128)
 	dpdk_conf.set('RTE_ARCH_ARM64', 1)
+endif
 
-	machine = []
-	cmd_generic = ['generic', '', '', 'default', '']
-	cmd_output = cmd_generic # Set generic by default
-	machine_args = [] # Clear previous machine args
-	if arm_force_default_march and not meson.is_cross_build()
+machine = []
+machine_args = [] # Clear previous machine args
+cmd_generic = ['generic', '', '', 'default', '']
+cmd_output = cmd_generic # Set generic by default
+if arm_force_default_march and not meson.is_cross_build()
+	machine = impl_generic
+	impl_pn = 'default'
+elif not meson.is_cross_build()
+	# The script returns ['Implementer', 'Variant', 'Architecture',
+	# 'Primary Part number', 'Revision']
+	detect_vendor = find_program(join_paths(
+			meson.current_source_dir(), 'armv8_machine.py'))
+	cmd = run_command(detect_vendor.path())
+	if cmd.returncode() == 0
+		cmd_output = cmd.stdout().to_lower().strip().split(' ')
+	endif
+	# Set to generic if variable is not found
+	machine = get_variable('impl_' + cmd_output[0], ['generic'])
+	if machine[0] == 'generic'
 		machine = impl_generic
-		impl_pn = 'default'
-	elif not meson.is_cross_build()
-		# The script returns ['Implementer', 'Variant', 'Architecture',
-		# 'Primary Part number', 'Revision']
-		detect_vendor = find_program(join_paths(
-				meson.current_source_dir(), 'armv8_machine.py'))
-		cmd = run_command(detect_vendor.path())
-		if cmd.returncode() == 0
-			cmd_output = cmd.stdout().to_lower().strip().split(' ')
-		endif
-		# Set to generic if variable is not found
-		machine = get_variable('impl_' + cmd_output[0], ['generic'])
-		if machine[0] == 'generic'
-			machine = impl_generic
-			cmd_output = cmd_generic
-		endif
-		impl_pn = cmd_output[3]
-		if arm_force_native_march == true
-			impl_pn = 'native'
-		endif
-	else
-		impl_id = meson.get_cross_property('implementor_id', 'generic')
-		impl_pn = meson.get_cross_property('implementor_pn', 'default')
-		machine = get_variable('impl_' + impl_id)
+		cmd_output = cmd_generic
 	endif
-
-	# Apply Common Defaults. These settings may be overwritten by machine
-	# settings later.
-	foreach flag: flags_common_default
-		if flag.length() > 0
-			dpdk_conf.set(flag[0], flag[1])
-		endif
-	endforeach
-
-	message('Implementer : ' + machine[0])
-	foreach flag: machine[1]
-		if flag.length() > 0
-			dpdk_conf.set(flag[0], flag[1])
-		endif
-	endforeach
-
-	foreach marg: machine[2]
-		if marg[0] == impl_pn
-			foreach flag: marg[1]
-				if cc.has_argument(flag)
-					machine_args += flag
-				endif
-			endforeach
-			# Apply any extra machine specific flags.
-			foreach flag: marg.get(2, flags_default_extra)
-				if flag.length() > 0
-					dpdk_conf.set(flag[0], flag[1])
-				endif
-			endforeach
-		endif
-	endforeach
+	impl_pn = cmd_output[3]
+	if arm_force_native_march == true
+		impl_pn = 'native'
+	endif
+else
+	impl_id = meson.get_cross_property('implementor_id', 'generic')
+	impl_pn = meson.get_cross_property('implementor_pn', 'default')
+	machine = get_variable('impl_' + impl_id)
 endif
+
+# Apply Common Defaults. These settings may be overwritten by machine
+# settings later.
+foreach flag: flags_common_default
+	if flag.length() > 0
+		dpdk_conf.set(flag[0], flag[1])
+	endif
+endforeach
+
+message('Implementer : ' + machine[0])
+foreach flag: machine[1]
+	if flag.length() > 0
+		dpdk_conf.set(flag[0], flag[1])
+	endif
+endforeach
+
+foreach marg: machine[2]
+	if marg[0] == impl_pn
+		foreach flag: marg[1]
+			if cc.has_argument(flag)
+				machine_args += flag
+			endif
+		endforeach
+		# Apply any extra machine specific flags.
+		foreach flag: marg.get(2, flags_default_extra)
+			if flag.length() > 0
+				dpdk_conf.set(flag[0], flag[1])
+                                message('Setting flag: @0@: @1@'.format(flag[0], flag[1]))
+			endif
+		endforeach
+	endif
+endforeach
 message(machine_args)
 
 if (cc.get_define('__ARM_NEON', args: machine_args) != '' or
diff --git a/drivers/meson.build b/drivers/meson.build
index 5502bf992..5763752fc 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -71,6 +71,14 @@ foreach class:dpdk_driver_classes
 				reason = 'Explicitly disabled via build config'
 			endif
 		endforeach
+		if fmt_name == ''
+			fmt_name = name
+		endif
+		conf_flag = config_flag_fmt.format(fmt_name.to_upper())
+		if dpdk_conf.has(conf_flag) and not dpdk_conf.get(conf_flag)
+			build = false
+                        reason = 'Explicitly disabled via build config'
+		endif
 		if build
 			# get dependency objs from strings
 			shared_deps = ext_deps
@@ -100,10 +108,7 @@ foreach class:dpdk_driver_classes
 		else
 			class_drivers += name
 
-			if fmt_name == ''
-				fmt_name = name
-			endif
-			dpdk_conf.set(config_flag_fmt.format(fmt_name.to_upper()),1)
+			dpdk_conf.set(conf_flag, true)
 			lib_name = driver_name_fmt.format(fmt_name)
 
 			if allow_experimental_apis
diff --git a/drivers/net/kni/meson.build b/drivers/net/kni/meson.build
index 0539b4768..79a16ae5b 100644
--- a/drivers/net/kni/meson.build
+++ b/drivers/net/kni/meson.build
@@ -2,7 +2,7 @@
 # Copyright(c) 2018 Intel Corporation
 
 # this driver can be built if-and-only-if KNI library is buildable
-build = dpdk_conf.has('RTE_LIBRTE_KNI')
+build = dpdk_conf.has('RTE_LIBRTE_KNI') and dpdk_conf.get('RTE_LIBRTE_KNI')
 reason = 'missing dependency, DPDK KNI library'
 sources = files('rte_eth_kni.c')
 deps += 'kni'
diff --git a/examples/ethtool/meson.build b/examples/ethtool/meson.build
index bc7a35514..814b8ada1 100644
--- a/examples/ethtool/meson.build
+++ b/examples/ethtool/meson.build
@@ -13,7 +13,7 @@ sources = files('lib/rte_ethtool.c',
 includes = include_directories('lib', 'ethtool-app')
 
 deps += 'bus_pci'
-if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD')
+if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD') and dpdk_conf.get('RTE_LIBRTE_IXGBE_PMD')
 	deps += 'pmd_ixgbe'
 endif
 
diff --git a/examples/ioat/meson.build b/examples/ioat/meson.build
index ed8328963..029126353 100644
--- a/examples/ioat/meson.build
+++ b/examples/ioat/meson.build
@@ -6,7 +6,7 @@
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-build = dpdk_conf.has('RTE_LIBRTE_PMD_IOAT_RAWDEV')
+build = dpdk_conf.has('RTE_LIBRTE_PMD_IOAT_RAWDEV') and dpdk_conf.get('RTE_LIBRTE_PMD_IOAT_RAWDEV')
 
 deps += ['rawdev_ioat']
 
diff --git a/examples/kni/meson.build b/examples/kni/meson.build
index fd6ae4442..d9514b155 100644
--- a/examples/kni/meson.build
+++ b/examples/kni/meson.build
@@ -7,7 +7,7 @@
 # DPDK instance, use 'make'
 
 # this app can be built if-and-only-if KNI library is buildable
-build = dpdk_conf.has('RTE_LIBRTE_KNI')
+build = dpdk_conf.has('RTE_LIBRTE_KNI') and dpdk_conf.get('RTE_LIBRTE_KNI')
 deps += ['kni', 'bus_pci']
 sources = files(
 	'main.c'
diff --git a/examples/vm_power_manager/meson.build b/examples/vm_power_manager/meson.build
index 20a4a05b3..9d591813c 100644
--- a/examples/vm_power_manager/meson.build
+++ b/examples/vm_power_manager/meson.build
@@ -17,11 +17,11 @@ if dpdk_conf.has('RTE_LIBRTE_BNXT_PMD')
 	deps += ['pmd_bnxt']
 endif
 
-if dpdk_conf.has('RTE_LIBRTE_I40E_PMD')
+if dpdk_conf.has('RTE_LIBRTE_I40E_PMD') and dpdk_conf.get('RTE_LIBRTE_I40E_PMD')
 	deps += ['pmd_i40e']
 endif
 
-if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD')
+if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD') and dpdk_conf.get('RTE_LIBRTE_IXGBE_PMD')
 	deps += ['pmd_ixgbe']
 endif
 
diff --git a/lib/librte_port/meson.build b/lib/librte_port/meson.build
index 0d5ede44a..5f3d190fa 100644
--- a/lib/librte_port/meson.build
+++ b/lib/librte_port/meson.build
@@ -28,7 +28,7 @@ if dpdk_conf.has('RTE_PORT_PCAP')
 	ext_deps += pcap_dep # dependency provided in config/meson.build
 endif
 
-if dpdk_conf.has('RTE_LIBRTE_KNI')
+if dpdk_conf.has('RTE_LIBRTE_KNI') and dpdk_conf.get('RTE_LIBRTE_KNI')
 	sources += files('rte_port_kni.c')
 	headers += files('rte_port_kni.h')
 	deps += 'kni'
diff --git a/lib/meson.build b/lib/meson.build
index 9c3cc55d5..59ccfed9d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -86,7 +86,7 @@ foreach l:libraries
 		set_variable(name.underscorify() + '_disable_reason', reason)
 	else
 		enabled_libs += name
-		dpdk_conf.set('RTE_LIBRTE_' + name.to_upper(), 1)
+		dpdk_conf.set('RTE_LIBRTE_' + name.to_upper(), true)
 		install_headers(headers)
 
 		libname = 'rte_' + name
-- 
2.11.0
NOTES: tested here: https://travis-ci.com/github/jlinkes/dpdk/builds/159597484
There are two issues I would like to get feedback for:
1. the aarch64 -> arm cross compilation fails when compiling l3fwd example [0].
   I think this failure needs to be fixed by arm devs, but I would like to have
   this confirmed.
2. the patch breaks ABI checks on aarch64 [1]. The reason is that the 
   RTE_LIBRTE_FM10K_PMD and RTE_LIBRTE_AVP_PMD flags in config/arm/meson.build
   get properly applied, the libs don't get built and then check the fails when
   it doesn't find them. I don't know whether the application of these flags is
   desirable (and we would need to fix the ABI check) or whether we should 
   remove the flags.

[0] https://travis-ci.com/github/jlinkes/dpdk/jobs/317622662#L2672
[1] https://travis-ci.com/github/jlinkes/dpdk/jobs/317622661#L4488

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
  2020-04-09 14:14 [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson Juraj Linkeš
@ 2020-04-10  9:46 ` Bruce Richardson
  2020-04-14  6:48   ` Juraj Linkeš
  2020-04-13  6:23 ` Ruifeng Wang
  1 sibling, 1 reply; 5+ messages in thread
From: Bruce Richardson @ 2020-04-10  9:46 UTC (permalink / raw)
  To: Juraj Linkeš; +Cc: dev

On Thu, Apr 09, 2020 at 04:14:48PM +0200, Juraj Linkeš wrote:
> * Add arm-linux-gnueabihf cross-file
> * Add generic and default arm 32 bit flags to arm meson.build
> * Add support for disabling drivers using flags defined in Meson
>   * Change checks from dpdk_conf.has() to dpdk.conf.get()
>   * When processing which drivers to build, check whether the
>     appropriate RTE flag isn't set to false
> 

This is probably best done as separate patches that can be reviewed
separately. While the first two seem straight-forward, the last item seems
strange and should be reviewed separately.  Why do you want flags defined
in meson to enable/disable drivers? It's taking a big step back towards
having a statically defined configuration, which is something we really
want to get away from.

/Bruce

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
  2020-04-09 14:14 [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson Juraj Linkeš
  2020-04-10  9:46 ` Bruce Richardson
@ 2020-04-13  6:23 ` Ruifeng Wang
  2020-04-14  7:05   ` Juraj Linkeš
  1 sibling, 1 reply; 5+ messages in thread
From: Ruifeng Wang @ 2020-04-13  6:23 UTC (permalink / raw)
  To: Juraj Linkeš, bruce.richardson
  Cc: dev, Honnappa Nagarahalli, Gavin Hu, nd, nd

Hi Juraj,

> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Juraj Linke?
> Sent: Thursday, April 9, 2020 10:15 PM
> To: bruce.richardson@intel.com
> Cc: dev@dpdk.org; Juraj Linkeš <juraj.linkes@pantheon.tech>
> Subject: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
> 
> * Add arm-linux-gnueabihf cross-file
> * Add generic and default arm 32 bit flags to arm meson.build
> * Add support for disabling drivers using flags defined in Meson
>   * Change checks from dpdk_conf.has() to dpdk.conf.get()
>   * When processing which drivers to build, check whether the
>     appropriate RTE flag isn't set to false
> 
The changes are not small as a single patch.
Could you split it into series of smaller patches?
I think each bullet in commit message can be a separate patch.

> Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
> ---
>  app/test-pmd/meson.build              |   4 +-
>  app/test/meson.build                  |   2 +-
>  config/arm/arm_armv7a_linux_gcc       |  17 ++++
>  config/arm/meson.build                | 157 +++++++++++++++++++++-------------
>  drivers/meson.build                   |  13 ++-
>  drivers/net/kni/meson.build           |   2 +-
>  examples/ethtool/meson.build          |   2 +-
>  examples/ioat/meson.build             |   2 +-
>  examples/kni/meson.build              |   2 +-
>  examples/vm_power_manager/meson.build |   4 +-
>  lib/librte_port/meson.build           |   2 +-
>  lib/meson.build                       |   2 +-
>  12 files changed, 133 insertions(+), 76 deletions(-)  create mode 100644
> config/arm/arm_armv7a_linux_gcc
> 

<snip>

> --
> 2.11.0
> NOTES: tested here: https://travis-
> ci.com/github/jlinkes/dpdk/builds/159597484
> There are two issues I would like to get feedback for:
> 1. the aarch64 -> arm cross compilation fails when compiling l3fwd example
> [0].
>    I think this failure needs to be fixed by arm devs, but I would like to have
>    this confirmed.
Yes, this should be fixed in source code.

> 2. the patch breaks ABI checks on aarch64 [1]. The reason is that the
>    RTE_LIBRTE_FM10K_PMD and RTE_LIBRTE_AVP_PMD flags in
> config/arm/meson.build
>    get properly applied, the libs don't get built and then check the fails when
>    it doesn't find them. I don't know whether the application of these flags is
>    desirable (and we would need to fix the ABI check) or whether we should
>    remove the flags.
Does the changes impact not only aarch32 but also aarch64?

> 
> [0] https://travis-ci.com/github/jlinkes/dpdk/jobs/317622662#L2672
> [1] https://travis-ci.com/github/jlinkes/dpdk/jobs/317622661#L4488

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
  2020-04-10  9:46 ` Bruce Richardson
@ 2020-04-14  6:48   ` Juraj Linkeš
  0 siblings, 0 replies; 5+ messages in thread
From: Juraj Linkeš @ 2020-04-14  6:48 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev

Hi Bruce,

-----Original Message-----
From: Bruce Richardson <bruce.richardson@intel.com> 
Sent: Friday, April 10, 2020 11:46 AM
To: Juraj Linkeš <juraj.linkes@pantheon.tech>
Cc: dev@dpdk.org
Subject: Re: [PATCH] build: add arm 32bit cross compilation to Meson

On Thu, Apr 09, 2020 at 04:14:48PM +0200, Juraj Linkeš wrote:
> * Add arm-linux-gnueabihf cross-file
> * Add generic and default arm 32 bit flags to arm meson.build
> * Add support for disabling drivers using flags defined in Meson
>   * Change checks from dpdk_conf.has() to dpdk.conf.get()
>   * When processing which drivers to build, check whether the
>     appropriate RTE flag isn't set to false
> 

This is probably best done as separate patches that can be reviewed separately. While the first two seem straight-forward, the last item seems strange and should be reviewed separately.  Why do you want flags defined in meson to enable/disable drivers? It's taking a big step back towards having a statically defined configuration, which is something we really want to get away from.

/Bruce

I will split the patch.
I don't have any particular reason to do it this way. What should I do? Add conditions that check for arm32 build to each of these drivers?

Thanks,
Juraj

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
  2020-04-13  6:23 ` Ruifeng Wang
@ 2020-04-14  7:05   ` Juraj Linkeš
  0 siblings, 0 replies; 5+ messages in thread
From: Juraj Linkeš @ 2020-04-14  7:05 UTC (permalink / raw)
  To: Ruifeng Wang, bruce.richardson
  Cc: dev, Honnappa Nagarahalli, Gavin Hu, nd, nd

Hi Ruifeng,

> -----Original Message-----
> From: Ruifeng Wang <Ruifeng.Wang@arm.com>
> Sent: Monday, April 13, 2020 8:24 AM
> To: Juraj Linkeš <juraj.linkes@pantheon.tech>; bruce.richardson@intel.com
> Cc: dev@dpdk.org; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> Gavin Hu <Gavin.Hu@arm.com>; nd <nd@arm.com>; nd <nd@arm.com>
> Subject: RE: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to
> Meson
> 
> Hi Juraj,
> 
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Juraj Linke?
> > Sent: Thursday, April 9, 2020 10:15 PM
> > To: bruce.richardson@intel.com
> > Cc: dev@dpdk.org; Juraj Linkeš <juraj.linkes@pantheon.tech>
> > Subject: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to
> > Meson
> >
> > * Add arm-linux-gnueabihf cross-file
> > * Add generic and default arm 32 bit flags to arm meson.build
> > * Add support for disabling drivers using flags defined in Meson
> >   * Change checks from dpdk_conf.has() to dpdk.conf.get()
> >   * When processing which drivers to build, check whether the
> >     appropriate RTE flag isn't set to false
> >
> The changes are not small as a single patch.
> Could you split it into series of smaller patches?
> I think each bullet in commit message can be a separate patch.

Sure, I'll split the patch.

> > --
> > 2.11.0
> > NOTES: tested here: https://travis-
> > ci.com/github/jlinkes/dpdk/builds/159597484
> > There are two issues I would like to get feedback for:
> > 1. the aarch64 -> arm cross compilation fails when compiling l3fwd
> > example [0].
> >    I think this failure needs to be fixed by arm devs, but I would like to have
> >    this confirmed.
> Yes, this should be fixed in source code.

Ok, thanks.

> > 2. the patch breaks ABI checks on aarch64 [1]. The reason is that the
> >    RTE_LIBRTE_FM10K_PMD and RTE_LIBRTE_AVP_PMD flags in
> > config/arm/meson.build
> >    get properly applied, the libs don't get built and then check the fails when
> >    it doesn't find them. I don't know whether the application of these flags is
> >    desirable (and we would need to fix the ABI check) or whether we should
> >    remove the flags.
> Does the changes impact not only aarch32 but also aarch64?

Yes, it does, but only aarch64 cross build (when --cross-file is used). Bruce mentioned that they're moving away from statically defining the driver flags, so the mechanism will change, probably in a way that won't affect aarch64 cross build.

Juraj

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-04-14  7:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-09 14:14 [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson Juraj Linkeš
2020-04-10  9:46 ` Bruce Richardson
2020-04-14  6:48   ` Juraj Linkeš
2020-04-13  6:23 ` Ruifeng Wang
2020-04-14  7:05   ` Juraj Linkeš

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).