From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 00EAAA0A0E; Wed, 3 Feb 2021 15:04:13 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 64F4E2405CC; Wed, 3 Feb 2021 15:04:05 +0100 (CET) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by mails.dpdk.org (Postfix) with ESMTP id EE4DB2405B6 for ; Wed, 3 Feb 2021 15:04:02 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id BA8F1C05A8; Wed, 3 Feb 2021 15:04:00 +0100 (CET) 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 MFJke3NnlOBS; Wed, 3 Feb 2021 15:03:59 +0100 (CET) Received: from service-node1.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id A8706BFD90; Wed, 3 Feb 2021 15:03:58 +0100 (CET) From: =?UTF-8?q?Juraj=20Linke=C5=A1?= To: bruce.richardson@intel.com, 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, aboyer@pensando.io Cc: dev@dpdk.org, =?UTF-8?q?Juraj=20Linke=C5=A1?= Date: Wed, 3 Feb 2021 15:03:55 +0100 Message-Id: <1612361037-12746-2-git-send-email-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1612361037-12746-1-git-send-email-juraj.linkes@pantheon.tech> References: <1610717170-31279-1-git-send-email-juraj.linkes@pantheon.tech> <1612361037-12746-1-git-send-email-juraj.linkes@pantheon.tech> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v16 1/3] build: disable/enable drivers in Arm builds X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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 support for enabling or disabling drivers for Arm cross build. Do not implement any enable/disable lists yet. Enabling drivers is useful when building for an SoC where we only want to build a few drivers. That way the list won't be too long. Similarly, disabling drivers is useful when we want to disable only a few drivers. Both of these are advantageous mainly in aarch64 -> aarch64 (or arch -> same arch) builds, where the build machine may have the required driver dependencies, yet we don't want to build drivers for a speficic SoC. By default, build all drivers for which dependencies are found. If enabled_drivers is a non-empty list, build only those drivers. If disabled_drivers is non-empty list, build all drivers except those in disabled_drivers. Error out if both are specified (i.e. do not support that case). Remove the old Makefile arm configutaion options which don't do anything in Meson. Signed-off-by: Juraj Linkeš Acked-by: Bruce Richardson Reviewed-by: Honnappa Nagarahalli --- config/arm/meson.build | 4 -- .../linux_gsg/cross_build_dpdk_for_arm64.rst | 8 ++++ drivers/meson.build | 41 ++++++++++++++++--- meson.build | 2 + 4 files changed, 46 insertions(+), 9 deletions(-) diff --git a/config/arm/meson.build b/config/arm/meson.build index f948768578..d279724dec 100644 --- a/config/arm/meson.build +++ b/config/arm/meson.build @@ -16,9 +16,6 @@ flags_common = [ # ['RTE_ARM64_MEMCPY_ALIGN_MASK', 0xF], # ['RTE_ARM64_MEMCPY_STRICT_ALIGN', false], - ['RTE_NET_FM10K', false], - ['RTE_NET_AVP', false], - ['RTE_SCHED_VECTOR', false], ['RTE_ARM_USE_WFE', false], ['RTE_ARCH_ARM64', true], @@ -125,7 +122,6 @@ implementer_cavium = { ['RTE_MACHINE', '"octeontx2"'], ['RTE_ARM_FEATURE_ATOMICS', true], ['RTE_USE_C11_MEM_MODEL', true], - ['RTE_EAL_IGB_UIO', false], ['RTE_MAX_LCORE', 36], ['RTE_MAX_NUMA_NODES', 1] ] 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 faaf24b95b..1504dbfef0 100644 --- a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst +++ b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst @@ -234,3 +234,11 @@ There are other options you may specify in a cross file to tailor the build:: 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 + + disabled_drivers = ['bus/dpaa', 'crypto/*'] # add disabled drivers + # valid values are dir/subdirs in the drivers directory + # wildcards are allowed + + enabled_drivers = ['common/*', 'bus/*'] # build only these drivers + # valid values are dir/subdirs in the drivers directory + # wildcards are allowed diff --git a/drivers/meson.build b/drivers/meson.build index fdf76120ac..70c1aa4e6c 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -18,8 +18,36 @@ subdirs = [ 'baseband', # depends on common and bus. ] -disabled_drivers = run_command(list_dir_globs, get_option('disable_drivers'), - ).stdout().split() +if meson.is_cross_build() + disabled_drivers += meson.get_cross_property('disabled_drivers', []) + enabled_drivers += meson.get_cross_property('enabled_drivers', []) +endif + +# add cmdline disabled drivers (comma separated string) +# and meson disabled drivers (list) +# together into a comma separated string +disabled_drivers = ','.join([get_option('disable_drivers'), ','.join(disabled_drivers)]).strip(',') +if disabled_drivers != '' + disabled_drivers = run_command(list_dir_globs, + disabled_drivers).stdout().split() +else + disabled_drivers = [] +endif + +if enabled_drivers != [] + enabled_drivers = run_command(list_dir_globs, + ','.join(enabled_drivers)).stdout().split() +endif + +if disabled_drivers != [] and enabled_drivers != [] + # TODO/QUERY we could support both: + # first 'select' only drivers by enabled_drivers + # then 'deselect' those in disabled_drivers + # this would be useful if a directory is in enabled_drivers + # and a driver from that directory is in disabled_drivers + error('Simultaneous disabled drivers and enabled drivers ' + + 'configuration is not supported.') +endif default_cflags = machine_args default_cflags += ['-DALLOW_EXPERIMENTAL_API'] @@ -48,7 +76,7 @@ foreach subpath:subdirs dpdk_driver_classes += class endif # get already enabled drivers of the same class - enabled_drivers = get_variable(class + '_drivers', []) + enabled_class_drivers = get_variable(class + '_drivers', []) foreach drv:drivers drv_path = join_paths(class, drv) @@ -76,6 +104,9 @@ foreach subpath:subdirs if disabled_drivers.contains(drv_path) build = false reason = 'explicitly disabled via build config' + elif enabled_drivers.length() > 0 and not enabled_drivers.contains(drv_path) + build = false + reason = 'not in enabled drivers build config' else # pull in driver directory which should update all the local variables subdir(drv_path) @@ -108,7 +139,7 @@ foreach subpath:subdirs '_disable_reason', reason) endif else - enabled_drivers += name + enabled_class_drivers += name lib_name = '_'.join(['rte', class, name]) dpdk_conf.set(lib_name.to_upper(), 1) @@ -213,5 +244,5 @@ foreach subpath:subdirs endif # build endforeach - set_variable(class + '_drivers', enabled_drivers) + set_variable(class + '_drivers', enabled_class_drivers) endforeach diff --git a/meson.build b/meson.build index fcc4d4c900..ea7ccfdae3 100644 --- a/meson.build +++ b/meson.build @@ -22,6 +22,8 @@ dpdk_drivers = [] dpdk_extra_ldflags = [] dpdk_libs_disabled = [] dpdk_drvs_disabled = [] +disabled_drivers = [] +enabled_drivers = [] abi_version_file = files('ABI_VERSION') if host_machine.cpu_family().startswith('x86') -- 2.20.1