Message ID | 1553581011-94181-1-git-send-email-wenzhuo.lu@intel.com (mailing list archive) |
---|---|
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4B2E7326D; Tue, 26 Mar 2019 07:11:23 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id E24662C2F for <dev@dpdk.org>; Tue, 26 Mar 2019 07:11:20 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Mar 2019 23:11:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,271,1549958400"; d="scan'208";a="158420066" Received: from dpdk26.sh.intel.com ([10.67.110.164]) by fmsmga001.fm.intel.com with ESMTP; 25 Mar 2019 23:11:18 -0700 From: Wenzhuo Lu <wenzhuo.lu@intel.com> To: dev@dpdk.org Cc: Wenzhuo Lu <wenzhuo.lu@intel.com> Date: Tue, 26 Mar 2019 14:16:43 +0800 Message-Id: <1553581011-94181-1-git-send-email-wenzhuo.lu@intel.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1551340136-83843-1-git-send-email-wenzhuo.lu@intel.com> References: <1551340136-83843-1-git-send-email-wenzhuo.lu@intel.com> Subject: [dpdk-dev] [PATCH v7 0/8] Support vector instructions on ICE X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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 |
Support vector instructions on ICE
|
|
Message
Wenzhuo Lu
March 26, 2019, 6:16 a.m. UTC
Use SSE and AVX2 instructions in ICE RX and TX path. --- v2: - Updated feature doc. - Fixed checklog and checkpatch issues. v3: - Fixed potential compile issue on non-X86 platform. v4: - Removed compile configure, CONFIG_RTE_LIBRTE_ICE_INC_VECTOR. - Fixed checkpatch warnings. - Added more explanation of vector path in the device document. - Some other minor change. v5: - Fixed a compile issue. - Fixed a doc build warning. v6: - Added prefix "ice_" for ICE specific functions. - Added unlikely for rarely used code. v7: - Reserved the original buffer release functions. Wenzhuo Lu (8): net/ice: fix Tx function setting net/ice: add pointer for queue buffer release net/ice: support vector SSE in RX net/ice: support Rx scatter SSE vector net/ice: support Tx SSE vector net/ice: support Rx AVX2 vector net/ice: support Rx scatter AVX2 vector net/ice: support vector AVX2 in TX doc/guides/nics/features/ice_vec.ini | 35 ++ doc/guides/nics/ice.rst | 18 + doc/guides/rel_notes/release_19_05.rst | 4 + drivers/net/ice/Makefile | 22 + drivers/net/ice/ice_ethdev.c | 3 +- drivers/net/ice/ice_ethdev.h | 2 + drivers/net/ice/ice_rxtx.c | 92 +++- drivers/net/ice/ice_rxtx.h | 39 +- drivers/net/ice/ice_rxtx_vec_avx2.c | 844 +++++++++++++++++++++++++++++++++ drivers/net/ice/ice_rxtx_vec_common.h | 293 ++++++++++++ drivers/net/ice/ice_rxtx_vec_sse.c | 660 ++++++++++++++++++++++++++ drivers/net/ice/meson.build | 19 + 12 files changed, 2023 insertions(+), 8 deletions(-) create mode 100644 doc/guides/nics/features/ice_vec.ini create mode 100644 drivers/net/ice/ice_rxtx_vec_avx2.c create mode 100644 drivers/net/ice/ice_rxtx_vec_common.h create mode 100644 drivers/net/ice/ice_rxtx_vec_sse.c
Comments
On 3/26/2019 6:16 AM, Wenzhuo Lu wrote: > Use SSE and AVX2 instructions in ICE RX and TX path. > > --- > v2: > - Updated feature doc. > - Fixed checklog and checkpatch issues. > > v3: > - Fixed potential compile issue on non-X86 platform. > > v4: > - Removed compile configure, CONFIG_RTE_LIBRTE_ICE_INC_VECTOR. > - Fixed checkpatch warnings. > - Added more explanation of vector path in the device document. > - Some other minor change. > > v5: > - Fixed a compile issue. > - Fixed a doc build warning. > > v6: > - Added prefix "ice_" for ICE specific functions. > - Added unlikely for rarely used code. > > v7: > - Reserved the original buffer release functions. > > Wenzhuo Lu (8): > net/ice: fix Tx function setting > net/ice: add pointer for queue buffer release > net/ice: support vector SSE in RX > net/ice: support Rx scatter SSE vector > net/ice: support Tx SSE vector > net/ice: support Rx AVX2 vector > net/ice: support Rx scatter AVX2 vector > net/ice: support vector AVX2 in TX This version (v7) pulled from next-net-intel to next-net.
26/03/2019 10:50, Ferruh Yigit: > > Wenzhuo Lu (8): > > net/ice: fix Tx function setting > > net/ice: add pointer for queue buffer release > > net/ice: support vector SSE in RX > > net/ice: support Rx scatter SSE vector > > net/ice: support Tx SSE vector > > net/ice: support Rx AVX2 vector > > net/ice: support Rx scatter AVX2 vector > > net/ice: support vector AVX2 in TX > > This version (v7) pulled from next-net-intel to next-net. I assume these patches have been tested, or at least compiled. However, when running devtools/test-meson-builds.sh, there is a compilation error for build-x86-default: In file included from ../drivers/net/ice/ice_ethdev.h:10: rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found It can be fixed in net/ice: support Rx AVX2 vector by adding static_rte_pci and static_rte_bus_pci to the dependencies. I fixed it even better in net/ice: support vector SSE in Rx by replacing the useless include of rte_ethdev_pci.h in ice_ethdev.h with rte_ethdev_driver.h. I could just reject the next-net tree, but I don't really have such option if we want to close 19.05-rc1 quickly. In summary, I am spending my Sunday hours to fix the mess in your driver which was supposed to be tested before submitting, plus before merge in next-net-intel, plus compilation-tested before pull in next-net. I don't know what failed in the process, but I really don't like it. I don't want to see any new patch for ice PMD in 19.05 cycle. If you really need some fixes in 19.05 (very likely given the mass code drop you are doing few days before the -rc1 deadline), then I advise you to double check everything and make commits fully justified and explained. Sorry for the bad mood, and I hope it won't happen again soon.
Hi Thomas, > -----Original Message----- > From: Thomas Monjalon [mailto:thomas@monjalon.net] > Sent: Sunday, March 31, 2019 11:52 PM > To: Yigit, Ferruh <ferruh.yigit@intel.com>; Lu, Wenzhuo > <wenzhuo.lu@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com> > Cc: dev@dpdk.org; O'Hare, Cathal <cathal.ohare@intel.com>; Mcnamara, > John <john.mcnamara@intel.com> > Subject: Re: [dpdk-dev] [PATCH v7 0/8] Support vector instructions on ICE > > 26/03/2019 10:50, Ferruh Yigit: > > > Wenzhuo Lu (8): > > > net/ice: fix Tx function setting > > > net/ice: add pointer for queue buffer release > > > net/ice: support vector SSE in RX > > > net/ice: support Rx scatter SSE vector > > > net/ice: support Tx SSE vector > > > net/ice: support Rx AVX2 vector > > > net/ice: support Rx scatter AVX2 vector > > > net/ice: support vector AVX2 in TX > > > > This version (v7) pulled from next-net-intel to next-net. > > I assume these patches have been tested, or at least compiled. > However, when running devtools/test-meson-builds.sh, there is a > compilation error for build-x86-default: > > In file included from ../drivers/net/ice/ice_ethdev.h:10: > rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found > > It can be fixed in > net/ice: support Rx AVX2 vector > by adding static_rte_pci and static_rte_bus_pci to the dependencies. > I fixed it even better in > net/ice: support vector SSE in Rx > by replacing the useless include of rte_ethdev_pci.h in ice_ethdev.h with > rte_ethdev_driver.h. Really sorry for this. Although I don't understand the issue. I do use meson build and it works. In my server, no matter using " rte_ethdev_pci.h " or " rte_ethdev_driver.h ", it works fine. To be honest, the compile error looks weird to me. Looks like any file which includes " rte_ethdev_pci.h " can hit the same problem. But I cannot tell anything, as I cannot reproduce the error. Again, really appreciate for root causing and fixing the error but not rejecting the patches. > > I could just reject the next-net tree, but I don't really have such option if we > want to close 19.05-rc1 quickly. > > In summary, I am spending my Sunday hours to fix the mess in your driver > which was supposed to be tested before submitting, plus before merge in > next-net-intel, plus compilation-tested before pull in next-net. > I don't know what failed in the process, but I really don't like it. > I don't want to see any new patch for ice PMD in 19.05 cycle. > If you really need some fixes in 19.05 (very likely given the mass code drop > you are doing few days before the -rc1 deadline), then I advise you to > double check everything and make commits fully justified and explained. > > Sorry for the bad mood, and I hope it won't happen again soon. >
On 3/31/2019 4:52 PM, Thomas Monjalon wrote: > 26/03/2019 10:50, Ferruh Yigit: >>> Wenzhuo Lu (8): >>> net/ice: fix Tx function setting >>> net/ice: add pointer for queue buffer release >>> net/ice: support vector SSE in RX >>> net/ice: support Rx scatter SSE vector >>> net/ice: support Tx SSE vector >>> net/ice: support Rx AVX2 vector >>> net/ice: support Rx scatter AVX2 vector >>> net/ice: support vector AVX2 in TX >> >> This version (v7) pulled from next-net-intel to next-net. > > I assume these patches have been tested, or at least compiled. > However, when running devtools/test-meson-builds.sh, there is a > compilation error for build-x86-default: > > In file included from ../drivers/net/ice/ice_ethdev.h:10: > rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found I tested this with meson but not able to catch the issue. Perhaps for my case dependencies were build fast enough to cause a problem. > > It can be fixed in > net/ice: support Rx AVX2 vector > by adding static_rte_pci and static_rte_bus_pci to the dependencies. > I fixed it even better in > net/ice: support vector SSE in Rx > by replacing the useless include of rte_ethdev_pci.h in ice_ethdev.h > with rte_ethdev_driver.h. Thanks. > > I could just reject the next-net tree, but I don't really have such option > if we want to close 19.05-rc1 quickly. > > In summary, I am spending my Sunday hours to fix the mess in your driver > which was supposed to be tested before submitting, plus before merge in > next-net-intel, plus compilation-tested before pull in next-net. > I don't know what failed in the process, but I really don't like it. > I don't want to see any new patch for ice PMD in 19.05 cycle. > If you really need some fixes in 19.05 (very likely given the mass > code drop you are doing few days before the -rc1 deadline), > then I advise you to double check everything and make commits fully > justified and explained. > > Sorry for the bad mood, and I hope it won't happen again soon. > >
01/04/2019 14:51, Ferruh Yigit: > On 3/31/2019 4:52 PM, Thomas Monjalon wrote: > > 26/03/2019 10:50, Ferruh Yigit: > >>> Wenzhuo Lu (8): > >>> net/ice: fix Tx function setting > >>> net/ice: add pointer for queue buffer release > >>> net/ice: support vector SSE in RX > >>> net/ice: support Rx scatter SSE vector > >>> net/ice: support Tx SSE vector > >>> net/ice: support Rx AVX2 vector > >>> net/ice: support Rx scatter AVX2 vector > >>> net/ice: support vector AVX2 in TX > >> > >> This version (v7) pulled from next-net-intel to next-net. > > > > I assume these patches have been tested, or at least compiled. > > However, when running devtools/test-meson-builds.sh, there is a > > compilation error for build-x86-default: > > > > In file included from ../drivers/net/ice/ice_ethdev.h:10: > > rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found > > I tested this with meson but not able to catch the issue. Perhaps for my case > dependencies were build fast enough to cause a problem. No, it's not a matter of speed. Are you running devtools/test-meson-builds.sh ?
On Mon, Apr 01, 2019 at 01:51:38PM +0100, Ferruh Yigit wrote: > On 3/31/2019 4:52 PM, Thomas Monjalon wrote: > > 26/03/2019 10:50, Ferruh Yigit: > >>> Wenzhuo Lu (8): > >>> net/ice: fix Tx function setting > >>> net/ice: add pointer for queue buffer release > >>> net/ice: support vector SSE in RX > >>> net/ice: support Rx scatter SSE vector > >>> net/ice: support Tx SSE vector > >>> net/ice: support Rx AVX2 vector > >>> net/ice: support Rx scatter AVX2 vector > >>> net/ice: support vector AVX2 in TX > >> > >> This version (v7) pulled from next-net-intel to next-net. > > > > I assume these patches have been tested, or at least compiled. > > However, when running devtools/test-meson-builds.sh, there is a > > compilation error for build-x86-default: > > > > In file included from ../drivers/net/ice/ice_ethdev.h:10: > > rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found > > I tested this with meson but not able to catch the issue. Perhaps for my case > dependencies were build fast enough to cause a problem. > That should be a problem with the meson builds. While with make builds, the headers files are picked up after they are copied to the "include" directory by the build process, in meson no such copying occurs and the header files are picked up by having the paths to them passed in the "dependency object" to each build. If the dependency does not exist then the build will never pass, irrespective of ordering, and if the dependency exists, the build will always find the header in its original location. [The biggest benefit of this is that when building with ninja there are no dependencies between the individual .c files - each one can be compiled in parallel with all the others. It's only at the linking step that we need to wait for previous jobs to complete] In terms of this specific error with the header - did it get root caused? Since it occurs on the "default" path, I'd suggest the fallback handling in the meson.build file for the absense of AVX may be faulty, e.g. are you replacing c flags or dependencies rather than appending to them? /Bruce
On 4/1/2019 3:39 PM, Bruce Richardson wrote: > On Mon, Apr 01, 2019 at 01:51:38PM +0100, Ferruh Yigit wrote: >> On 3/31/2019 4:52 PM, Thomas Monjalon wrote: >>> 26/03/2019 10:50, Ferruh Yigit: >>>>> Wenzhuo Lu (8): >>>>> net/ice: fix Tx function setting >>>>> net/ice: add pointer for queue buffer release >>>>> net/ice: support vector SSE in RX >>>>> net/ice: support Rx scatter SSE vector >>>>> net/ice: support Tx SSE vector >>>>> net/ice: support Rx AVX2 vector >>>>> net/ice: support Rx scatter AVX2 vector >>>>> net/ice: support vector AVX2 in TX >>>> >>>> This version (v7) pulled from next-net-intel to next-net. >>> >>> I assume these patches have been tested, or at least compiled. >>> However, when running devtools/test-meson-builds.sh, there is a >>> compilation error for build-x86-default: >>> >>> In file included from ../drivers/net/ice/ice_ethdev.h:10: >>> rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found >> >> I tested this with meson but not able to catch the issue. Perhaps for my case >> dependencies were build fast enough to cause a problem. >> > > That should be a problem with the meson builds. While with make builds, the > headers files are picked up after they are copied to the "include" > directory by the build process, in meson no such copying occurs and the > header files are picked up by having the paths to them passed in the > "dependency object" to each build. If the dependency does not exist then > the build will never pass, irrespective of ordering, and if the dependency > exists, the build will always find the header in its original location. I was checking this and recognized that no copying is happening. And I can see many PMDs are using this header [1], not sure why ice is failing. > > [The biggest benefit of this is that when building with ninja there are no > dependencies between the individual .c files - each one can be compiled > in parallel with all the others. It's only at the linking step that we need > to wait for previous jobs to complete] > > In terms of this specific error with the header - did it get root caused? > Since it occurs on the "default" path, I'd suggest the fallback handling in > the meson.build file for the absense of AVX may be faulty, e.g. are you > replacing c flags or dependencies rather than appending to them? Trying to find out the root cause, but as you said it occurs on the 'default' path only, and taking into account that there is not copying dependent headers, I am not able to find it yet, checking. [1] $ git grep rte_ethdev_pci.h drivers/net/ark/ark_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/atlantic/atl_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/avp/avp_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/axgbe/axgbe_common.h:#include <rte_ethdev_pci.h> drivers/net/bnx2x/bnx2x_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/bnxt/bnxt_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/cxgbe/cxgbe_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/cxgbe/cxgbe_main.c:#include <rte_ethdev_pci.h> drivers/net/cxgbe/cxgbevf_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/cxgbe/cxgbevf_main.c:#include <rte_ethdev_pci.h> drivers/net/e1000/em_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/e1000/igb_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/e1000/igb_flow.c:#include <rte_ethdev_pci.h> drivers/net/ena/ena_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/enetc/enetc_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/enic/enic_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/fm10k/fm10k_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/i40e/i40e_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/i40e/i40e_ethdev_vf.c:#include <rte_ethdev_pci.h> drivers/net/iavf/iavf_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/ice/ice_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/ixgbe/ixgbe_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/ixgbe/ixgbe_ipsec.c:#include <rte_ethdev_pci.h> drivers/net/liquidio/lio_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/mlx4/mlx4.c:#include <rte_ethdev_pci.h> drivers/net/mlx5/mlx5.c:#include <rte_ethdev_pci.h> drivers/net/nfp/nfp_net.c:#include <rte_ethdev_pci.h> drivers/net/nfp/nfpcore/nfp_cpp.h:#include <rte_ethdev_pci.h> drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c:#include <rte_ethdev_pci.h> drivers/net/nfp/nfpcore/nfp_cppcore.c:#include <rte_ethdev_pci.h> drivers/net/qede/qede_ethdev.h:#include <rte_ethdev_pci.h> drivers/net/sfc/sfc_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/szedata2/rte_eth_szedata2.c:#include <rte_ethdev_pci.h> drivers/net/thunderx/nicvf_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/virtio/virtio_ethdev.c:#include <rte_ethdev_pci.h> drivers/net/vmxnet3/vmxnet3_ethdev.c:#include <rte_ethdev_pci.h>
On 4/1/2019 3:56 PM, Ferruh Yigit wrote: > On 4/1/2019 3:39 PM, Bruce Richardson wrote: >> On Mon, Apr 01, 2019 at 01:51:38PM +0100, Ferruh Yigit wrote: >>> On 3/31/2019 4:52 PM, Thomas Monjalon wrote: >>>> 26/03/2019 10:50, Ferruh Yigit: >>>>>> Wenzhuo Lu (8): >>>>>> net/ice: fix Tx function setting >>>>>> net/ice: add pointer for queue buffer release >>>>>> net/ice: support vector SSE in RX >>>>>> net/ice: support Rx scatter SSE vector >>>>>> net/ice: support Tx SSE vector >>>>>> net/ice: support Rx AVX2 vector >>>>>> net/ice: support Rx scatter AVX2 vector >>>>>> net/ice: support vector AVX2 in TX >>>>> >>>>> This version (v7) pulled from next-net-intel to next-net. >>>> >>>> I assume these patches have been tested, or at least compiled. >>>> However, when running devtools/test-meson-builds.sh, there is a >>>> compilation error for build-x86-default: >>>> >>>> In file included from ../drivers/net/ice/ice_ethdev.h:10: >>>> rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found >>> >>> I tested this with meson but not able to catch the issue. Perhaps for my case >>> dependencies were build fast enough to cause a problem. >>> >> >> That should be a problem with the meson builds. While with make builds, the >> headers files are picked up after they are copied to the "include" >> directory by the build process, in meson no such copying occurs and the >> header files are picked up by having the paths to them passed in the >> "dependency object" to each build. If the dependency does not exist then >> the build will never pass, irrespective of ordering, and if the dependency >> exists, the build will always find the header in its original location. > > I was checking this and recognized that no copying is happening. And I can see > many PMDs are using this header [1], not sure why ice is failing. > >> >> [The biggest benefit of this is that when building with ninja there are no >> dependencies between the individual .c files - each one can be compiled >> in parallel with all the others. It's only at the linking step that we need >> to wait for previous jobs to complete] >> >> In terms of this specific error with the header - did it get root caused? >> Since it occurs on the "default" path, I'd suggest the fallback handling in >> the meson.build file for the absense of AVX may be faulty, e.g. are you >> replacing c flags or dependencies rather than appending to them? > > Trying to find out the root cause, but as you said it occurs on the 'default' > path only, and taking into account that there is not copying dependent headers, > I am not able to find it yet, checking. This is meson fallback handling as Bruce guessed ... > > [1] > $ git grep rte_ethdev_pci.h > > > > drivers/net/ark/ark_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/atlantic/atl_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/avp/avp_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/axgbe/axgbe_common.h:#include <rte_ethdev_pci.h> > drivers/net/bnx2x/bnx2x_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/bnxt/bnxt_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/cxgbe/cxgbe_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/cxgbe/cxgbe_main.c:#include <rte_ethdev_pci.h> > drivers/net/cxgbe/cxgbevf_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/cxgbe/cxgbevf_main.c:#include <rte_ethdev_pci.h> > drivers/net/e1000/em_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/e1000/igb_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/e1000/igb_flow.c:#include <rte_ethdev_pci.h> > drivers/net/ena/ena_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/enetc/enetc_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/enic/enic_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/fm10k/fm10k_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/i40e/i40e_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/i40e/i40e_ethdev_vf.c:#include <rte_ethdev_pci.h> > drivers/net/iavf/iavf_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/ice/ice_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/ixgbe/ixgbe_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/ixgbe/ixgbe_ipsec.c:#include <rte_ethdev_pci.h> > drivers/net/liquidio/lio_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/mlx4/mlx4.c:#include <rte_ethdev_pci.h> > drivers/net/mlx5/mlx5.c:#include <rte_ethdev_pci.h> > drivers/net/nfp/nfp_net.c:#include <rte_ethdev_pci.h> > drivers/net/nfp/nfpcore/nfp_cpp.h:#include <rte_ethdev_pci.h> > drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c:#include <rte_ethdev_pci.h> > drivers/net/nfp/nfpcore/nfp_cppcore.c:#include <rte_ethdev_pci.h> > drivers/net/qede/qede_ethdev.h:#include <rte_ethdev_pci.h> > drivers/net/sfc/sfc_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/szedata2/rte_eth_szedata2.c:#include <rte_ethdev_pci.h> > drivers/net/thunderx/nicvf_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/virtio/virtio_ethdev.c:#include <rte_ethdev_pci.h> > drivers/net/vmxnet3/vmxnet3_ethdev.c:#include <rte_ethdev_pci.h> >
On 4/1/2019 2:27 PM, Thomas Monjalon wrote: > 01/04/2019 14:51, Ferruh Yigit: >> On 3/31/2019 4:52 PM, Thomas Monjalon wrote: >>> 26/03/2019 10:50, Ferruh Yigit: >>>>> Wenzhuo Lu (8): >>>>> net/ice: fix Tx function setting >>>>> net/ice: add pointer for queue buffer release >>>>> net/ice: support vector SSE in RX >>>>> net/ice: support Rx scatter SSE vector >>>>> net/ice: support Tx SSE vector >>>>> net/ice: support Rx AVX2 vector >>>>> net/ice: support Rx scatter AVX2 vector >>>>> net/ice: support vector AVX2 in TX >>>> >>>> This version (v7) pulled from next-net-intel to next-net. >>> >>> I assume these patches have been tested, or at least compiled. >>> However, when running devtools/test-meson-builds.sh, there is a >>> compilation error for build-x86-default: >>> >>> In file included from ../drivers/net/ice/ice_ethdev.h:10: >>> rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found >> >> I tested this with meson but not able to catch the issue. Perhaps for my case >> dependencies were build fast enough to cause a problem. > > No, it's not a matter of speed. No it is not, > Are you running devtools/test-meson-builds.sh ? No, I am using with another script but not building 'default' architecture with meson where problem happens, that is why not able to catch this. Will try to catch next time..
01/04/2019 16:56, Ferruh Yigit: > On 4/1/2019 3:39 PM, Bruce Richardson wrote: > > On Mon, Apr 01, 2019 at 01:51:38PM +0100, Ferruh Yigit wrote: > >> On 3/31/2019 4:52 PM, Thomas Monjalon wrote: > >>> 26/03/2019 10:50, Ferruh Yigit: > >>>>> Wenzhuo Lu (8): > >>>>> net/ice: fix Tx function setting > >>>>> net/ice: add pointer for queue buffer release > >>>>> net/ice: support vector SSE in RX > >>>>> net/ice: support Rx scatter SSE vector > >>>>> net/ice: support Tx SSE vector > >>>>> net/ice: support Rx AVX2 vector > >>>>> net/ice: support Rx scatter AVX2 vector > >>>>> net/ice: support vector AVX2 in TX > >>>> > >>>> This version (v7) pulled from next-net-intel to next-net. > >>> > >>> I assume these patches have been tested, or at least compiled. > >>> However, when running devtools/test-meson-builds.sh, there is a > >>> compilation error for build-x86-default: > >>> > >>> In file included from ../drivers/net/ice/ice_ethdev.h:10: > >>> rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found > >> > >> I tested this with meson but not able to catch the issue. Perhaps for my case > >> dependencies were build fast enough to cause a problem. > > > > That should be a problem with the meson builds. While with make builds, the > > headers files are picked up after they are copied to the "include" > > directory by the build process, in meson no such copying occurs and the > > header files are picked up by having the paths to them passed in the > > "dependency object" to each build. If the dependency does not exist then > > the build will never pass, irrespective of ordering, and if the dependency > > exists, the build will always find the header in its original location. > > I was checking this and recognized that no copying is happening. And I can see > many PMDs are using this header [1], not sure why ice is failing. > > > > > [The biggest benefit of this is that when building with ninja there are no > > dependencies between the individual .c files - each one can be compiled > > in parallel with all the others. It's only at the linking step that we need > > to wait for previous jobs to complete] > > > > In terms of this specific error with the header - did it get root caused? > > Since it occurs on the "default" path, I'd suggest the fallback handling in > > the meson.build file for the absense of AVX may be faulty, e.g. are you > > replacing c flags or dependencies rather than appending to them? > > Trying to find out the root cause, but as you said it occurs on the 'default' > path only, and taking into account that there is not copying dependent headers, > I am not able to find it yet, checking. Guys! Are you kidding me? I already described the root cause and the possible fixes: http://mails.dpdk.org/archives/dev/2019-March/128375.html This is in the case AVX2 being chosen at runtime. rte_ethdev_pci.h is included in a header file. The dependencies object is missing static_rte_pci and static_rte_bus_pci. I chose to just use rte_ethdev_driver.h instead.
01/04/2019 17:12, Ferruh Yigit: > On 4/1/2019 2:27 PM, Thomas Monjalon wrote: > > 01/04/2019 14:51, Ferruh Yigit: > >> On 3/31/2019 4:52 PM, Thomas Monjalon wrote: > >>> 26/03/2019 10:50, Ferruh Yigit: > >>>>> Wenzhuo Lu (8): > >>>>> net/ice: fix Tx function setting > >>>>> net/ice: add pointer for queue buffer release > >>>>> net/ice: support vector SSE in RX > >>>>> net/ice: support Rx scatter SSE vector > >>>>> net/ice: support Tx SSE vector > >>>>> net/ice: support Rx AVX2 vector > >>>>> net/ice: support Rx scatter AVX2 vector > >>>>> net/ice: support vector AVX2 in TX > >>>> > >>>> This version (v7) pulled from next-net-intel to next-net. > >>> > >>> I assume these patches have been tested, or at least compiled. > >>> However, when running devtools/test-meson-builds.sh, there is a > >>> compilation error for build-x86-default: > >>> > >>> In file included from ../drivers/net/ice/ice_ethdev.h:10: > >>> rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found > >> > >> I tested this with meson but not able to catch the issue. Perhaps for my case > >> dependencies were build fast enough to cause a problem. > > > > No, it's not a matter of speed. > > No it is not, > > > Are you running devtools/test-meson-builds.sh ? > > No, I am using with another script but not building 'default' architecture with > meson where problem happens, that is why not able to catch this. Will try to > catch next time.. Ferruh, why not using the scripts we are building in devtools?
Hi Thomas, > -----Original Message----- > From: Thomas Monjalon [mailto:thomas@monjalon.net] > Sent: Monday, April 1, 2019 11:14 PM > To: Yigit, Ferruh <ferruh.yigit@intel.com> > Cc: Lu, Wenzhuo <wenzhuo.lu@intel.com>; Zhang, Qi Z > <qi.z.zhang@intel.com>; dev@dpdk.org; O'Hare, Cathal > <cathal.ohare@intel.com>; Mcnamara, John <john.mcnamara@intel.com> > Subject: Re: [dpdk-dev] [PATCH v7 0/8] Support vector instructions on ICE > > 01/04/2019 17:12, Ferruh Yigit: > > On 4/1/2019 2:27 PM, Thomas Monjalon wrote: > > > 01/04/2019 14:51, Ferruh Yigit: > > >> On 3/31/2019 4:52 PM, Thomas Monjalon wrote: > > >>> 26/03/2019 10:50, Ferruh Yigit: > > >>>>> Wenzhuo Lu (8): > > >>>>> net/ice: fix Tx function setting > > >>>>> net/ice: add pointer for queue buffer release > > >>>>> net/ice: support vector SSE in RX > > >>>>> net/ice: support Rx scatter SSE vector > > >>>>> net/ice: support Tx SSE vector > > >>>>> net/ice: support Rx AVX2 vector > > >>>>> net/ice: support Rx scatter AVX2 vector > > >>>>> net/ice: support vector AVX2 in TX > > >>>> > > >>>> This version (v7) pulled from next-net-intel to next-net. > > >>> > > >>> I assume these patches have been tested, or at least compiled. > > >>> However, when running devtools/test-meson-builds.sh, there is a > > >>> compilation error for build-x86-default: > > >>> > > >>> In file included from ../drivers/net/ice/ice_ethdev.h:10: > > >>> rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found > > >> > > >> I tested this with meson but not able to catch the issue. Perhaps > > >> for my case dependencies were build fast enough to cause a problem. > > > > > > No, it's not a matter of speed. > > > > No it is not, > > > > > Are you running devtools/test-meson-builds.sh ? > > > > No, I am using with another script but not building 'default' > > architecture with meson where problem happens, that is why not able to > > catch this. Will try to catch next time.. > > Ferruh, why not using the scripts we are building in devtools? I have a suggestion. Why not integrating all the compile check here, like http://mails.dpdk.org/archives/test-report/2019-March/077966.html. If it fails, the patch state should be changed to "compile error". It will not be accepted. It can help everyone, especially the committer. We cannot assume everyone knows everything. To me, have to say not familiar with meson build.
02/04/2019 03:01, Lu, Wenzhuo: > From: Thomas Monjalon [mailto:thomas@monjalon.net] > > 01/04/2019 17:12, Ferruh Yigit: > > > On 4/1/2019 2:27 PM, Thomas Monjalon wrote: > > > > 01/04/2019 14:51, Ferruh Yigit: > > > >> On 3/31/2019 4:52 PM, Thomas Monjalon wrote: > > > >>> 26/03/2019 10:50, Ferruh Yigit: > > > >>>>> Wenzhuo Lu (8): > > > >>>>> net/ice: fix Tx function setting > > > >>>>> net/ice: add pointer for queue buffer release > > > >>>>> net/ice: support vector SSE in RX > > > >>>>> net/ice: support Rx scatter SSE vector > > > >>>>> net/ice: support Tx SSE vector > > > >>>>> net/ice: support Rx AVX2 vector > > > >>>>> net/ice: support Rx scatter AVX2 vector > > > >>>>> net/ice: support vector AVX2 in TX > > > >>>> > > > >>>> This version (v7) pulled from next-net-intel to next-net. > > > >>> > > > >>> I assume these patches have been tested, or at least compiled. > > > >>> However, when running devtools/test-meson-builds.sh, there is a > > > >>> compilation error for build-x86-default: > > > >>> > > > >>> In file included from ../drivers/net/ice/ice_ethdev.h:10: > > > >>> rte_ethdev_pci.h:38:10: fatal error: 'rte_pci.h' file not found > > > >> > > > >> I tested this with meson but not able to catch the issue. Perhaps > > > >> for my case dependencies were build fast enough to cause a problem. > > > > > > > > No, it's not a matter of speed. > > > > > > No it is not, > > > > > > > Are you running devtools/test-meson-builds.sh ? > > > > > > No, I am using with another script but not building 'default' > > > architecture with meson where problem happens, that is why not able to > > > catch this. Will try to catch next time.. > > > > Ferruh, why not using the scripts we are building in devtools? > I have a suggestion. Why not integrating all the compile check here, like http://mails.dpdk.org/archives/test-report/2019-March/077966.html. If it fails, the patch state should be changed to "compile error". It will not be accepted. It can help everyone, especially the committer. > We cannot assume everyone knows everything. To me, have to say not familiar with meson build. Yes it would help to have meson tested in CI.