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 48BDAA0547; Wed, 19 May 2021 11:27:26 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C7B0140041; Wed, 19 May 2021 11:27:24 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 5BD9D4003F for ; Wed, 19 May 2021 11:27:23 +0200 (CEST) IronPort-SDR: H+9S8QngkZ+FVU7tzuRjQYyCLSQgl04e3f/35kpXsrBTy2EkofXmnr2y+MJqpF0SJzsZ1hjn+R wNZByBW7h2tw== X-IronPort-AV: E=McAfee;i="6200,9189,9988"; a="200627119" X-IronPort-AV: E=Sophos;i="5.82,312,1613462400"; d="scan'208";a="200627119" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 May 2021 02:27:21 -0700 IronPort-SDR: l6SLR/QdyDNjstSalQtEwchZ2+ZXcJ0gFN/v8q/h/9kdrTHl74ifQKM00Nsl0fwiSFefrOBcrt rqYsQgJDt4Hg== X-IronPort-AV: E=Sophos;i="5.82,312,1613462400"; d="scan'208";a="411657767" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.213.224.148]) ([10.213.224.148]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 May 2021 02:27:19 -0700 To: David Marchand , Honnappa Nagarahalli , Chengwen Feng Cc: "thomas@monjalon.net" , "dev@dpdk.org" , "jerinj@marvell.com" , Ruifeng Wang , "viktorin@rehivetech.com" , "bruce.richardson@intel.com" , "jerinjacobk@gmail.com" , "juraj.linkes@pantheon.tech" , nd References: <1620808126-18876-1-git-send-email-fengchengwen@huawei.com> <1620986039-29475-1-git-send-email-fengchengwen@huawei.com> <1620986039-29475-3-git-send-email-fengchengwen@huawei.com> <394de3ea-f0ba-a5a3-e751-be04f479281d@intel.com> From: Ferruh Yigit X-User: ferruhy Message-ID: Date: Wed, 19 May 2021 10:27:15 +0100 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v5 2/2] net/hns3: refactor SVE code compile method 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" On 5/19/2021 9:08 AM, David Marchand wrote: > On Tue, May 18, 2021 at 6:28 PM Ferruh Yigit wrote: >> >> On 5/14/2021 3:12 PM, Honnappa Nagarahalli wrote: >>> >>> >>>> >>>> Currently, the SVE code is compiled only when -march supports SVE (e.g. '- >>>> march=armv8.2a+sve'), there maybe some problem[1] with this approach. >>>> >>>> The solution: >>>> a. If the minimum instruction set support SVE then compiles it. >>>> b. Else if the compiler support SVE then compiles it. >>>> c. Otherwise don't compile it. >>>> >>>> [1] https://mails.dpdk.org/archives/dev/2021-April/208189.html >>>> >>>> Fixes: 8c25b02b082a ("net/hns3: fix enabling SVE Rx/Tx") >>>> Fixes: 952ebacce4f2 ("net/hns3: support SVE Rx") >>>> Cc: stable@dpdk.org >>>> >>>> Signed-off-by: Chengwen Feng >>> Looks good to me. >>> Reviewed-by: Honnappa Nagarahalli >>> >> >> Applied to dpdk-next-net/main, thanks. >> >> (Only this patch, 2/2, applied, not whole set) > > UNH caught a build regression on next-net and I think this is due to this patch: > https://lab.dpdk.org/results/dashboard/tarballs/15259/ > Thanks David for heads up, yet it the reason of the error seems this patch, so I will drop it from the next-net. A few details from the error: Default used compiler flag does not request SVE support, it is: Compiler for C supports arguments -march=armv8.1-a+crc+crypto: YES Compiler for C supports arguments -mcpu=thunderx2t99: YES Message: Using machine args: ['-march=armv8.1-a+crc+crypto', '-mcpu=thunderx2t99'] It is detected that compiler can support SVE: Compiler for C supports arguments -march=armv8.2-a+sve: YES Because of the SVE support, driver tries to build 'hns3_rxtx_vec_sve.c' with SVE support, even user doesn't request SVE, this is the design in the patch, build command (stripped): -march=armv8.1-a+crc+crypto -mcpu=thunderx2t99 -DCC_SVE_SUPPORT -march=armv8.2-a+sve ../drivers/net/hns3/hns3_rxtx_vec_sve.c There are two errors: 1) appended '-march=armv8.2-a+sve' compiler argument to build 'hns3_rxtx_vec_sve.c' is conflicting with rest of the command: cc1: error: switch ‘-mcpu=armv8.1-a’ conflicts with ‘-march=armv8.2-a’ switch [-Werror] 2) SVE header is missing. When compiler supports the SVE, not sure why the header is missing: ../drivers/net/hns3/hns3_rxtx_vec_sve.c:5:10: fatal error: arm_sve.h: No such file or directory 5 | #include | ^~~~~~~~~~~ > FAILED: drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o > ccache cc -Idrivers/net/hns3/libhns3_sve_lib.a.p -Idrivers/net/hns3 > -I../drivers/net/hns3 -Ilib/ethdev -I../lib/ethdev -I. -I.. -Iconfig > -I../config -Ilib/eal/include -I../lib/eal/include > -Ilib/eal/linux/include -I../lib/eal/linux/include > -Ilib/eal/arm/include -I../lib/eal/arm/include -Ilib/eal/common > -I../lib/eal/common -Ilib/eal -I../lib/eal -Ilib/kvargs > -I../lib/kvargs -Ilib/metrics -I../lib/metrics -Ilib/telemetry > -I../lib/telemetry -Ilib/net -I../lib/net -Ilib/mbuf -I../lib/mbuf > -Ilib/mempool -I../lib/mempool -Ilib/ring -I../lib/ring -Ilib/meter > -I../lib/meter -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 > -Wall -Winvalid-pch -Werror -O3 -include rte_config.h -Wextra > -Wcast-qual -Wdeprecated -Wformat -Wformat-nonliteral > -Wformat-security -Wmissing-declarations -Wmissing-prototypes > -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare > -Wstrict-prototypes -Wundef -Wwrite-strings > -Wno-address-of-packed-member -Wno-packed-not-aligned > -Wno-missing-field-initializers -D_GNU_SOURCE -fPIC > -march=armv8.1-a+crc+crypto -mcpu=thunderx2t99 > -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API -Wno-format-truncation > -DCC_SVE_SUPPORT -march=armv8.2-a+sve -MD -MQ > drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o -MF > drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o.d -o > drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o -c > ../drivers/net/hns3/hns3_rxtx_vec_sve.c > cc1: error: switch ‘-mcpu=armv8.1-a’ conflicts with ‘-march=armv8.2-a’ > switch [-Werror] > ../drivers/net/hns3/hns3_rxtx_vec_sve.c:5:10: fatal error: arm_sve.h: > No such file or directory > 5 | #include > | ^~~~~~~~~~~ > cc1: all warnings being treated as errors > compilation terminated. > > > I see a similar issue on my fc32, cross compiling with following gcc: > $ aarch64-linux-gnu-gcc --version > aarch64-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture > 8.3-2019.03 (arm-rel-8.36)) 8.3.0 > Copyright (C) 2018 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > [74/503] Compiling C object > drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o > FAILED: drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o > aarch64-linux-gnu-gcc -Idrivers/net/hns3/libhns3_sve_lib.a.p > -Idrivers/net/hns3 -I../../dpdk/drivers/net/hns3 -Ilib/ethdev > -I../../dpdk/lib/ethdev -I. -I../../dpdk -Iconfig -I../../dpdk/config > -Ilib/eal/include -I../../dpdk/lib/eal/include -Ilib/eal/linux/include > -I../../dpdk/lib/eal/linux/include -Ilib/eal/arm/include > -I../../dpdk/lib/eal/arm/include -Ilib/eal/common > -I../../dpdk/lib/eal/common -Ilib/eal -I../../dpdk/lib/eal > -Ilib/kvargs -I../../dpdk/lib/kvargs -Ilib/metrics > -I../../dpdk/lib/metrics -Ilib/telemetry -I../../dpdk/lib/telemetry > -Ilib/net -I../../dpdk/lib/net -Ilib/mbuf -I../../dpdk/lib/mbuf > -Ilib/mempool -I../../dpdk/lib/mempool -Ilib/ring > -I../../dpdk/lib/ring -Ilib/meter -I../../dpdk/lib/meter > -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall > -Winvalid-pch -Werror -O2 -g -include rte_config.h -Wextra -Wcast-qual > -Wdeprecated -Wformat -Wformat-nonliteral -Wformat-security > -Wmissing-declarations -Wmissing-prototypes -Wnested-externs > -Wold-style-definition -Wpointer-arith -Wsign-compare > -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned > -Wno-missing-field-initializers -D_GNU_SOURCE -fPIC -march=armv8-a+crc > -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API -Wno-format-truncation > -DCC_SVE_SUPPORT -march=armv8.2-a+sve -MD -MQ > drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o -MF > drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o.d -o > drivers/net/hns3/libhns3_sve_lib.a.p/hns3_rxtx_vec_sve.c.o -c > ../../dpdk/drivers/net/hns3/hns3_rxtx_vec_sve.c > ../../dpdk/drivers/net/hns3/hns3_rxtx_vec_sve.c:5:10: fatal error: > arm_sve.h: No such file or directory > #include > ^~~~~~~~~~~ > compilation terminated. > >