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

Morten Brørup mb at smartsharesystems.com
Fri Nov 6 09:23:01 CET 2020


> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Juraj Linkeš
> Sent: Friday, November 6, 2020 9:03 AM
> 
> 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.
> 
> 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 cross files.
> 
> 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 must be done using
>   cross-files
> * max numa nodes and max lcore may be specified on the command line to
>   overwrite the values for any (native or cross) build
> 

We are cross building our application firmware x86 -> x86. Our firmware repository includes the cross compiler source code, target libc source code, and so on. This ensures that the entire firmware is exactly the same, independently of which host it was built on.

Back in the days, before we started using DPDK, we validated our cross building environment by building the complete firmware for our appliance (including bootloader, Linux kernel, libraries, applications, root file system, etc.) PPC -> x86. It worked.

The DPDK cross building system should work in any X -> Y environment, including X -> X cross building.

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


More information about the dev mailing list