From patchwork Thu Aug 10 13:18:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 130088 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 430AB43026; Thu, 10 Aug 2023 15:29:47 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CED8540DFB; Thu, 10 Aug 2023 15:29:46 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 7F7FE40691 for ; Thu, 10 Aug 2023 15:29:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1691674185; x=1723210185; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=T7xvhE3uAP9zcEemuuR5qbVIMtgZ1XFCztNGyRcKo/w=; b=c4QdzNEM2fd+QrsWYMprrN0K1sh4O+MRsBbEc7+3m5SMcc+QVev1MIJc WzhqByBhCLrTkW9Fk+38ZdIXeN/43lzVqJbFpqLhaLCL9ZadcQxrBzQ/3 eOBiOD+zXfoLZ05bJrpXzZetu2XV0lkVYKI+8c++REO2mnQCiWga7SHqx Rb3Dq1KApnvidxUuucJ8LkU1fLdD7RGltkolNFFtCbMEumOoWZ5Ui1zg1 VVvVpma48W07TYffURFdd0qnMdo3JQ4qlAP6Gxgbr4Cy+ezPoaOaB14Fl 83pxdPbxf9m+EnmHXYRt4MbjfdMw0V8f/h6cXOxd4J33L2MTQE9AGuFc0 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10798"; a="371397273" X-IronPort-AV: E=Sophos;i="6.01,162,1684825200"; d="scan'208";a="371397273" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Aug 2023 06:18:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10797"; a="822245051" X-IronPort-AV: E=Sophos;i="6.01,162,1684825200"; d="scan'208";a="822245051" Received: from silpixa00401385.ir.intel.com ([10.237.214.14]) by FMSMGA003.fm.intel.com with ESMTP; 10 Aug 2023 06:18:14 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: david.marchand@redhat.com, stephen@networkplumber.org, Bruce Richardson Subject: [PATCH] build: deprecate enable_kmods option Date: Thu, 10 Aug 2023 14:18:09 +0100 Message-Id: <20230810131809.493973-1-bruce.richardson@intel.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 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 With the removal of the kni kernel driver, there are no longer any Linux kernel modules in our repository, leaving only modules for FreeBSD present. Since: * BSD has no issues with out-of-tree modules and * There are no in-tree equivalents for those modules in BSD there is no point in building for BSD without those modules. Therefore, we can remove the enable_kmods option, always building the kmods for BSD. We can also remove the infrastructure for Linux kmods too, since use of out-of-tree modules for Linux is not something the DPDK project wants to pursue in future. Signed-off-by: Bruce Richardson Acked-by: Stephen Hemminger Acked-by: Morten Brørup Acked-by: Thomas Monjalon Acked-by: David Marchand --- doc/guides/rel_notes/deprecation.rst | 7 ++ kernel/linux/meson.build | 103 --------------------------- kernel/meson.build | 4 +- meson.build | 6 +- meson_options.txt | 4 +- 5 files changed, 14 insertions(+), 110 deletions(-) delete mode 100644 kernel/linux/meson.build diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 317875c505..d5d04ff8d7 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -21,6 +21,13 @@ Deprecation Notices won't be possible anymore through the use of the ``disable_libs`` build option. A new build option for deprecated libraries will be introduced instead. +* build: The ``enable_kmods`` option is deprecated and will be removed in a future release. + Setting/clearing the option has no impact on the build. + Instead, kernel modules will be always built for OS's where out-of-tree kernel modules + are required for DPDK operation. + Currently, this means that modules will only be build for FreeBSD. + No modules are shipped with DPDK for either Linux or Windows. + * kvargs: The function ``rte_kvargs_process`` will get a new parameter for returning key match count. It will ease handling of no-match case. diff --git a/kernel/linux/meson.build b/kernel/linux/meson.build deleted file mode 100644 index 8d47074621..0000000000 --- a/kernel/linux/meson.build +++ /dev/null @@ -1,103 +0,0 @@ -# SPDX-License-Identifier: BSD-3-Clause -# Copyright(c) 2018 Intel Corporation - -subdirs = [] - -kernel_build_dir = get_option('kernel_dir') -kernel_source_dir = get_option('kernel_dir') -kernel_install_dir = '' -install = not meson.is_cross_build() -cross_args = [] - -if not meson.is_cross_build() - # native build - kernel_version = run_command('uname', '-r', check: true).stdout().strip() - if kernel_source_dir != '' - # Try kernel release from sources first - r = run_command('make', '-s', '-C', kernel_source_dir, 'kernelrelease', check: false) - if r.returncode() == 0 - kernel_version = r.stdout().strip() - endif - else - # use default path for native builds - kernel_source_dir = '/lib/modules/' + kernel_version + '/source' - endif - kernel_install_dir = '/lib/modules/' + kernel_version + '/extra/dpdk' - if kernel_build_dir == '' - # use default path for native builds - kernel_build_dir = '/lib/modules/' + kernel_version + '/build' - endif - - # test running make in kernel directory, using "make kernelversion" - make_returncode = run_command('make', '-sC', kernel_build_dir, - 'kernelversion', check: true).returncode() - if make_returncode != 0 - # backward compatibility: - # the headers could still be in the 'build' subdir - if not kernel_build_dir.endswith('build') and not kernel_build_dir.endswith('build/') - kernel_build_dir = join_paths(kernel_build_dir, 'build') - make_returncode = run_command('make', '-sC', kernel_build_dir, - 'kernelversion', check: true).returncode() - endif - endif - - if make_returncode != 0 - error('Cannot compile kernel modules as requested - are kernel headers installed?') - endif - - # DO ACTUAL MODULE BUILDING - foreach d:subdirs - subdir(d) - endforeach - - subdir_done() -endif - -# cross build -# if we are cross-compiling we need kernel_build_dir specified -if kernel_build_dir == '' - error('Need "kernel_dir" option for kmod compilation when cross-compiling') -endif -cross_compiler = find_program('c').path() -if cross_compiler.endswith('gcc') - cross_prefix = run_command([py3, '-c', 'print("' + cross_compiler + '"[:-3])'], - check: true).stdout().strip() -elif cross_compiler.endswith('clang') - cross_prefix = '' - found_target = false - # search for '-target' and use the arg that follows - # (i.e. the value of '-target') as cross_prefix - foreach cross_c_arg : meson.get_cross_property('c_args') - if found_target and cross_prefix == '' - cross_prefix = cross_c_arg - endif - if cross_c_arg == '-target' - found_target = true - endif - endforeach - if cross_prefix == '' - error('Did not find -target and its value in c_args in input cross-file.') - endif - linker = 'lld' - foreach cross_c_link_arg : meson.get_cross_property('c_link_args') - if cross_c_link_arg.startswith('-fuse-ld') - linker = cross_c_link_arg.split('=')[1] - endif - endforeach - cross_args += ['CC=@0@'.format(cross_compiler), 'LD=ld.@0@'.format(linker)] -else - error('Unsupported cross compiler: @0@'.format(cross_compiler)) -endif - -cross_arch = host_machine.cpu_family() -if host_machine.cpu_family() == 'aarch64' - cross_arch = 'arm64' -endif - -cross_args += ['ARCH=@0@'.format(cross_arch), - 'CROSS_COMPILE=@0@'.format(cross_prefix)] - -# DO ACTUAL MODULE BUILDING -foreach d:subdirs - subdir(d) -endforeach diff --git a/kernel/meson.build b/kernel/meson.build index b247e2df42..417735b010 100644 --- a/kernel/meson.build +++ b/kernel/meson.build @@ -1,4 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -subdir(exec_env) +if is_freebsd + subdir(exec_env) +endif diff --git a/meson.build b/meson.build index 70b54f0c98..edfdc7f276 100644 --- a/meson.build +++ b/meson.build @@ -94,10 +94,8 @@ install_subdir('examples', install_dir: get_option('datadir') + '/dpdk', exclude_files: ex_file_excludes) -# build kernel modules if enabled -if get_option('enable_kmods') - subdir('kernel') -endif +# build kernel modules +subdir('kernel') # check header includes if requested if get_option('check_includes') diff --git a/meson_options.txt b/meson_options.txt index 621e1ca9ba..f830856158 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -22,8 +22,8 @@ option('enable_drivers', type: 'string', value: '', description: 'Comma-separated list of drivers to build. If unspecified, build all drivers.') option('enable_driver_sdk', type: 'boolean', value: false, description: 'Install headers to build drivers.') -option('enable_kmods', type: 'boolean', value: false, description: - 'build kernel modules') +option('enable_kmods', type: 'boolean', value: true, description: + '[Deprecated - will be removed in future release] build kernel modules') option('examples', type: 'string', value: '', description: 'Comma-separated list of examples to build by default') option('ibverbs_link', type: 'combo', choices : ['static', 'shared', 'dlopen'], value: 'shared', description: