Message ID | 1617957679-7751-1-git-send-email-juraj.linkes@pantheon.tech (mailing list archive) |
---|---|
Headers |
Return-Path: <dev-bounces@dpdk.org> 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 D9DF6A0579; Fri, 9 Apr 2021 10:41:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C689B1413EF; Fri, 9 Apr 2021 10:41:25 +0200 (CEST) Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20]) by mails.dpdk.org (Postfix) with ESMTP id CC0A41413EA for <dev@dpdk.org>; Fri, 9 Apr 2021 10:41:24 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by lb.pantheon.sk (Postfix) with ESMTP id F3D0BC5642; Fri, 9 Apr 2021 10:41:21 +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 OjIpRFCBhE4Y; Fri, 9 Apr 2021 10:41:20 +0200 (CEST) Received: from service-node1.lab.pantheon.local (unknown [46.229.239.141]) by lb.pantheon.sk (Postfix) with ESMTP id CB2F0C4F1E; Fri, 9 Apr 2021 10:41:19 +0200 (CEST) From: =?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech> 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_Linke=C5=A1?= <juraj.linkes@pantheon.tech> Date: Fri, 9 Apr 2021 10:41:16 +0200 Message-Id: <1617957679-7751-1-git-send-email-juraj.linkes@pantheon.tech> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1617950146-7307-1-git-send-email-juraj.linkes@pantheon.tech> References: <1617950146-7307-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 v19 0/3] Arm build options rework X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Series | Arm build options rework | |
Message
Juraj Linkeš
April 9, 2021, 8:41 a.m. UTC
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. We also want to be able to enable/disable which drivers 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. The current implementation adds/supports the following: * x86 -> aarch64 cross build with added config options/enabled or disabled drivers/libs * aarch64 -> aarch64 builds for a different SoCs using meson -Dplatform option or using a cross file v16: Only three commits remaining - updated the cover letter. Renamed the 'soc' meson option to 'platform'. Added the support for enabling a particular set of drivers. Aligned enabling and disabling with the command line option so that wildcards can be used. v17: Removed unnecessary comments in "build: disable/enable drivers in Arm builds". Also always enabled two drivers which break the build if disabled. v18: Rebased. v19: Updated 3/3 with more up to date MAX_LCORE and MAX_NUMA_NODES for neoverse-n1. Juraj Linkeš (3): build: disable/enable drivers in Arm builds build: add 'platform' meson option and Arm SoC config config: fix Arm implementer and its SoCs config/arm/arm64_armada_linux_gcc | 6 +- config/arm/arm64_armv8_linux_clang_ubuntu1804 | 3 +- config/arm/arm64_armv8_linux_gcc | 5 +- config/arm/arm64_bluefield_linux_gcc | 6 +- config/arm/arm64_dpaa_linux_gcc | 6 +- config/arm/arm64_emag_linux_gcc | 5 +- config/arm/arm64_graviton2_linux_gcc | 6 +- config/arm/arm64_n1sdp_linux_gcc | 6 +- config/arm/arm64_n2_linux_gcc | 6 +- config/arm/arm64_octeontx2_linux_gcc | 6 +- config/arm/arm64_stingray_linux_gcc | 6 +- config/arm/arm64_thunderx2_linux_gcc | 5 +- config/arm/arm64_thunderxt88_linux_gcc | 5 +- config/arm/meson.build | 180 +++++++++++++++--- .../linux_gsg/cross_build_dpdk_for_arm64.rst | 76 +++----- drivers/meson.build | 49 ++++- meson.build | 2 + meson_options.txt | 4 + 18 files changed, 242 insertions(+), 140 deletions(-)
Comments
On Fri, Apr 9, 2021 at 2:11 PM Juraj Linkeš <juraj.linkes@pantheon.tech> wrote: > > 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. > > We also want to be able to enable/disable which drivers 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. > > The current implementation adds/supports the following: > * x86 -> aarch64 cross build with added config options/enabled or > disabled drivers/libs > * aarch64 -> aarch64 builds for a different SoCs using meson -Dplatform > option or using a cross file > > v16: > Only three commits remaining - updated the cover letter. > Renamed the 'soc' meson option to 'platform'. > Added the support for enabling a particular set of drivers. > Aligned enabling and disabling with the command line option so that > wildcards can be used. > > v17: > Removed unnecessary comments in "build: disable/enable drivers in Arm > builds". Also always enabled two drivers which break the build if > disabled. > > v18: > Rebased. > > v19: > Updated 3/3 with more up to date MAX_LCORE and MAX_NUMA_NODES for > neoverse-n1. There are other SoC target addition patches are blocked by this series. This series looks good to me. Request to merge this before RC1. Tested for octeontx2/Thunderx. Series-Tested-by: Jerin Jacob <jerinj@marvell.com> > > Juraj Linkeš (3): > build: disable/enable drivers in Arm builds > build: add 'platform' meson option and Arm SoC config > config: fix Arm implementer and its SoCs > > config/arm/arm64_armada_linux_gcc | 6 +- > config/arm/arm64_armv8_linux_clang_ubuntu1804 | 3 +- > config/arm/arm64_armv8_linux_gcc | 5 +- > config/arm/arm64_bluefield_linux_gcc | 6 +- > config/arm/arm64_dpaa_linux_gcc | 6 +- > config/arm/arm64_emag_linux_gcc | 5 +- > config/arm/arm64_graviton2_linux_gcc | 6 +- > config/arm/arm64_n1sdp_linux_gcc | 6 +- > config/arm/arm64_n2_linux_gcc | 6 +- > config/arm/arm64_octeontx2_linux_gcc | 6 +- > config/arm/arm64_stingray_linux_gcc | 6 +- > config/arm/arm64_thunderx2_linux_gcc | 5 +- > config/arm/arm64_thunderxt88_linux_gcc | 5 +- > config/arm/meson.build | 180 +++++++++++++++--- > .../linux_gsg/cross_build_dpdk_for_arm64.rst | 76 +++----- > drivers/meson.build | 49 ++++- > meson.build | 2 + > meson_options.txt | 4 + > 18 files changed, 242 insertions(+), 140 deletions(-) > > -- > 2.20.1 >
On 2021/4/9 16:41, Juraj Linkeš wrote: > 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. > > We also want to be able to enable/disable which drivers 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. > > The current implementation adds/supports the following: > * x86 -> aarch64 cross build with added config options/enabled or > disabled drivers/libs > * aarch64 -> aarch64 builds for a different SoCs using meson -Dplatform > option or using a cross file > > v16: > Only three commits remaining - updated the cover letter. > Renamed the 'soc' meson option to 'platform'. > Added the support for enabling a particular set of drivers. > Aligned enabling and disabling with the command line option so that > wildcards can be used. > > v17: > Removed unnecessary comments in "build: disable/enable drivers in Arm > builds". Also always enabled two drivers which break the build if > disabled. > > v18: > Rebased. > > v19: > Updated 3/3 with more up to date MAX_LCORE and MAX_NUMA_NODES for > neoverse-n1. > It seems that our SoC configuration patches are block by this series: https://patchwork.dpdk.org/project/dpdk/list/?series=15918 I reworked our configuration based on this series and then tested it on our platform (i.e. Kunpeng 920/ Kunpeng 930 SoC). Tested-by: Chengchang Tang <tangchengchang@huawei.com> > Juraj Linkeš (3): > build: disable/enable drivers in Arm builds > build: add 'platform' meson option and Arm SoC config > config: fix Arm implementer and its SoCs > > config/arm/arm64_armada_linux_gcc | 6 +- > config/arm/arm64_armv8_linux_clang_ubuntu1804 | 3 +- > config/arm/arm64_armv8_linux_gcc | 5 +- > config/arm/arm64_bluefield_linux_gcc | 6 +- > config/arm/arm64_dpaa_linux_gcc | 6 +- > config/arm/arm64_emag_linux_gcc | 5 +- > config/arm/arm64_graviton2_linux_gcc | 6 +- > config/arm/arm64_n1sdp_linux_gcc | 6 +- > config/arm/arm64_n2_linux_gcc | 6 +- > config/arm/arm64_octeontx2_linux_gcc | 6 +- > config/arm/arm64_stingray_linux_gcc | 6 +- > config/arm/arm64_thunderx2_linux_gcc | 5 +- > config/arm/arm64_thunderxt88_linux_gcc | 5 +- > config/arm/meson.build | 180 +++++++++++++++--- > .../linux_gsg/cross_build_dpdk_for_arm64.rst | 76 +++----- > drivers/meson.build | 49 ++++- > meson.build | 2 + > meson_options.txt | 4 + > 18 files changed, 242 insertions(+), 140 deletions(-) >
<snip> > > > It seems that our SoC configuration patches are block by this series: > https://patchwork.dpdk.org/project/dpdk/list/?series=15918 Thank you and appreciate your help. Appreciate updating your patch according to this series. > > I reworked our configuration based on this series and then tested it on our > platform (i.e. Kunpeng 920/ Kunpeng 930 SoC). > > Tested-by: Chengchang Tang <tangchengchang@huawei.com> > > > Juraj Linkeš (3): > > build: disable/enable drivers in Arm builds > > build: add 'platform' meson option and Arm SoC config > > config: fix Arm implementer and its SoCs > > > > config/arm/arm64_armada_linux_gcc | 6 +- > > config/arm/arm64_armv8_linux_clang_ubuntu1804 | 3 +- > > config/arm/arm64_armv8_linux_gcc | 5 +- > > config/arm/arm64_bluefield_linux_gcc | 6 +- > > config/arm/arm64_dpaa_linux_gcc | 6 +- > > config/arm/arm64_emag_linux_gcc | 5 +- > > config/arm/arm64_graviton2_linux_gcc | 6 +- > > config/arm/arm64_n1sdp_linux_gcc | 6 +- > > config/arm/arm64_n2_linux_gcc | 6 +- > > config/arm/arm64_octeontx2_linux_gcc | 6 +- > > config/arm/arm64_stingray_linux_gcc | 6 +- > > config/arm/arm64_thunderx2_linux_gcc | 5 +- > > config/arm/arm64_thunderxt88_linux_gcc | 5 +- > > config/arm/meson.build | 180 +++++++++++++++--- > > .../linux_gsg/cross_build_dpdk_for_arm64.rst | 76 +++----- > > drivers/meson.build | 49 ++++- > > meson.build | 2 + > > meson_options.txt | 4 + > > 18 files changed, 242 insertions(+), 140 deletions(-) > >
Hi Juraj, >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. > >We also want to be able to enable/disable which drivers 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. > >The current implementation adds/supports the following: >* x86 -> aarch64 cross build with added config options/enabled or > disabled drivers/libs >* aarch64 -> aarch64 builds for a different SoCs using meson -Dplatform > option or using a cross file > I am unable to apply this series on main branch. I guess it has to be rebased again? dpdk.org git-pw series apply 16235 Applying: build: disable/enable drivers in Arm builds Applying: build: add 'platform' meson option and Arm SoC config error: sha1 information is lacking or useless (config/arm/meson.build). error: could not build fake ancestor Patch failed at 0002 build: add 'platform' meson option and Arm SoC config Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". commit 83f9be10f237890587fb7639484ea757c20fdad8 (origin/main, origin/HEAD) Author: Wisam Jaddo <wisamm@nvidia.com> Date: Sun Mar 14 11:54:27 2021 +0200 app/flow-perf: fix encap/decap actions >v16: >Only three commits remaining - updated the cover letter. >Renamed the 'soc' meson option to 'platform'. >Added the support for enabling a particular set of drivers. >Aligned enabling and disabling with the command line option so that >wildcards can be used. > >v17: >Removed unnecessary comments in "build: disable/enable drivers in >Arm >builds". Also always enabled two drivers which break the build if >disabled. > >v18: >Rebased. > >v19: >Updated 3/3 with more up to date MAX_LCORE and >MAX_NUMA_NODES for >neoverse-n1. > >Juraj Linkeš (3): > build: disable/enable drivers in Arm builds > build: add 'platform' meson option and Arm SoC config > config: fix Arm implementer and its SoCs > > config/arm/arm64_armada_linux_gcc | 6 +- > config/arm/arm64_armv8_linux_clang_ubuntu1804 | 3 +- > config/arm/arm64_armv8_linux_gcc | 5 +- > config/arm/arm64_bluefield_linux_gcc | 6 +- > config/arm/arm64_dpaa_linux_gcc | 6 +- > config/arm/arm64_emag_linux_gcc | 5 +- > config/arm/arm64_graviton2_linux_gcc | 6 +- > config/arm/arm64_n1sdp_linux_gcc | 6 +- > config/arm/arm64_n2_linux_gcc | 6 +- > config/arm/arm64_octeontx2_linux_gcc | 6 +- > config/arm/arm64_stingray_linux_gcc | 6 +- > config/arm/arm64_thunderx2_linux_gcc | 5 +- > config/arm/arm64_thunderxt88_linux_gcc | 5 +- > config/arm/meson.build | 180 +++++++++++++++--- > .../linux_gsg/cross_build_dpdk_for_arm64.rst | 76 +++----- > drivers/meson.build | 49 ++++- > meson.build | 2 + > meson_options.txt | 4 + > 18 files changed, 242 insertions(+), 140 deletions(-) > >-- >2.20.1