From patchwork Wed Apr 29 10:24:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 69537 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2933DA00BE; Wed, 29 Apr 2020 12:24:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4C4FE1D98D; Wed, 29 Apr 2020 12:24:39 +0200 (CEST) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by dpdk.org (Postfix) with ESMTP id E000C1D970 for ; Wed, 29 Apr 2020 12:24:35 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id 89D8418500C; Wed, 29 Apr 2020 12:24:34 +0200 (CEST) X-Virus-Scanned: amavisd-new at siecit.sk Received: from lb.pantheon.sk ([127.0.0.1]) by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id R_3CzWG2vor6; Wed, 29 Apr 2020 12:24:33 +0200 (CEST) Received: from service-node1.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id 22455184FFD; Wed, 29 Apr 2020 12:24:33 +0200 (CEST) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: bruce.richardson@intel.com, aconole@redhat.com, maicolgabriel@hotmail.com, Ruifeng.Wang@arm.com Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= Date: Wed, 29 Apr 2020 12:24:29 +0200 Message-Id: <1588155872-13032-2-git-send-email-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1588155872-13032-1-git-send-email-juraj.linkes@pantheon.tech> References: <1586941391-11094-1-git-send-email-juraj.linkes@pantheon.tech> <1588155872-13032-1-git-send-email-juraj.linkes@pantheon.tech> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 1/4] build: disable vhost NUMA for arm32 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" config/defconfig_arm-armv7a-linux-gcc specifies that RTE_LIBRTE_VHOST_NUMA is not supported on arm32, so disable it in meson. Signed-off-by: Juraj Linkeš --- lib/librte_vhost/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/librte_vhost/meson.build b/lib/librte_vhost/meson.build index f80632848..977335c4f 100644 --- a/lib/librte_vhost/meson.build +++ b/lib/librte_vhost/meson.build @@ -5,7 +5,7 @@ if not is_linux build = false reason = 'only supported on linux' endif -if has_libnuma == 1 +if has_libnuma == 1 and not dpdk_conf.has('RTE_ARCH_ARMv7') dpdk_conf.set10('RTE_LIBRTE_VHOST_NUMA', true) endif if (toolchain == 'gcc' and cc.version().version_compare('>=8.3.0')) From patchwork Wed Apr 29 10:24:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 69539 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 59756A00BE; Wed, 29 Apr 2020 12:25:00 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 776A21D9BE; Wed, 29 Apr 2020 12:24:48 +0200 (CEST) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by dpdk.org (Postfix) with ESMTP id 38C101D972 for ; Wed, 29 Apr 2020 12:24:37 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id 8F7E6185005; Wed, 29 Apr 2020 12:24:36 +0200 (CEST) X-Virus-Scanned: amavisd-new at siecit.sk Received: from lb.pantheon.sk ([127.0.0.1]) by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id k4HgpcAjGv-e; Wed, 29 Apr 2020 12:24:35 +0200 (CEST) Received: from service-node1.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id 9335E185007; Wed, 29 Apr 2020 12:24:33 +0200 (CEST) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: bruce.richardson@intel.com, aconole@redhat.com, maicolgabriel@hotmail.com, Ruifeng.Wang@arm.com Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= Date: Wed, 29 Apr 2020 12:24:30 +0200 Message-Id: <1588155872-13032-3-git-send-email-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1588155872-13032-1-git-send-email-juraj.linkes@pantheon.tech> References: <1586941391-11094-1-git-send-email-juraj.linkes@pantheon.tech> <1588155872-13032-1-git-send-email-juraj.linkes@pantheon.tech> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 2/4] build: add arm32 meson build flags X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Base the flags on config/defconfig_arm-armv7a-linuxapp-gcc. Omit driver flags which can be built on arm32. Signed-off-by: Juraj Linkeš --- config/arm/meson.build | 135 ++++++++++++++++++++++------------------- 1 file changed, 74 insertions(+), 61 deletions(-) diff --git a/config/arm/meson.build b/config/arm/meson.build index 6e75e6d97..746113849 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,10 @@ flags_armada = [ ['RTE_MAX_LCORE', 16]] flags_default_extra = [] +flags_default_arm32_extra = [ + ['RTE_ARCH_ARM_NEON_MEMCPY', false], + ['RTE_ARCH_STRICT_ALIGN', true], + ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false]] flags_n1sdp_extra = [ ['RTE_MACHINE', '"n1sdp"'], ['RTE_MAX_NUMA_NODES', 1], @@ -99,6 +108,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 +126,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 +149,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 From patchwork Wed Apr 29 10:24:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 69538 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 486B2A00BE; Wed, 29 Apr 2020 12:24:53 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E905A1D9B6; Wed, 29 Apr 2020 12:24:46 +0200 (CEST) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by dpdk.org (Postfix) with ESMTP id 24CB31D970 for ; Wed, 29 Apr 2020 12:24:37 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id 50684184FFD; Wed, 29 Apr 2020 12:24:36 +0200 (CEST) X-Virus-Scanned: amavisd-new at siecit.sk Received: from lb.pantheon.sk ([127.0.0.1]) by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TpBkWl0tQLsB; Wed, 29 Apr 2020 12:24:35 +0200 (CEST) Received: from service-node1.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id 0F5DB185008; Wed, 29 Apr 2020 12:24:34 +0200 (CEST) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: bruce.richardson@intel.com, aconole@redhat.com, maicolgabriel@hotmail.com, Ruifeng.Wang@arm.com Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= Date: Wed, 29 Apr 2020 12:24:31 +0200 Message-Id: <1588155872-13032-4-git-send-email-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1588155872-13032-1-git-send-email-juraj.linkes@pantheon.tech> References: <1586941391-11094-1-git-send-email-juraj.linkes@pantheon.tech> <1588155872-13032-1-git-send-email-juraj.linkes@pantheon.tech> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 3/4] build: add arm32 meson cross file X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Use arm-linux-gnueabihf- toolset which comes with standard packages on most used systems, such as Ubuntu and CentOS. Signed-off-by: Juraj Linkeš --- config/arm/arm_armv7a_linux_gcc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 config/arm/arm_armv7a_linux_gcc 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' From patchwork Wed Apr 29 10:24:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Juraj_Linke=C5=A1?= X-Patchwork-Id: 69540 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 545E9A00BE; Wed, 29 Apr 2020 12:25:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BC33B1D9C5; Wed, 29 Apr 2020 12:24:49 +0200 (CEST) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by dpdk.org (Postfix) with ESMTP id 32D9E1D984 for ; Wed, 29 Apr 2020 12:24:38 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id AC256184FFB; Wed, 29 Apr 2020 12:24:37 +0200 (CEST) X-Virus-Scanned: amavisd-new at siecit.sk Received: from lb.pantheon.sk ([127.0.0.1]) by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4ntuwjXCam3E; Wed, 29 Apr 2020 12:24:36 +0200 (CEST) Received: from service-node1.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id DB4EC18500D; Wed, 29 Apr 2020 12:24:34 +0200 (CEST) From: =?utf-8?q?Juraj_Linke=C5=A1?= To: bruce.richardson@intel.com, aconole@redhat.com, maicolgabriel@hotmail.com, Ruifeng.Wang@arm.com Cc: dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= Date: Wed, 29 Apr 2020 12:24:32 +0200 Message-Id: <1588155872-13032-5-git-send-email-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1588155872-13032-1-git-send-email-juraj.linkes@pantheon.tech> References: <1586941391-11094-1-git-send-email-juraj.linkes@pantheon.tech> <1588155872-13032-1-git-send-email-juraj.linkes@pantheon.tech> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 4/4] ci: add aarch64 -> arm32 cross compiling jobs X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add two jobs (static and shared libs), both building on aarch64 and producing 32 bit arm binaries. Do not run tests in these jobs. Signed-off-by: Juraj Linkeš --- .ci/linux-build.sh | 7 ++++++- .travis.yml | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index d079801d7..3cc3d8bac 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -33,6 +33,11 @@ if [ "$AARCH64" = "1" ]; then OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc" fi +if [ "$ARM" = "1" ]; then + # convert the arch specifier + OPTS="$OPTS --cross-file config/arm/arm_armv7a_linux_gcc" +fi + if [ "$BUILD_DOCS" = "1" ]; then OPTS="$OPTS -Denable_docs=true" fi @@ -53,7 +58,7 @@ OPTS="$OPTS --buildtype=debugoptimized" meson build --werror $OPTS ninja -C build -if [ "$AARCH64" != "1" ]; then +if [ "$AARCH64" != "1" ] && [ "$ARM" != "1" ]; then devtools/test-null.sh fi diff --git a/.travis.yml b/.travis.yml index 2d2292ff6..63939d2c5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,6 +21,10 @@ _aarch64_packages: &aarch64_packages - *required_packages - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu] +_arm_packages: &arm_packages + - *required_packages + - [gcc-arm-linux-gnueabihf, libc6-dev-armhf-cross, pkg-config-arm-linux-gnueabihf] + _libabigail_build_packages: &libabigail_build_packages - [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev] @@ -124,6 +128,21 @@ jobs: packages: - *required_packages - *libabigail_build_packages + # aarch64 cross-compiling arm jobs + - env: DEF_LIB="shared" ARM=1 + arch: arm64 + compiler: gcc + addons: + apt: + packages: + - *arm_packages + - env: DEF_LIB="static" ARM=1 + arch: arm64 + compiler: gcc + addons: + apt: + packages: + - *arm_packages # aarch64 clang jobs - env: DEF_LIB="static" arch: arm64