Build aarch32 binary on aarch64 platform hit issues with l3fwd [1] and ixgbe PMD [2]. This patch set is to fix these. When building with make, please refer to guide: http://patches.dpdk.org/patch/62820/ When building with meson, requires series: http://patches.dpdk.org/cover/68534/ [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html Ruifeng Wang (3): arch/arm: add vcopyq intrinsic for aarch32 net/ixgbe: add support for aarch32 net/ixgbe: fix include of vector header file drivers/net/ixgbe/ixgbe_rxtx.h | 4 ++-- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 3 files changed, 8 insertions(+), 5 deletions(-) -- 2.17.1
vcopyq_laneq_u32 should be implemented for aarch32 which doesn't have the intrinsic. Fixes: 3c4b4024c225 ("arch/arm: add vcopyq_laneq_u32 for old gcc") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/arm/include/rte_vect.h b/lib/librte_eal/arm/include/rte_vect.h index 9287a1117..d7c8aa61e 100644 --- a/lib/librte_eal/arm/include/rte_vect.h +++ b/lib/librte_eal/arm/include/rte_vect.h @@ -62,7 +62,11 @@ vaddvq_u16(uint16x8_t a) #endif -#if RTE_CC_IS_GNU && (GCC_VERSION < 70000) +#if defined(RTE_ARCH_ARM) || \ +(defined(RTE_ARCH_ARM64) && RTE_CC_IS_GNU && (GCC_VERSION < 70000)) +/* NEON intrinsic vcopyq_laneq_u32() is not supported in ARMv7-A(AArch32) + * On AArch64, this intrinsic is supported since GCC versioin 7. + */ static inline uint32x4_t vcopyq_laneq_u32(uint32x4_t a, const int lane_a, uint32x4_t b, const int lane_b) -- 2.17.1
Expand vector PMD support to aarch32. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- drivers/net/ixgbe/ixgbe_rxtx.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_rxtx.h b/drivers/net/ixgbe/ixgbe_rxtx.h index 20a8b291d..7e09291b2 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx.h +++ b/drivers/net/ixgbe/ixgbe_rxtx.h @@ -33,7 +33,7 @@ #define RTE_IXGBE_DESCS_PER_LOOP 4 -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) #define RTE_IXGBE_RXQ_REARM_THRESH 32 #define RTE_IXGBE_MAX_RX_BURST RTE_IXGBE_RXQ_REARM_THRESH #endif @@ -117,7 +117,7 @@ struct ixgbe_rx_queue { uint8_t using_ipsec; /**< indicates that IPsec RX feature is in use */ #endif -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) uint16_t rxrearm_nb; /**< number of remaining to be re-armed */ uint16_t rxrearm_start; /**< the idx we start the re-arming from */ #endif -- 2.17.1
The include of 'arm_neon.h' causes issues to old gcc and aarch32. Including 'rte_vect.h' instead fixes these issues. Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c index 293b7c8bd..aa27ee177 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c @@ -5,13 +5,12 @@ #include <stdint.h> #include <rte_ethdev_driver.h> #include <rte_malloc.h> +#include <rte_vect.h> #include "ixgbe_ethdev.h" #include "ixgbe_rxtx.h" #include "ixgbe_rxtx_vec_common.h" -#include <arm_neon.h> - #pragma GCC diagnostic ignored "-Wcast-qual" static inline void -- 2.17.1
On 4/24/2020 7:50 AM, Ruifeng Wang wrote:
> vcopyq_laneq_u32 should be implemented for aarch32 which doesn't have
> the intrinsic.
>
> Fixes: 3c4b4024c225 ("arch/arm: add vcopyq_laneq_u32 for old gcc")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
This fixes build of examples/l3fwd for armv7.
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
On 4/24/2020 7:50 AM, Ruifeng Wang wrote:
> Expand vector PMD support to aarch32.
>
> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> ---
> drivers/net/ixgbe/ixgbe_rxtx.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ixgbe/ixgbe_rxtx.h b/drivers/net/ixgbe/ixgbe_rxtx.h
> index 20a8b291d..7e09291b2 100644
> --- a/drivers/net/ixgbe/ixgbe_rxtx.h
> +++ b/drivers/net/ixgbe/ixgbe_rxtx.h
> @@ -33,7 +33,7 @@
>
> #define RTE_IXGBE_DESCS_PER_LOOP 4
>
> -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64)
> +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM)
> #define RTE_IXGBE_RXQ_REARM_THRESH 32
> #define RTE_IXGBE_MAX_RX_BURST RTE_IXGBE_RXQ_REARM_THRESH
> #endif
> @@ -117,7 +117,7 @@ struct ixgbe_rx_queue {
> uint8_t using_ipsec;
> /**< indicates that IPsec RX feature is in use */
> #endif
> -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64)
> +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM)
> uint16_t rxrearm_nb; /**< number of remaining to be re-armed */
> uint16_t rxrearm_start; /**< the idx we start the re-arming from */
> #endif
>
This is not enough for Make build, since it doesn't compile
'ixgbe_rxtx_vec_neon.c' for 'RTE_ARCH_ARM', it needs to be updated.
btw, also should IXGBE_PMD enabled by default
'defconfig_arm-armv7a-linuxapp-gcc'? Which is by default disabled currently.
On 4/24/2020 7:50 AM, Ruifeng Wang wrote:
> Build aarch32 binary on aarch64 platform hit issues with l3fwd [1]
> and ixgbe PMD [2]. This patch set is to fix these.
>
> When building with make, please refer to guide:
> http://patches.dpdk.org/patch/62820/
>
> When building with meson, requires series:
> http://patches.dpdk.org/cover/68534/
>
> [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html
> [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html
>
>
> Ruifeng Wang (3):
> arch/arm: add vcopyq intrinsic for aarch32
> net/ixgbe: add support for aarch32
> net/ixgbe: fix include of vector header file
>
Not directly related to this patch but since you are fixing aarch32 compilation,
I am getting following -Wcast-align warnings [1] while cross building with:
arm-linux-gcc.br_real (Buildroot 2020.02-00011-g7ea8a52) 9.3.0
[1]
.../lib/librte_eal/linux/eal_vfio_mp_sync.c: In function ‘vfio_mp_primary’:
.../lib/librte_eal/linux/eal_vfio_mp_sync.c:31:28: warning: cast increases
required alignment of target type [-Wcast-align]
31 | struct vfio_mp_param *r = (struct vfio_mp_param *)reply.param;
| ^
.../lib/librte_eal/linux/eal_vfio_mp_sync.c:33:3: warning: cast increases
required alignment of target type [-Wcast-align]
33 | (const struct vfio_mp_param *)msg->param;
| ^
.../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_open_group_fd’:
.../lib/librte_eal/linux/eal_vfio.c:269:28: warning: cast increases required
alignment of target type [-Wcast-align]
269 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
| ^
.../lib/librte_eal/linux/eal_vfio.c:316:7: warning: cast increases required
alignment of target type [-Wcast-align]
316 | p = (struct vfio_mp_param *)mp_rep->param;
| ^
CC eal_common_class.o
.../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_sync_default_container’:
.../lib/librte_eal/linux/eal_vfio.c:627:28: warning: cast increases required
alignment of target type [-Wcast-align]
627 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
| ^
.../lib/librte_eal/linux/eal_vfio.c:652:7: warning: cast increases required
alignment of target type [-Wcast-align]
652 | p = (struct vfio_mp_param *)mp_rep->param;
| ^
.../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_get_default_container_fd’:
.../lib/librte_eal/linux/eal_vfio.c:1094:28: warning: cast increases required
alignment of target type [-Wcast-align]
1094 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
| ^
.../lib/librte_eal/linux/eal_vfio.c:1116:7: warning: cast increases required
alignment of target type [-Wcast-align]
1116 | p = (struct vfio_mp_param *)mp_rep->param;
| ^
CC eal_common_bus.o
.../lib/librte_eal/linux/eal_vfio.c: In function ‘rte_vfio_get_container_fd’:
.../lib/librte_eal/linux/eal_vfio.c:1202:28: warning: cast increases required
alignment of target type [-Wcast-align]
1202 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
| ^
.../lib/librte_eal/linux/eal_vfio.c:1248:7: warning: cast increases required
alignment of target type [-Wcast-align]
1248 | p = (struct vfio_mp_param *)mp_rep->param;
| ^
> -----Original Message----- > From: Ferruh Yigit <ferruh.yigit@intel.com> > Sent: Friday, May 1, 2020 11:00 PM > To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; > konstantin.ananyev@intel.com; jerinj@marvell.com; > viktorin@rehivetech.com > Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd > <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH 2/3] net/ixgbe: add support for aarch32 > > On 4/24/2020 7:50 AM, Ruifeng Wang wrote: > > Expand vector PMD support to aarch32. > > > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > > --- > > drivers/net/ixgbe/ixgbe_rxtx.h | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/ixgbe/ixgbe_rxtx.h > > b/drivers/net/ixgbe/ixgbe_rxtx.h index 20a8b291d..7e09291b2 100644 > > --- a/drivers/net/ixgbe/ixgbe_rxtx.h > > +++ b/drivers/net/ixgbe/ixgbe_rxtx.h > > @@ -33,7 +33,7 @@ > > > > #define RTE_IXGBE_DESCS_PER_LOOP 4 > > > > -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) > > +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || > > +defined(RTE_ARCH_ARM) > > #define RTE_IXGBE_RXQ_REARM_THRESH 32 > > #define RTE_IXGBE_MAX_RX_BURST > RTE_IXGBE_RXQ_REARM_THRESH > > #endif > > @@ -117,7 +117,7 @@ struct ixgbe_rx_queue { > > uint8_t using_ipsec; > > /**< indicates that IPsec RX feature is in use */ #endif -#if > > defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) > > +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || > > +defined(RTE_ARCH_ARM) > > uint16_t rxrearm_nb; /**< number of remaining to be re- > armed */ > > uint16_t rxrearm_start; /**< the idx we start the re-arming > from */ > > #endif > > > > > This is not enough for Make build, since it doesn't compile > 'ixgbe_rxtx_vec_neon.c' for 'RTE_ARCH_ARM', it needs to be updated. > Agreed. Will update Makefile to include this. > > btw, also should IXGBE_PMD enabled by default 'defconfig_arm-armv7a- > linuxapp-gcc'? Which is by default disabled currently. Yes. We can enable IXGBE_PMD by default since it now compiles. Will change it in next version.
> -----Original Message----- > From: Ferruh Yigit <ferruh.yigit@intel.com> > Sent: Friday, May 1, 2020 11:07 PM > To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; > konstantin.ananyev@intel.com; jerinj@marvell.com; > viktorin@rehivetech.com > Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd > <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation > > On 4/24/2020 7:50 AM, Ruifeng Wang wrote: > > Build aarch32 binary on aarch64 platform hit issues with l3fwd [1] and > > ixgbe PMD [2]. This patch set is to fix these. > > > > When building with make, please refer to guide: > > http://patches.dpdk.org/patch/62820/ > > > > When building with meson, requires series: > > http://patches.dpdk.org/cover/68534/ > > > > [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html > > [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html > > > > > > Ruifeng Wang (3): > > arch/arm: add vcopyq intrinsic for aarch32 > > net/ixgbe: add support for aarch32 > > net/ixgbe: fix include of vector header file > > > > Not directly related to this patch but since you are fixing aarch32 compilation, > I am getting following -Wcast-align warnings [1] while cross building with: > arm-linux-gcc.br_real (Buildroot 2020.02-00011-g7ea8a52) 9.3.0 > I got the same warnings with arm-linux-gnueabihf-gcc. The warnings spread in many different files. It is because armv7a/aarch32 puts strict align requirement. We can first make it compile. And clean up such warnings in next step? > > [1] > .../lib/librte_eal/linux/eal_vfio_mp_sync.c: In function ‘vfio_mp_primary’: > .../lib/librte_eal/linux/eal_vfio_mp_sync.c:31:28: warning: cast increases > required alignment of target type [-Wcast-align] > 31 | struct vfio_mp_param *r = (struct vfio_mp_param *)reply.param; > | ^ > .../lib/librte_eal/linux/eal_vfio_mp_sync.c:33:3: warning: cast increases > required alignment of target type [-Wcast-align] > 33 | (const struct vfio_mp_param *)msg->param; > | ^ > .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_open_group_fd’: > .../lib/librte_eal/linux/eal_vfio.c:269:28: warning: cast increases required > alignment of target type [-Wcast-align] > 269 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param; > | ^ > .../lib/librte_eal/linux/eal_vfio.c:316:7: warning: cast increases required > alignment of target type [-Wcast-align] > 316 | p = (struct vfio_mp_param *)mp_rep->param; > | ^ > CC eal_common_class.o > .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_sync_default_container’: > .../lib/librte_eal/linux/eal_vfio.c:627:28: warning: cast increases required > alignment of target type [-Wcast-align] > 627 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param; > | ^ > .../lib/librte_eal/linux/eal_vfio.c:652:7: warning: cast increases required > alignment of target type [-Wcast-align] > 652 | p = (struct vfio_mp_param *)mp_rep->param; > | ^ > .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_get_default_container_fd’: > .../lib/librte_eal/linux/eal_vfio.c:1094:28: warning: cast increases required > alignment of target type [-Wcast-align] > 1094 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param; > | ^ > .../lib/librte_eal/linux/eal_vfio.c:1116:7: warning: cast increases required > alignment of target type [-Wcast-align] > 1116 | p = (struct vfio_mp_param *)mp_rep->param; > | ^ > CC eal_common_bus.o > .../lib/librte_eal/linux/eal_vfio.c: In function ‘rte_vfio_get_container_fd’: > .../lib/librte_eal/linux/eal_vfio.c:1202:28: warning: cast increases required > alignment of target type [-Wcast-align] > 1202 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param; > | ^ > .../lib/librte_eal/linux/eal_vfio.c:1248:7: warning: cast increases required > alignment of target type [-Wcast-align] > 1248 | p = (struct vfio_mp_param *)mp_rep->param; > | ^
On 5/6/2020 9:09 AM, Ruifeng Wang wrote: > >> -----Original Message----- >> From: Ferruh Yigit <ferruh.yigit@intel.com> >> Sent: Friday, May 1, 2020 11:07 PM >> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; >> konstantin.ananyev@intel.com; jerinj@marvell.com; >> viktorin@rehivetech.com >> Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli >> <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd >> <nd@arm.com> >> Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation >> >> On 4/24/2020 7:50 AM, Ruifeng Wang wrote: >>> Build aarch32 binary on aarch64 platform hit issues with l3fwd [1] and >>> ixgbe PMD [2]. This patch set is to fix these. >>> >>> When building with make, please refer to guide: >>> http://patches.dpdk.org/patch/62820/ >>> >>> When building with meson, requires series: >>> http://patches.dpdk.org/cover/68534/ >>> >>> [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html >>> [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html >>> >>> >>> Ruifeng Wang (3): >>> arch/arm: add vcopyq intrinsic for aarch32 >>> net/ixgbe: add support for aarch32 >>> net/ixgbe: fix include of vector header file >>> >> >> Not directly related to this patch but since you are fixing aarch32 compilation, >> I am getting following -Wcast-align warnings [1] while cross building with: >> arm-linux-gcc.br_real (Buildroot 2020.02-00011-g7ea8a52) 9.3.0 >> > I got the same warnings with arm-linux-gnueabihf-gcc. The warnings spread in many different files. > It is because armv7a/aarch32 puts strict align requirement. > We can first make it compile. And clean up such warnings in next step? Sure. I thought it would break the build, aren't we using -Werror for the target? > >> >> [1] >> .../lib/librte_eal/linux/eal_vfio_mp_sync.c: In function ‘vfio_mp_primary’: >> .../lib/librte_eal/linux/eal_vfio_mp_sync.c:31:28: warning: cast increases >> required alignment of target type [-Wcast-align] >> 31 | struct vfio_mp_param *r = (struct vfio_mp_param *)reply.param; >> | ^ >> .../lib/librte_eal/linux/eal_vfio_mp_sync.c:33:3: warning: cast increases >> required alignment of target type [-Wcast-align] >> 33 | (const struct vfio_mp_param *)msg->param; >> | ^ >> .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_open_group_fd’: >> .../lib/librte_eal/linux/eal_vfio.c:269:28: warning: cast increases required >> alignment of target type [-Wcast-align] >> 269 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param; >> | ^ >> .../lib/librte_eal/linux/eal_vfio.c:316:7: warning: cast increases required >> alignment of target type [-Wcast-align] >> 316 | p = (struct vfio_mp_param *)mp_rep->param; >> | ^ >> CC eal_common_class.o >> .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_sync_default_container’: >> .../lib/librte_eal/linux/eal_vfio.c:627:28: warning: cast increases required >> alignment of target type [-Wcast-align] >> 627 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param; >> | ^ >> .../lib/librte_eal/linux/eal_vfio.c:652:7: warning: cast increases required >> alignment of target type [-Wcast-align] >> 652 | p = (struct vfio_mp_param *)mp_rep->param; >> | ^ >> .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_get_default_container_fd’: >> .../lib/librte_eal/linux/eal_vfio.c:1094:28: warning: cast increases required >> alignment of target type [-Wcast-align] >> 1094 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param; >> | ^ >> .../lib/librte_eal/linux/eal_vfio.c:1116:7: warning: cast increases required >> alignment of target type [-Wcast-align] >> 1116 | p = (struct vfio_mp_param *)mp_rep->param; >> | ^ >> CC eal_common_bus.o >> .../lib/librte_eal/linux/eal_vfio.c: In function ‘rte_vfio_get_container_fd’: >> .../lib/librte_eal/linux/eal_vfio.c:1202:28: warning: cast increases required >> alignment of target type [-Wcast-align] >> 1202 | struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param; >> | ^ >> .../lib/librte_eal/linux/eal_vfio.c:1248:7: warning: cast increases required >> alignment of target type [-Wcast-align] >> 1248 | p = (struct vfio_mp_param *)mp_rep->param; >> | ^
> -----Original Message----- > From: Ferruh Yigit <ferruh.yigit@intel.com> > Sent: Wednesday, May 6, 2020 6:14 PM > To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; > konstantin.ananyev@intel.com; jerinj@marvell.com; > viktorin@rehivetech.com > Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd > <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation > > On 5/6/2020 9:09 AM, Ruifeng Wang wrote: > > > >> -----Original Message----- > >> From: Ferruh Yigit <ferruh.yigit@intel.com> > >> Sent: Friday, May 1, 2020 11:07 PM > >> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; > >> konstantin.ananyev@intel.com; jerinj@marvell.com; > >> viktorin@rehivetech.com > >> Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa > Nagarahalli > >> <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd > >> <nd@arm.com> > >> Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation > >> > >> On 4/24/2020 7:50 AM, Ruifeng Wang wrote: > >>> Build aarch32 binary on aarch64 platform hit issues with l3fwd [1] > >>> and ixgbe PMD [2]. This patch set is to fix these. > >>> > >>> When building with make, please refer to guide: > >>> http://patches.dpdk.org/patch/62820/ > >>> > >>> When building with meson, requires series: > >>> http://patches.dpdk.org/cover/68534/ > >>> > >>> [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html > >>> [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html > >>> > >>> > >>> Ruifeng Wang (3): > >>> arch/arm: add vcopyq intrinsic for aarch32 > >>> net/ixgbe: add support for aarch32 > >>> net/ixgbe: fix include of vector header file > >>> > >> > >> Not directly related to this patch but since you are fixing aarch32 > >> compilation, I am getting following -Wcast-align warnings [1] while cross > building with: > >> arm-linux-gcc.br_real (Buildroot 2020.02-00011-g7ea8a52) 9.3.0 > >> > > I got the same warnings with arm-linux-gnueabihf-gcc. The warnings > spread in many different files. > > It is because armv7a/aarch32 puts strict align requirement. > > We can first make it compile. And clean up such warnings in next step? > > Sure. > > I thought it would break the build, aren't we using -Werror for the target? Currently, "RTE_DEVEL_BUILD=n" is needed for armv7 build. http://patches.dpdk.org/patch/62820/ > > > > >> > >> [1] > >> .../lib/librte_eal/linux/eal_vfio_mp_sync.c: In function ‘vfio_mp_primary’: > >> .../lib/librte_eal/linux/eal_vfio_mp_sync.c:31:28: warning: cast > >> increases required alignment of target type [-Wcast-align] > >> 31 | struct vfio_mp_param *r = (struct vfio_mp_param *)reply.param; > >> | ^ > >> .../lib/librte_eal/linux/eal_vfio_mp_sync.c:33:3: warning: cast > >> increases required alignment of target type [-Wcast-align] > >> 33 | (const struct vfio_mp_param *)msg->param; > >> | ^ > >> .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_open_group_fd’: > >> .../lib/librte_eal/linux/eal_vfio.c:269:28: warning: cast increases > >> required alignment of target type [-Wcast-align] > >> 269 | struct vfio_mp_param *p = (struct vfio_mp_param > *)mp_req.param; > >> | ^ > >> .../lib/librte_eal/linux/eal_vfio.c:316:7: warning: cast increases > >> required alignment of target type [-Wcast-align] > >> 316 | p = (struct vfio_mp_param *)mp_rep->param; > >> | ^ > >> CC eal_common_class.o > >> .../lib/librte_eal/linux/eal_vfio.c: In function > ‘vfio_sync_default_container’: > >> .../lib/librte_eal/linux/eal_vfio.c:627:28: warning: cast increases > >> required alignment of target type [-Wcast-align] > >> 627 | struct vfio_mp_param *p = (struct vfio_mp_param > *)mp_req.param; > >> | ^ > >> .../lib/librte_eal/linux/eal_vfio.c:652:7: warning: cast increases > >> required alignment of target type [-Wcast-align] > >> 652 | p = (struct vfio_mp_param *)mp_rep->param; > >> | ^ > >> .../lib/librte_eal/linux/eal_vfio.c: In function > ‘vfio_get_default_container_fd’: > >> .../lib/librte_eal/linux/eal_vfio.c:1094:28: warning: cast increases > >> required alignment of target type [-Wcast-align] > >> 1094 | struct vfio_mp_param *p = (struct vfio_mp_param > *)mp_req.param; > >> | ^ > >> .../lib/librte_eal/linux/eal_vfio.c:1116:7: warning: cast increases > >> required alignment of target type [-Wcast-align] > >> 1116 | p = (struct vfio_mp_param *)mp_rep->param; > >> | ^ > >> CC eal_common_bus.o > >> .../lib/librte_eal/linux/eal_vfio.c: In function ‘rte_vfio_get_container_fd’: > >> .../lib/librte_eal/linux/eal_vfio.c:1202:28: warning: cast increases > >> required alignment of target type [-Wcast-align] > >> 1202 | struct vfio_mp_param *p = (struct vfio_mp_param > *)mp_req.param; > >> | ^ > >> .../lib/librte_eal/linux/eal_vfio.c:1248:7: warning: cast increases > >> required alignment of target type [-Wcast-align] > >> 1248 | p = (struct vfio_mp_param *)mp_rep->param; > >> | ^
On 5/6/2020 2:54 PM, Ruifeng Wang wrote: > >> -----Original Message----- >> From: Ferruh Yigit <ferruh.yigit@intel.com> >> Sent: Wednesday, May 6, 2020 6:14 PM >> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; >> konstantin.ananyev@intel.com; jerinj@marvell.com; >> viktorin@rehivetech.com >> Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli >> <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd >> <nd@arm.com> >> Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation >> >> On 5/6/2020 9:09 AM, Ruifeng Wang wrote: >>> >>>> -----Original Message----- >>>> From: Ferruh Yigit <ferruh.yigit@intel.com> >>>> Sent: Friday, May 1, 2020 11:07 PM >>>> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; >>>> konstantin.ananyev@intel.com; jerinj@marvell.com; >>>> viktorin@rehivetech.com >>>> Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa >> Nagarahalli >>>> <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd >>>> <nd@arm.com> >>>> Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation >>>> >>>> On 4/24/2020 7:50 AM, Ruifeng Wang wrote: >>>>> Build aarch32 binary on aarch64 platform hit issues with l3fwd [1] >>>>> and ixgbe PMD [2]. This patch set is to fix these. >>>>> >>>>> When building with make, please refer to guide: >>>>> http://patches.dpdk.org/patch/62820/ >>>>> >>>>> When building with meson, requires series: >>>>> http://patches.dpdk.org/cover/68534/ >>>>> >>>>> [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html >>>>> [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html >>>>> >>>>> >>>>> Ruifeng Wang (3): >>>>> arch/arm: add vcopyq intrinsic for aarch32 >>>>> net/ixgbe: add support for aarch32 >>>>> net/ixgbe: fix include of vector header file >>>>> >>>> >>>> Not directly related to this patch but since you are fixing aarch32 >>>> compilation, I am getting following -Wcast-align warnings [1] while cross >> building with: >>>> arm-linux-gcc.br_real (Buildroot 2020.02-00011-g7ea8a52) 9.3.0 >>>> >>> I got the same warnings with arm-linux-gnueabihf-gcc. The warnings >> spread in many different files. >>> It is because armv7a/aarch32 puts strict align requirement. >>> We can first make it compile. And clean up such warnings in next step? >> >> Sure. >> >> I thought it would break the build, aren't we using -Werror for the target? > Currently, "RTE_DEVEL_BUILD=n" is needed for armv7 build. > http://patches.dpdk.org/patch/62820/ May be not. I did able to build without "RTE_DEVEL_BUILD=n", while checking how :), found that "CONFIG_RTE_ARCH_STRICT_ALIGN=y" set in the armv7a config (defconfig_arm-armv7a-linux-gcc), seems explicitly added for these '-Wcast-align' warnings. Overall to the point of the discussion, since this way or that, build is not broken with cast-align warnings, I am OK to fix them later gradually. A side note is, I wonder if these 'RTE_DEVEL_BUILD' or 'CONFIG_RTE_ARCH_STRICT_ALIGN' reflected to the meson build, taking into account that make build is going away on 20.11, will we able to keep these functionalities in meson. > >> >>> >>>> >>>> [1] >>>> .../lib/librte_eal/linux/eal_vfio_mp_sync.c: In function ‘vfio_mp_primary’: >>>> .../lib/librte_eal/linux/eal_vfio_mp_sync.c:31:28: warning: cast >>>> increases required alignment of target type [-Wcast-align] >>>> 31 | struct vfio_mp_param *r = (struct vfio_mp_param *)reply.param; >>>> | ^ >>>> .../lib/librte_eal/linux/eal_vfio_mp_sync.c:33:3: warning: cast >>>> increases required alignment of target type [-Wcast-align] >>>> 33 | (const struct vfio_mp_param *)msg->param; >>>> | ^ >>>> .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_open_group_fd’: >>>> .../lib/librte_eal/linux/eal_vfio.c:269:28: warning: cast increases >>>> required alignment of target type [-Wcast-align] >>>> 269 | struct vfio_mp_param *p = (struct vfio_mp_param >> *)mp_req.param; >>>> | ^ >>>> .../lib/librte_eal/linux/eal_vfio.c:316:7: warning: cast increases >>>> required alignment of target type [-Wcast-align] >>>> 316 | p = (struct vfio_mp_param *)mp_rep->param; >>>> | ^ >>>> CC eal_common_class.o >>>> .../lib/librte_eal/linux/eal_vfio.c: In function >> ‘vfio_sync_default_container’: >>>> .../lib/librte_eal/linux/eal_vfio.c:627:28: warning: cast increases >>>> required alignment of target type [-Wcast-align] >>>> 627 | struct vfio_mp_param *p = (struct vfio_mp_param >> *)mp_req.param; >>>> | ^ >>>> .../lib/librte_eal/linux/eal_vfio.c:652:7: warning: cast increases >>>> required alignment of target type [-Wcast-align] >>>> 652 | p = (struct vfio_mp_param *)mp_rep->param; >>>> | ^ >>>> .../lib/librte_eal/linux/eal_vfio.c: In function >> ‘vfio_get_default_container_fd’: >>>> .../lib/librte_eal/linux/eal_vfio.c:1094:28: warning: cast increases >>>> required alignment of target type [-Wcast-align] >>>> 1094 | struct vfio_mp_param *p = (struct vfio_mp_param >> *)mp_req.param; >>>> | ^ >>>> .../lib/librte_eal/linux/eal_vfio.c:1116:7: warning: cast increases >>>> required alignment of target type [-Wcast-align] >>>> 1116 | p = (struct vfio_mp_param *)mp_rep->param; >>>> | ^ >>>> CC eal_common_bus.o >>>> .../lib/librte_eal/linux/eal_vfio.c: In function ‘rte_vfio_get_container_fd’: >>>> .../lib/librte_eal/linux/eal_vfio.c:1202:28: warning: cast increases >>>> required alignment of target type [-Wcast-align] >>>> 1202 | struct vfio_mp_param *p = (struct vfio_mp_param >> *)mp_req.param; >>>> | ^ >>>> .../lib/librte_eal/linux/eal_vfio.c:1248:7: warning: cast increases >>>> required alignment of target type [-Wcast-align] >>>> 1248 | p = (struct vfio_mp_param *)mp_rep->param; >>>> | ^ >
> -----Original Message----- > From: Ferruh Yigit <ferruh.yigit@intel.com> > Sent: Wednesday, May 6, 2020 10:15 PM > To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; > konstantin.ananyev@intel.com; jerinj@marvell.com; > viktorin@rehivetech.com > Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd > <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation > > On 5/6/2020 2:54 PM, Ruifeng Wang wrote: > > > >> -----Original Message----- > >> From: Ferruh Yigit <ferruh.yigit@intel.com> > >> Sent: Wednesday, May 6, 2020 6:14 PM > >> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; > >> konstantin.ananyev@intel.com; jerinj@marvell.com; > >> viktorin@rehivetech.com > >> Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa > Nagarahalli > >> <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd > >> <nd@arm.com> > >> Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation > >> > >> On 5/6/2020 9:09 AM, Ruifeng Wang wrote: > >>> > >>>> -----Original Message----- > >>>> From: Ferruh Yigit <ferruh.yigit@intel.com> > >>>> Sent: Friday, May 1, 2020 11:07 PM > >>>> To: Ruifeng Wang <Ruifeng.Wang@arm.com>; wenzhuo.lu@intel.com; > >>>> konstantin.ananyev@intel.com; jerinj@marvell.com; > >>>> viktorin@rehivetech.com > >>>> Cc: dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa > >> Nagarahalli > >>>> <Honnappa.Nagarahalli@arm.com>; juraj.linkes@pantheon.tech; nd > >>>> <nd@arm.com> > >>>> Subject: Re: [dpdk-dev] [PATCH 0/3] aarch32 compilation > >>>> > >>>> On 4/24/2020 7:50 AM, Ruifeng Wang wrote: > >>>>> Build aarch32 binary on aarch64 platform hit issues with l3fwd [1] > >>>>> and ixgbe PMD [2]. This patch set is to fix these. > >>>>> > >>>>> When building with make, please refer to guide: > >>>>> http://patches.dpdk.org/patch/62820/ > >>>>> > >>>>> When building with meson, requires series: > >>>>> http://patches.dpdk.org/cover/68534/ > >>>>> > >>>>> [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html > >>>>> [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html > >>>>> > >>>>> > >>>>> Ruifeng Wang (3): > >>>>> arch/arm: add vcopyq intrinsic for aarch32 > >>>>> net/ixgbe: add support for aarch32 > >>>>> net/ixgbe: fix include of vector header file > >>>>> > >>>> > >>>> Not directly related to this patch but since you are fixing aarch32 > >>>> compilation, I am getting following -Wcast-align warnings [1] while > >>>> cross > >> building with: > >>>> arm-linux-gcc.br_real (Buildroot 2020.02-00011-g7ea8a52) 9.3.0 > >>>> > >>> I got the same warnings with arm-linux-gnueabihf-gcc. The warnings > >> spread in many different files. > >>> It is because armv7a/aarch32 puts strict align requirement. > >>> We can first make it compile. And clean up such warnings in next step? > >> > >> Sure. > >> > >> I thought it would break the build, aren't we using -Werror for the target? > > Currently, "RTE_DEVEL_BUILD=n" is needed for armv7 build. > > http://patches.dpdk.org/patch/62820/ > > May be not. > > I did able to build without "RTE_DEVEL_BUILD=n", while checking how :), > found that "CONFIG_RTE_ARCH_STRICT_ALIGN=y" set in the armv7a config > (defconfig_arm-armv7a-linux-gcc), seems explicitly added for these '-Wcast- > align' warnings. > > Overall to the point of the discussion, since this way or that, build is not > broken with cast-align warnings, I am OK to fix them later gradually. > > A side note is, I wonder if these 'RTE_DEVEL_BUILD' or > 'CONFIG_RTE_ARCH_STRICT_ALIGN' reflected to the meson build, taking > into account that make build is going away on 20.11, will we able to keep > these functionalities in meson. > Yes. There is a patch to enable meson build for armv7, and 'CONFIG_RTE_ARCH_STRICT_ALIGN' is added. http://patches.dpdk.org/patch/69539/ Meson also provides option to set "werror". The functionalities can be kept. > > > >> > >>> > >>>> > >>>> [1] > >>>> .../lib/librte_eal/linux/eal_vfio_mp_sync.c: In function > ‘vfio_mp_primary’: > >>>> .../lib/librte_eal/linux/eal_vfio_mp_sync.c:31:28: warning: cast > >>>> increases required alignment of target type [-Wcast-align] > >>>> 31 | struct vfio_mp_param *r = (struct vfio_mp_param > *)reply.param; > >>>> | ^ > >>>> .../lib/librte_eal/linux/eal_vfio_mp_sync.c:33:3: warning: cast > >>>> increases required alignment of target type [-Wcast-align] > >>>> 33 | (const struct vfio_mp_param *)msg->param; > >>>> | ^ > >>>> .../lib/librte_eal/linux/eal_vfio.c: In function ‘vfio_open_group_fd’: > >>>> .../lib/librte_eal/linux/eal_vfio.c:269:28: warning: cast increases > >>>> required alignment of target type [-Wcast-align] > >>>> 269 | struct vfio_mp_param *p = (struct vfio_mp_param > >> *)mp_req.param; > >>>> | ^ > >>>> .../lib/librte_eal/linux/eal_vfio.c:316:7: warning: cast increases > >>>> required alignment of target type [-Wcast-align] > >>>> 316 | p = (struct vfio_mp_param *)mp_rep->param; > >>>> | ^ > >>>> CC eal_common_class.o > >>>> .../lib/librte_eal/linux/eal_vfio.c: In function > >> ‘vfio_sync_default_container’: > >>>> .../lib/librte_eal/linux/eal_vfio.c:627:28: warning: cast increases > >>>> required alignment of target type [-Wcast-align] > >>>> 627 | struct vfio_mp_param *p = (struct vfio_mp_param > >> *)mp_req.param; > >>>> | ^ > >>>> .../lib/librte_eal/linux/eal_vfio.c:652:7: warning: cast increases > >>>> required alignment of target type [-Wcast-align] > >>>> 652 | p = (struct vfio_mp_param *)mp_rep->param; > >>>> | ^ > >>>> .../lib/librte_eal/linux/eal_vfio.c: In function > >> ‘vfio_get_default_container_fd’: > >>>> .../lib/librte_eal/linux/eal_vfio.c:1094:28: warning: cast > >>>> increases required alignment of target type [-Wcast-align] > >>>> 1094 | struct vfio_mp_param *p = (struct vfio_mp_param > >> *)mp_req.param; > >>>> | ^ > >>>> .../lib/librte_eal/linux/eal_vfio.c:1116:7: warning: cast increases > >>>> required alignment of target type [-Wcast-align] > >>>> 1116 | p = (struct vfio_mp_param *)mp_rep->param; > >>>> | ^ > >>>> CC eal_common_bus.o > >>>> .../lib/librte_eal/linux/eal_vfio.c: In function > ‘rte_vfio_get_container_fd’: > >>>> .../lib/librte_eal/linux/eal_vfio.c:1202:28: warning: cast > >>>> increases required alignment of target type [-Wcast-align] > >>>> 1202 | struct vfio_mp_param *p = (struct vfio_mp_param > >> *)mp_req.param; > >>>> | ^ > >>>> .../lib/librte_eal/linux/eal_vfio.c:1248:7: warning: cast increases > >>>> required alignment of target type [-Wcast-align] > >>>> 1248 | p = (struct vfio_mp_param *)mp_rep->param; > >>>> | ^ > >
Build aarch32 binary on aarch64 platform hit issues with l3fwd [1] and ixgbe PMD [2]. This patch set is to fix these. When building with make, please refer to guide: http://patches.dpdk.org/patch/62820/ When building with meson, requires series: http://patches.dpdk.org/cover/69536/ [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html v2: Fix aarch32 Make build for ixgbe, and enable ixgbe PMD by default. Add aarch32 support for i40e, and enable i40e PMD by default. Ruifeng Wang (4): arch/arm: add vcopyq intrinsic for aarch32 net/ixgbe: add support for aarch32 net/ixgbe: fix include of vector header file net/i40e: add support for aarch32 config/defconfig_arm-armv7a-linuxapp-gcc | 4 ++-- drivers/net/i40e/Makefile | 2 +- drivers/net/i40e/i40e_rxtx_vec_neon.c | 2 +- drivers/net/ixgbe/Makefile | 2 +- drivers/net/ixgbe/ixgbe_rxtx.h | 4 ++-- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 7 files changed, 13 insertions(+), 10 deletions(-) -- 2.17.1
vcopyq_laneq_u32 should be implemented for aarch32 which doesn't have the intrinsic. This fixes build of examples/l3fwd for armv7. Fixes: 3c4b4024c225 ("arch/arm: add vcopyq_laneq_u32 for old gcc") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> --- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/arm/include/rte_vect.h b/lib/librte_eal/arm/include/rte_vect.h index 9287a1117..d7c8aa61e 100644 --- a/lib/librte_eal/arm/include/rte_vect.h +++ b/lib/librte_eal/arm/include/rte_vect.h @@ -62,7 +62,11 @@ vaddvq_u16(uint16x8_t a) #endif -#if RTE_CC_IS_GNU && (GCC_VERSION < 70000) +#if defined(RTE_ARCH_ARM) || \ +(defined(RTE_ARCH_ARM64) && RTE_CC_IS_GNU && (GCC_VERSION < 70000)) +/* NEON intrinsic vcopyq_laneq_u32() is not supported in ARMv7-A(AArch32) + * On AArch64, this intrinsic is supported since GCC versioin 7. + */ static inline uint32x4_t vcopyq_laneq_u32(uint32x4_t a, const int lane_a, uint32x4_t b, const int lane_b) -- 2.17.1
Expand vector PMD support to aarch32. Enable ixgbe PMD by default for armv7 make build. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> --- config/defconfig_arm-armv7a-linuxapp-gcc | 2 +- drivers/net/ixgbe/Makefile | 2 +- drivers/net/ixgbe/ixgbe_rxtx.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc b/config/defconfig_arm-armv7a-linuxapp-gcc index 9ecc2a526..9c6d387cf 100644 --- a/config/defconfig_arm-armv7a-linuxapp-gcc +++ b/config/defconfig_arm-armv7a-linuxapp-gcc @@ -30,6 +30,7 @@ CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n # KNI is not supported on 32-bit CONFIG_RTE_LIBRTE_KNI=n +CONFIG_RTE_LIBRTE_IXGBE_PMD=y # cannot use those on ARM CONFIG_RTE_LIBRTE_ARK_PMD=n CONFIG_RTE_LIBRTE_EM_PMD=n @@ -39,7 +40,6 @@ CONFIG_RTE_LIBRTE_E1000_PMD=n CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_FM10K_PMD=n CONFIG_RTE_LIBRTE_I40E_PMD=n -CONFIG_RTE_LIBRTE_IXGBE_PMD=n CONFIG_RTE_LIBRTE_VMXNET3_PMD=n CONFIG_RTE_LIBRTE_QEDE_PMD=n CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/ixgbe/Makefile index 0f0bcf1d6..aebf3b286 100644 --- a/drivers/net/ixgbe/Makefile +++ b/drivers/net/ixgbe/Makefile @@ -88,7 +88,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_ethdev.c SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_fdir.c SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_pf.c SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_flow.c -ifeq ($(CONFIG_RTE_ARCH_ARM64),y) +ifneq ($(filter y,$(CONFIG_RTE_ARCH_ARM) $(CONFIG_RTE_ARCH_ARM64)),) SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_rxtx_vec_neon.c else ifeq ($(CONFIG_RTE_ARCH_X86),y) SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_rxtx_vec_sse.c diff --git a/drivers/net/ixgbe/ixgbe_rxtx.h b/drivers/net/ixgbe/ixgbe_rxtx.h index 20a8b291d..7e09291b2 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx.h +++ b/drivers/net/ixgbe/ixgbe_rxtx.h @@ -33,7 +33,7 @@ #define RTE_IXGBE_DESCS_PER_LOOP 4 -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) #define RTE_IXGBE_RXQ_REARM_THRESH 32 #define RTE_IXGBE_MAX_RX_BURST RTE_IXGBE_RXQ_REARM_THRESH #endif @@ -117,7 +117,7 @@ struct ixgbe_rx_queue { uint8_t using_ipsec; /**< indicates that IPsec RX feature is in use */ #endif -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) uint16_t rxrearm_nb; /**< number of remaining to be re-armed */ uint16_t rxrearm_start; /**< the idx we start the re-arming from */ #endif -- 2.17.1
The include of 'arm_neon.h' causes issues to old gcc and aarch32. Including 'rte_vect.h' instead fixes these issues. Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> --- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c index 293b7c8bd..aa27ee177 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c @@ -5,13 +5,12 @@ #include <stdint.h> #include <rte_ethdev_driver.h> #include <rte_malloc.h> +#include <rte_vect.h> #include "ixgbe_ethdev.h" #include "ixgbe_rxtx.h" #include "ixgbe_rxtx_vec_common.h" -#include <arm_neon.h> - #pragma GCC diagnostic ignored "-Wcast-qual" static inline void -- 2.17.1
Expand vector PMD support to aarch32. Enable i40e PMD by default for armv7 make build. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> --- config/defconfig_arm-armv7a-linuxapp-gcc | 2 +- drivers/net/i40e/Makefile | 2 +- drivers/net/i40e/i40e_rxtx_vec_neon.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc b/config/defconfig_arm-armv7a-linuxapp-gcc index 9c6d387cf..15a44afae 100644 --- a/config/defconfig_arm-armv7a-linuxapp-gcc +++ b/config/defconfig_arm-armv7a-linuxapp-gcc @@ -30,6 +30,7 @@ CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n # KNI is not supported on 32-bit CONFIG_RTE_LIBRTE_KNI=n +CONFIG_RTE_LIBRTE_I40E_PMD=y CONFIG_RTE_LIBRTE_IXGBE_PMD=y # cannot use those on ARM CONFIG_RTE_LIBRTE_ARK_PMD=n @@ -39,7 +40,6 @@ CONFIG_RTE_LIBRTE_CXGBE_PMD=n CONFIG_RTE_LIBRTE_E1000_PMD=n CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_FM10K_PMD=n -CONFIG_RTE_LIBRTE_I40E_PMD=n CONFIG_RTE_LIBRTE_VMXNET3_PMD=n CONFIG_RTE_LIBRTE_QEDE_PMD=n CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n diff --git a/drivers/net/i40e/Makefile b/drivers/net/i40e/Makefile index 7ec8d9533..43f10941b 100644 --- a/drivers/net/i40e/Makefile +++ b/drivers/net/i40e/Makefile @@ -69,7 +69,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += i40e_dcb.c SRCS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += i40e_ethdev.c SRCS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += i40e_rxtx.c -ifeq ($(CONFIG_RTE_ARCH_ARM64),y) +ifneq ($(filter y,$(CONFIG_RTE_ARCH_ARM) $(CONFIG_RTE_ARCH_ARM64)),) SRCS-$(CONFIG_RTE_LIBRTE_I40E_INC_VECTOR) += i40e_rxtx_vec_neon.c else ifeq ($(CONFIG_RTE_ARCH_PPC_64),y) SRCS-$(CONFIG_RTE_LIBRTE_I40E_INC_VECTOR) += i40e_rxtx_vec_altivec.c diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c index 1dfd0478b..67158f108 100644 --- a/drivers/net/i40e/i40e_rxtx_vec_neon.c +++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c @@ -6,6 +6,7 @@ #include <stdint.h> #include <rte_ethdev_driver.h> #include <rte_malloc.h> +#include <rte_vect.h> #include "base/i40e_prototype.h" #include "base/i40e_type.h" @@ -13,7 +14,6 @@ #include "i40e_rxtx.h" #include "i40e_rxtx_vec_common.h" -#include <arm_neon.h> #pragma GCC diagnostic ignored "-Wcast-qual" -- 2.17.1
Hello Ruifeng, On Tue, Jun 23, 2020 at 9:00 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote: > diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc b/config/defconfig_arm-armv7a-linuxapp-gcc > index 9ecc2a526..9c6d387cf 100644 > --- a/config/defconfig_arm-armv7a-linuxapp-gcc > +++ b/config/defconfig_arm-armv7a-linuxapp-gcc > @@ -30,6 +30,7 @@ CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n > # KNI is not supported on 32-bit > CONFIG_RTE_LIBRTE_KNI=n > > +CONFIG_RTE_LIBRTE_IXGBE_PMD=y All components are enabled by default in the common_base file. We explicitly disable components in the targets config files that can't support them. $ git grep IXGBE_PMD= origin/master -- config/ config/common_base:CONFIG_RTE_LIBRTE_IXGBE_PMD=y config/defconfig_arm-armv7a-linuxapp-gcc:CONFIG_RTE_LIBRTE_IXGBE_PMD=n config/defconfig_ppc_64-power8-linuxapp-gcc:CONFIG_RTE_LIBRTE_IXGBE_PMD=n > # cannot use those on ARM > CONFIG_RTE_LIBRTE_ARK_PMD=n > CONFIG_RTE_LIBRTE_EM_PMD=n > @@ -39,7 +40,6 @@ CONFIG_RTE_LIBRTE_E1000_PMD=n > CONFIG_RTE_LIBRTE_ENIC_PMD=n > CONFIG_RTE_LIBRTE_FM10K_PMD=n > CONFIG_RTE_LIBRTE_I40E_PMD=n > -CONFIG_RTE_LIBRTE_IXGBE_PMD=n So removing this line only should be enough. Idem with i40e in following patch. > CONFIG_RTE_LIBRTE_VMXNET3_PMD=n > CONFIG_RTE_LIBRTE_QEDE_PMD=n > CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n -- David Marchand
> -----Original Message----- > From: David Marchand <david.marchand@redhat.com> > Sent: Tuesday, June 23, 2020 4:37 PM > To: Ruifeng Wang <Ruifeng.Wang@arm.com> > Cc: thomas@monjalon.net; Wei Zhao <wei.zhao1@intel.com>; Jeff Guo > <jia.guo@intel.com>; dev <dev@dpdk.org>; Yigit, Ferruh > <ferruh.yigit@intel.com>; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; Juraj Linkeš > <juraj.linkes@pantheon.tech>; nd <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH v2 2/4] net/ixgbe: add support for aarch32 > > Hello Ruifeng, Hi David, Thanks for your review. > > On Tue, Jun 23, 2020 at 9:00 AM Ruifeng Wang <ruifeng.wang@arm.com> > wrote: > > diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc > > b/config/defconfig_arm-armv7a-linuxapp-gcc > > index 9ecc2a526..9c6d387cf 100644 > > --- a/config/defconfig_arm-armv7a-linuxapp-gcc > > +++ b/config/defconfig_arm-armv7a-linuxapp-gcc > > @@ -30,6 +30,7 @@ > CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n > > # KNI is not supported on 32-bit > > CONFIG_RTE_LIBRTE_KNI=n > > > > +CONFIG_RTE_LIBRTE_IXGBE_PMD=y > > All components are enabled by default in the common_base file. > We explicitly disable components in the targets config files that can't support > them. > > $ git grep IXGBE_PMD= origin/master -- config/ > config/common_base:CONFIG_RTE_LIBRTE_IXGBE_PMD=y > config/defconfig_arm-armv7a-linuxapp- > gcc:CONFIG_RTE_LIBRTE_IXGBE_PMD=n > config/defconfig_ppc_64-power8-linuxapp- > gcc:CONFIG_RTE_LIBRTE_IXGBE_PMD=n > Didn't realize that. Will change to remove IXGBE line from armv7a config in next version. > > > # cannot use those on ARM > > CONFIG_RTE_LIBRTE_ARK_PMD=n > > CONFIG_RTE_LIBRTE_EM_PMD=n > > @@ -39,7 +40,6 @@ CONFIG_RTE_LIBRTE_E1000_PMD=n > > CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_FM10K_PMD=n > > CONFIG_RTE_LIBRTE_I40E_PMD=n -CONFIG_RTE_LIBRTE_IXGBE_PMD=n > > So removing this line only should be enough. > Idem with i40e in following patch. > Will remove the line from armv7a config in next version. /Ruifeng > > > CONFIG_RTE_LIBRTE_VMXNET3_PMD=n > > CONFIG_RTE_LIBRTE_QEDE_PMD=n > > CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n > > > -- > David Marchand
Build aarch32 binary on aarch64 platform hit issues with l3fwd [1] and ixgbe PMD [2]. This patch set is to fix these. When building with make, please refer to guide: http://patches.dpdk.org/patch/62820/ When building with meson, requires series: http://patches.dpdk.org/cover/69536/ [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html v3: Remove ixgbe/i40e from armv7 config to set these PMDs enabled. v2: Fix aarch32 Make build for ixgbe, and enable ixgbe PMD by default. Add aarch32 support for i40e, and enable i40e PMD by default. Ruifeng Wang (4): arch/arm: add vcopyq intrinsic for aarch32 net/ixgbe: add support for aarch32 net/ixgbe: fix include of vector header file net/i40e: add support for aarch32 config/defconfig_arm-armv7a-linuxapp-gcc | 2 -- drivers/net/i40e/Makefile | 2 +- drivers/net/i40e/i40e_rxtx_vec_neon.c | 2 +- drivers/net/ixgbe/Makefile | 2 +- drivers/net/ixgbe/ixgbe_rxtx.h | 4 ++-- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 7 files changed, 11 insertions(+), 10 deletions(-) -- 2.17.1
vcopyq_laneq_u32 should be implemented for aarch32 which doesn't have the intrinsic. This fixes build of examples/l3fwd for armv7. Fixes: 3c4b4024c225 ("arch/arm: add vcopyq_laneq_u32 for old gcc") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> --- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/arm/include/rte_vect.h b/lib/librte_eal/arm/include/rte_vect.h index 9287a1117..d7c8aa61e 100644 --- a/lib/librte_eal/arm/include/rte_vect.h +++ b/lib/librte_eal/arm/include/rte_vect.h @@ -62,7 +62,11 @@ vaddvq_u16(uint16x8_t a) #endif -#if RTE_CC_IS_GNU && (GCC_VERSION < 70000) +#if defined(RTE_ARCH_ARM) || \ +(defined(RTE_ARCH_ARM64) && RTE_CC_IS_GNU && (GCC_VERSION < 70000)) +/* NEON intrinsic vcopyq_laneq_u32() is not supported in ARMv7-A(AArch32) + * On AArch64, this intrinsic is supported since GCC versioin 7. + */ static inline uint32x4_t vcopyq_laneq_u32(uint32x4_t a, const int lane_a, uint32x4_t b, const int lane_b) -- 2.17.1
Expand vector PMD support to aarch32. Enable ixgbe PMD by default for armv7 make build. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> --- config/defconfig_arm-armv7a-linuxapp-gcc | 1 - drivers/net/ixgbe/Makefile | 2 +- drivers/net/ixgbe/ixgbe_rxtx.h | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc b/config/defconfig_arm-armv7a-linuxapp-gcc index 9ecc2a526..e5d6b6a0c 100644 --- a/config/defconfig_arm-armv7a-linuxapp-gcc +++ b/config/defconfig_arm-armv7a-linuxapp-gcc @@ -39,7 +39,6 @@ CONFIG_RTE_LIBRTE_E1000_PMD=n CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_FM10K_PMD=n CONFIG_RTE_LIBRTE_I40E_PMD=n -CONFIG_RTE_LIBRTE_IXGBE_PMD=n CONFIG_RTE_LIBRTE_VMXNET3_PMD=n CONFIG_RTE_LIBRTE_QEDE_PMD=n CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/ixgbe/Makefile index 0f0bcf1d6..aebf3b286 100644 --- a/drivers/net/ixgbe/Makefile +++ b/drivers/net/ixgbe/Makefile @@ -88,7 +88,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_ethdev.c SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_fdir.c SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_pf.c SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_flow.c -ifeq ($(CONFIG_RTE_ARCH_ARM64),y) +ifneq ($(filter y,$(CONFIG_RTE_ARCH_ARM) $(CONFIG_RTE_ARCH_ARM64)),) SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_rxtx_vec_neon.c else ifeq ($(CONFIG_RTE_ARCH_X86),y) SRCS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += ixgbe_rxtx_vec_sse.c diff --git a/drivers/net/ixgbe/ixgbe_rxtx.h b/drivers/net/ixgbe/ixgbe_rxtx.h index 20a8b291d..7e09291b2 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx.h +++ b/drivers/net/ixgbe/ixgbe_rxtx.h @@ -33,7 +33,7 @@ #define RTE_IXGBE_DESCS_PER_LOOP 4 -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) #define RTE_IXGBE_RXQ_REARM_THRESH 32 #define RTE_IXGBE_MAX_RX_BURST RTE_IXGBE_RXQ_REARM_THRESH #endif @@ -117,7 +117,7 @@ struct ixgbe_rx_queue { uint8_t using_ipsec; /**< indicates that IPsec RX feature is in use */ #endif -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) uint16_t rxrearm_nb; /**< number of remaining to be re-armed */ uint16_t rxrearm_start; /**< the idx we start the re-arming from */ #endif -- 2.17.1
The include of 'arm_neon.h' causes issues to old gcc and aarch32. Including 'rte_vect.h' instead fixes these issues. Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> --- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c index 293b7c8bd..aa27ee177 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c @@ -5,13 +5,12 @@ #include <stdint.h> #include <rte_ethdev_driver.h> #include <rte_malloc.h> +#include <rte_vect.h> #include "ixgbe_ethdev.h" #include "ixgbe_rxtx.h" #include "ixgbe_rxtx_vec_common.h" -#include <arm_neon.h> - #pragma GCC diagnostic ignored "-Wcast-qual" static inline void -- 2.17.1
Expand vector PMD support to aarch32. Enable i40e PMD by default for armv7 make build. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> --- config/defconfig_arm-armv7a-linuxapp-gcc | 1 - drivers/net/i40e/Makefile | 2 +- drivers/net/i40e/i40e_rxtx_vec_neon.c | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc b/config/defconfig_arm-armv7a-linuxapp-gcc index e5d6b6a0c..ac9112086 100644 --- a/config/defconfig_arm-armv7a-linuxapp-gcc +++ b/config/defconfig_arm-armv7a-linuxapp-gcc @@ -38,7 +38,6 @@ CONFIG_RTE_LIBRTE_CXGBE_PMD=n CONFIG_RTE_LIBRTE_E1000_PMD=n CONFIG_RTE_LIBRTE_ENIC_PMD=n CONFIG_RTE_LIBRTE_FM10K_PMD=n -CONFIG_RTE_LIBRTE_I40E_PMD=n CONFIG_RTE_LIBRTE_VMXNET3_PMD=n CONFIG_RTE_LIBRTE_QEDE_PMD=n CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n diff --git a/drivers/net/i40e/Makefile b/drivers/net/i40e/Makefile index 7ec8d9533..43f10941b 100644 --- a/drivers/net/i40e/Makefile +++ b/drivers/net/i40e/Makefile @@ -69,7 +69,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += i40e_dcb.c SRCS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += i40e_ethdev.c SRCS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += i40e_rxtx.c -ifeq ($(CONFIG_RTE_ARCH_ARM64),y) +ifneq ($(filter y,$(CONFIG_RTE_ARCH_ARM) $(CONFIG_RTE_ARCH_ARM64)),) SRCS-$(CONFIG_RTE_LIBRTE_I40E_INC_VECTOR) += i40e_rxtx_vec_neon.c else ifeq ($(CONFIG_RTE_ARCH_PPC_64),y) SRCS-$(CONFIG_RTE_LIBRTE_I40E_INC_VECTOR) += i40e_rxtx_vec_altivec.c diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c index 1dfd0478b..67158f108 100644 --- a/drivers/net/i40e/i40e_rxtx_vec_neon.c +++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c @@ -6,6 +6,7 @@ #include <stdint.h> #include <rte_ethdev_driver.h> #include <rte_malloc.h> +#include <rte_vect.h> #include "base/i40e_prototype.h" #include "base/i40e_type.h" @@ -13,7 +14,6 @@ #include "i40e_rxtx.h" #include "i40e_rxtx_vec_common.h" -#include <arm_neon.h> #pragma GCC diagnostic ignored "-Wcast-qual" -- 2.17.1
On 6/24/2020 8:10 AM, Ruifeng Wang wrote:
> Build aarch32 binary on aarch64 platform hit issues with l3fwd [1]
> and ixgbe PMD [2]. This patch set is to fix these.
>
> When building with make, please refer to guide:
> http://patches.dpdk.org/patch/62820/
>
> When building with meson, requires series:
> http://patches.dpdk.org/cover/69536/
>
> [1] https://mails.dpdk.org/archives/dev/2020-April/162673.html
> [2] https://mails.dpdk.org/archives/dev/2020-April/163846.html
>
>
> v3:
> Remove ixgbe/i40e from armv7 config to set these PMDs enabled.
> v2:
> Fix aarch32 Make build for ixgbe, and enable ixgbe PMD by default.
> Add aarch32 support for i40e, and enable i40e PMD by default.
>
> Ruifeng Wang (4):
> arch/arm: add vcopyq intrinsic for aarch32
> net/ixgbe: add support for aarch32
> net/ixgbe: fix include of vector header file
> net/i40e: add support for aarch32
For series,
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Applied to dpdk-next-net/master, thanks.