[dpdk-dev] [PATCH v12 00/14] Arm build options rework

Ruifeng Wang Ruifeng.Wang at arm.com
Fri Nov 13 15:40:22 CET 2020


> -----Original Message-----
> From: Juraj Linkeš <juraj.linkes at pantheon.tech>
> Sent: Friday, November 13, 2020 10:31 PM
> To: bruce.richardson at intel.com; Ruifeng Wang <Ruifeng.Wang at arm.com>;
> Honnappa Nagarahalli <Honnappa.Nagarahalli at arm.com>; Phil Yang
> <Phil.Yang at arm.com>; vcchunga at amazon.com; Dharmik Thakkar
> <Dharmik.Thakkar at arm.com>; jerinjacobk at gmail.com;
> hemant.agrawal at nxp.com; Ajit Khaparde (ajit.khaparde at broadcom.com)
> <ajit.khaparde at broadcom.com>; ferruh.yigit at intel.com
> Cc: dev at dpdk.org; Juraj Linkeš <juraj.linkes at pantheon.tech>
> Subject: [PATCH v12 00/14] Arm build options rework
> 
> The current way of specifying Arm configuration options is insufficient since
> we can't identify the SoC we're building for from the MIDR information. For
> example, we can't distinguish between N1SDP, Graviton2 or Ampere Altra.
> 
> Add a way to specify the cpu count and numa node count for cross builds and
> aarch64 -> aarch64 (SoC) builds.
> 
> We also want to be able to disable which drivers (and possibly
> libraries) are built without user input. This is useful when building:
> 1. on an SoC that is slow and we want to build only what is necessary
>   without the user having to check which libraries they have installed 2. a
> cross build on a fast aarch64 machine but with target SoC which
>   differs in capabilities or libraries.
> This is achieved by specifying the drivers in SoC configuration.
> 
> Among libraries, only libnuma can be now disabled.
> 
> Also add an optional way to discover cpu count a numa node count. Fix -
> Dmax_lcores and -Dmax_numa_nodes for arm builds.
> 
> The current implementation adds/supports the following:
> * x86 -> aarch64 cross build with added config options/disabled
>   drivers/libs
> * aarch64 -> aarch64 builds for a different SoCs using meson -Darm_soc
>   option or using a cross file
> * max numa nodes and max lcore may be specified on the command line to
>   overwrite the values for any (native, SoC or cross) build
> 
> v2:
> Major rework of the whole series.
> 
> v3:
> Added numa and core count defaults for x86 default build.
> Removed numa and core count defaults. Now requiring defaults to be
> specified in a cross file or on the cmdline.
> Added FreeBDS support for numa count discovery.
> 
> v4:
> Make automatic numa and cpu counts discovery optional.
> 
> v5:
> Split the refactor patch into smaller patches.
> Simplify buildtools/get_numa_count.py.
> Add more explanation to cover letter.
> 
> v6:
> Apply cross file options arch agnostically, not just in Arm cross builds.
> Streamline Arm build setup and machine args: always use native args in
> native builds, require implementer ID and part number for cross builds.
> 
> v7:
> Arm config options are now organized in one dictionary.
> Removed unsupported implementers and removed fallback to generic
> implementer/part number for unknown implementer/part number.
> Added meson config option arm_soc which can be used to specify
> configuration to be used, useful for aarch64 -> aarch64 builds.
> 
> v8:
> Rebase.
> 
> v9:
> Split SoC and implementer dictionaries into smaller parts.
> Fixed DPAA and ARMADA SoC configuration.
> Added documentation about supported SoCs.
> 
> v10:
> Added a commit that fixes Graviton2 clang build failures in native build.
> 
> v11:
> Rebase.
> 
> v12:
> Fixed dpaa and armada cross builds in generic build commit.
> 
> Series Acked-by: Jerin Jacob <jerinj at marvell.com> Series Tested-by: Jerin
> Jacob <jerinj at marvell.com> Series Tested-by: Dharmik Thakkar
> <dharmik.thakkar at arm.com>
> 
Series Acked-by: Ruifeng Wang <ruifeng.wang at arm.com>

> Juraj Linkeš (14):
>   build: alias default build as generic
>   build: rename Arm build variables
>   build: remove unused or superfluous variables
>   build: reformat and move Arm config and comments
>   build: simplify how Arm flags are processed
>   build: organize Arm config into dict
>   build: isolate configuration for generic build
>   build: use native machine args in Arm native build
>   build: optional NUMA and cpu counts detection
>   build: add core and NUMA counts to cross files
>   build: disable Arm drivers
>   build: disable libnuma in cross builds
>   build: add Arm SoC meson option
>   config: fix Arm implementer and its SoCs
> 
>  buildtools/get_cpu_count.py                   |   7 +
>  buildtools/get_numa_count.py                  |  22 +
>  buildtools/meson.build                        |   2 +
>  config/arm/arm64_armada_linux_gcc             |   2 +-
>  config/arm/arm64_armv8_linux_gcc              |  15 +-
>  config/arm/arm64_bluefield_linux_gcc          |   3 +-
>  config/arm/arm64_dpaa_linux_gcc               |   2 +-
>  config/arm/arm64_emag_linux_gcc               |   2 +-
>  config/arm/arm64_graviton2_linux_gcc          |   3 +-
>  config/arm/arm64_n1sdp_linux_gcc              |   3 +-
>  config/arm/arm64_octeontx2_linux_gcc          |   3 +-
>  config/arm/arm64_stingray_linux_gcc           |   3 +-
>  config/arm/arm64_thunderx2_linux_gcc          |   3 +-
>  ..._linux_gcc => arm64_thunderxt88_linux_gcc} |   2 +-
>  config/arm/meson.build                        | 503 ++++++++++++------
>  config/meson.build                            |  90 +++-
>  config/x86/meson.build                        |   2 +
>  .../linux_gsg/cross_build_dpdk_for_arm64.rst  |  30 ++
>  doc/guides/prog_guide/build-sdk-meson.rst     |   4 +-
>  drivers/meson.build                           |   6 +-
>  meson.build                                   |   1 +
>  meson_options.txt                             |  12 +-
>  22 files changed, 504 insertions(+), 216 deletions(-)  create mode 100644
> buildtools/get_cpu_count.py  create mode 100644
> buildtools/get_numa_count.py  rename
> config/arm/{arm64_thunderx_linux_gcc => arm64_thunderxt88_linux_gcc}
> (92%)
> 
> --
> 2.20.1



More information about the dev mailing list