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 69AD0A0547; Wed, 19 May 2021 14:16:57 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5253740041; Wed, 19 May 2021 14:16:57 +0200 (CEST) Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32]) by mails.dpdk.org (Postfix) with ESMTP id 9CD814003F for ; Wed, 19 May 2021 14:16:55 +0200 (CEST) Received: from dggems703-chm.china.huawei.com (unknown [172.30.72.60]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4FlWyK01ZkzmXJq; Wed, 19 May 2021 20:14:33 +0800 (CST) Received: from dggpeml500024.china.huawei.com (7.185.36.10) by dggems703-chm.china.huawei.com (10.3.19.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 19 May 2021 20:16:49 +0800 Received: from [127.0.0.1] (10.40.190.165) by dggpeml500024.china.huawei.com (7.185.36.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 19 May 2021 20:16:48 +0800 To: Ferruh Yigit , David Marchand , Honnappa Nagarahalli 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: fengchengwen Message-ID: <6a61d582-ca9b-42bf-9a5a-b0f106919f25@huawei.com> Date: Wed, 19 May 2021 20:16:48 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [10.40.190.165] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To dggpeml500024.china.huawei.com (7.185.36.10) X-CFilter-Loop: Reflected 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 2021/5/19 17:27, Ferruh Yigit wrote: > 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 > | ^~~~~~~~~~~ > Sorry to introduce compilation errors. Already fix in new patch: [dpdk-dev] [PATCH v2] net/hns3: fix compile error with gcc8.3 and thunderx2 @David could you help test? We also found compile error with gcc8.3 with arm64_kunpeng930_linux_gcc (-march=-march=armv8.2-a+crypto+sve): In file included from ../dpdk-next-net/lib/eal/common/eal_common_options.c:38: ../dpdk-next-net/lib/eal/arm/include/rte_vect.h:13:10: fatal error: arm_sve.h: No such file or directory #include ^~~~~~~~~~~ compilation terminated. [126/2250] Compiling C object lib/librte_net.a.p/net_rte_net_crc.c.o the corresponding code: #ifdef __ARM_FEATURE_SVE #include #endif this is because gcc8.3 defined __ARM_FEATURE_SVE but it can't compile ACLE SVE code. I will fix it later in 21.08 Best regards > >> 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. >> >> > > > . >