* [dpdk-users] Cross compile for ARM64 fails due to librte_vhost and pmdinfogen issues @ 2016-09-13 2:20 Michael Wildt [not found] ` <2139728.s9C09RKb8B@xps13> 0 siblings, 1 reply; 6+ messages in thread From: Michael Wildt @ 2016-09-13 2:20 UTC (permalink / raw) To: users Dear DPDK, I'm attempting to cross compile DPDK on an x86 for an ARM64 target. This fails in the following areas, using latest dpdk as of 9/12. When compiling natively there are no issues. - librte_vhost, fails with: /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio-net-user.c:250:23: error: array subscript is above array bounds [-Werror=array-bounds] rvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ]; ^ /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio-net-user.c:251:23: error: array subscript is above array bounds [-Werror=array-bounds] tvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_TXQ]; ^ /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio-net-user.c:250:23: error: array subscript is above array bounds [-Werror=array-bounds] rvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ]; ^ /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio-net-user.c:251:23: error: array subscript is above array bounds [-Werror=array-bounds] tvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_TXQ]; ^ cc1: all warnings being treated as errors - This is only a warning on the downloadable release v16.07 tar ball, not error as in this case. I'm guessing the compile flags must have been changed. - buildtools/pmdinfogen, fails with: == Build buildtools/pmdinfogen HOSTCC pmdinfogen.o /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_byteorder.h: Assembler messages: /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_byteorder.h:53: Error: no such instruction: `rev16 %bx,%bx' /projects/dpdk_test_wget/dpdk-16.07/mk/internal/rte.compile-pre.mk:138: recipe for target 'pmdinfogen.o' failed make[3]: *** [pmdinfogen.o] Error 1 /projects/dpdk_test_wget/dpdk-16.07/mk/rte.subdir.mk:61: recipe for target 'pmdinfogen' failed make[2]: *** [pmdinfogen] Error 2 /projects/dpdk_test_wget/dpdk-16.07/mk/rte.sdkbuild.mk:78: recipe for target 'buildtools' failed make[1]: *** [buildtools] Error 2 /projects/dpdk_test_wget/dpdk-16.07/mk/rte.sdkroot.mk:123: recipe for target 'all' failed make: *** [all] Error 2 - The issue is due to the rte_byteorder.h file which gets symlink'ed with the ARM version at the beginning of the build. The pmdinfogen is always compiled for x86 thus the asm is failing. I see two ways to address this. - Have pmdinfogen always pickup the local OS rte_byteorder.h file, not the ARCH symlinked one. - Fix pmdinfogen such that it gets cross compiled correctly as the rest of the code. Did a quick attempt by setting the HOST_OS to 0, , but then it fails at the HOST_LD. If the pmdinfogen commit is removed, by checking out v16.07-rc1 followed by a fresh build, then it is possible to cross compile for ARM64 fine. Used tool chain: gcc-linaro-aarch64-linux-gnu-4.9-2014.09 It would be great if the forum could help with patches on these two issues. Regards, Michael ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <2139728.s9C09RKb8B@xps13>]
* Re: [dpdk-users] Cross compile for ARM64 fails due to librte_vhost and pmdinfogen issues [not found] ` <2139728.s9C09RKb8B@xps13> @ 2016-09-13 11:45 ` Michael Wildt 2016-09-13 15:07 ` Thomas Monjalon 0 siblings, 1 reply; 6+ messages in thread From: Michael Wildt @ 2016-09-13 11:45 UTC (permalink / raw) To: Thomas Monjalon; +Cc: users Hi Thomas, Appreciate the assistance. Please see inline. On Tue, Sep 13, 2016 at 5:03 AM, Thomas Monjalon <thomas.monjalon@6wind.com> wrote: > Hi, > > 2016-09-12 22:20, Michael Wildt: > > I'm attempting to cross compile DPDK on an x86 for an ARM64 target. This > > fails in the following areas, using latest dpdk as of 9/12. When > compiling > > natively there are no issues. > > Your analysis below seems good. > Interestingly, I do not see such error (don't know why). > Please could you share the commands you are using? > Sure can. make config T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- ARCH=arm64 make T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- ARCH=arm64 RTE_KERNELDIR=/projects/kernel Thanks, Michael > > - librte_vhost, fails with: > > > > /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio- > net-user.c:250:23: > > error: array subscript is above array bounds [-Werror=array-bounds] > > rvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ]; > [...] > > - buildtools/pmdinfogen, fails with: > > > > == Build buildtools/pmdinfogen > > HOSTCC pmdinfogen.o > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_byteorder.h: > > Assembler messages: > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_byteorder.h:53: > > Error: no such instruction: `rev16 %bx,%bx' > [...] > > - The issue is due to the rte_byteorder.h file which gets symlink'ed > with > > the ARM version at the beginning of the build. The pmdinfogen is always > > compiled for x86 thus the asm is failing. I see two ways to address this. > > > > - Have pmdinfogen always pickup the local OS rte_byteorder.h file, not > the > > ARCH symlinked one. > > Yes we should not use DPDK headers in pmdinfogen or have a host-include/. > > > - Fix pmdinfogen such that it gets cross compiled correctly as the rest > of > > the code. Did a quick attempt by setting the HOST_OS to 0, , but then it > > fails at the HOST_LD. > > No it must be native because it is part of the build system. > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-users] Cross compile for ARM64 fails due to librte_vhost and pmdinfogen issues 2016-09-13 11:45 ` Michael Wildt @ 2016-09-13 15:07 ` Thomas Monjalon 2016-09-13 18:35 ` Michael Wildt 0 siblings, 1 reply; 6+ messages in thread From: Thomas Monjalon @ 2016-09-13 15:07 UTC (permalink / raw) To: Michael Wildt; +Cc: users 2016-09-13 07:45, Michael Wildt: > Hi Thomas, > > Appreciate the assistance. Please see inline. > > > On Tue, Sep 13, 2016 at 5:03 AM, Thomas Monjalon <thomas.monjalon@6wind.com> > wrote: > > > Hi, > > > > 2016-09-12 22:20, Michael Wildt: > > > I'm attempting to cross compile DPDK on an x86 for an ARM64 target. This > > > fails in the following areas, using latest dpdk as of 9/12. When > > compiling > > > natively there are no issues. > > > > Your analysis below seems good. > > Interestingly, I do not see such error (don't know why). > > Please could you share the commands you are using? > > > > Sure can. > > make config T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ > toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- > ARCH=arm64 > > make T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ > toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- > ARCH=arm64 RTE_KERNELDIR=/projects/kernel > > > > - librte_vhost, fails with: > > > > > > /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio- > > net-user.c:250:23: > > > error: array subscript is above array bounds [-Werror=array-bounds] > > > rvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ]; > > [...] > > > - buildtools/pmdinfogen, fails with: > > > > > > == Build buildtools/pmdinfogen > > > HOSTCC pmdinfogen.o > > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_byteorder.h: > > > Assembler messages: > > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_byteorder.h:53: > > > Error: no such instruction: `rev16 %bx,%bx' > > [...] > > > - The issue is due to the rte_byteorder.h file which gets > > > symlink'ed with the ARM version at the beginning of the build. > > > The pmdinfogen is always compiled for x86 thus the asm is failing. It is definitely something to fix. In the meantime, you should be able to compile DPDK by using a more recent toolchain. This error is in: /* fix missing __builtin_bswap16 for gcc older then 4.8 */ #if !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) I know you are using gcc-4.9 but maybe __GNUC_MINOR__ is wrong in yours. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-users] Cross compile for ARM64 fails due to librte_vhost and pmdinfogen issues 2016-09-13 15:07 ` Thomas Monjalon @ 2016-09-13 18:35 ` Michael Wildt 2016-09-14 7:25 ` Hemant Agrawal 0 siblings, 1 reply; 6+ messages in thread From: Michael Wildt @ 2016-09-13 18:35 UTC (permalink / raw) To: Thomas Monjalon; +Cc: users Hi Thomas, The Linaro gcc 4.9 is correct when it gets to __GNUC_MINOR__, used a test application. Its actually 4.9.2. Tried a newer Linaro tool chain, turned out to be a bit more complicated since that does not work on RHEL6, is however a success. With Linaro 5.3 one can cross compile dpdk fine with no errors, though the rte_byteorder.h file still points to arm's version, but pmdinfogen builds. Probably should still fix both issues just to keep the base clean. At least I have a workaround in the interim. Thanks for the help. Thanks, Michael On Tue, Sep 13, 2016 at 11:07 AM, Thomas Monjalon <thomas.monjalon@6wind.com > wrote: > 2016-09-13 07:45, Michael Wildt: > > Hi Thomas, > > > > Appreciate the assistance. Please see inline. > > > > > > On Tue, Sep 13, 2016 at 5:03 AM, Thomas Monjalon < > thomas.monjalon@6wind.com> > > wrote: > > > > > Hi, > > > > > > 2016-09-12 22:20, Michael Wildt: > > > > I'm attempting to cross compile DPDK on an x86 for an ARM64 target. > This > > > > fails in the following areas, using latest dpdk as of 9/12. When > > > compiling > > > > natively there are no issues. > > > > > > Your analysis below seems good. > > > Interestingly, I do not see such error (don't know why). > > > Please could you share the commands you are using? > > > > > > > Sure can. > > > > make config T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ > > toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/ > bin/aarch64-linux-gnu- > > ARCH=arm64 > > > > make T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ > > toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/ > bin/aarch64-linux-gnu- > > ARCH=arm64 RTE_KERNELDIR=/projects/kernel > > > > > > - librte_vhost, fails with: > > > > > > > > /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio- > > > net-user.c:250:23: > > > > error: array subscript is above array bounds [-Werror=array-bounds] > > > > rvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ]; > > > [...] > > > > - buildtools/pmdinfogen, fails with: > > > > > > > > == Build buildtools/pmdinfogen > > > > HOSTCC pmdinfogen.o > > > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_byteorder.h: > > > > Assembler messages: > > > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_ > byteorder.h:53: > > > > Error: no such instruction: `rev16 %bx,%bx' > > > [...] > > > > - The issue is due to the rte_byteorder.h file which gets > > > > symlink'ed with the ARM version at the beginning of the build. > > > > The pmdinfogen is always compiled for x86 thus the asm is failing. > > It is definitely something to fix. > In the meantime, you should be able to compile DPDK by using a more recent > toolchain. This error is in: > > /* fix missing __builtin_bswap16 for gcc older then 4.8 */ > #if !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) > > I know you are using gcc-4.9 but maybe __GNUC_MINOR__ is wrong in yours. > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-users] Cross compile for ARM64 fails due to librte_vhost and pmdinfogen issues 2016-09-13 18:35 ` Michael Wildt @ 2016-09-14 7:25 ` Hemant Agrawal 2016-09-14 13:47 ` Michael Wildt 0 siblings, 1 reply; 6+ messages in thread From: Hemant Agrawal @ 2016-09-14 7:25 UTC (permalink / raw) To: Michael Wildt, Thomas Monjalon; +Cc: users Hi Michael, One of the problem, I found with Linaro gcc 4.9 toolchain for i686 (default one), that it seems to be built with older kernel headers (<3.8). This usages older linux/vhost.h file. However, we have not observed this issue with x86_64 based toolchain on 64 bit m/c. https://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/ Regards, Hemant > -----Original Message----- > From: users [mailto:users-bounces@dpdk.org] On Behalf Of Michael Wildt > Sent: Wednesday, September 14, 2016 12:05 AM > To: Thomas Monjalon <thomas.monjalon@6wind.com> > Cc: users@dpdk.org > Subject: Re: [dpdk-users] Cross compile for ARM64 fails due to librte_vhost and > pmdinfogen issues > > Hi Thomas, > > The Linaro gcc 4.9 is correct when it gets to __GNUC_MINOR__, used a test > application. Its actually 4.9.2. > > Tried a newer Linaro tool chain, turned out to be a bit more complicated since > that does not work on RHEL6, is however a success. With Linaro 5.3 one can > cross compile dpdk fine with no errors, though the rte_byteorder.h file still > points to arm's version, but pmdinfogen builds. > > Probably should still fix both issues just to keep the base clean. > > At least I have a workaround in the interim. > > Thanks for the help. > > Thanks, > Michael > > > On Tue, Sep 13, 2016 at 11:07 AM, Thomas Monjalon > <thomas.monjalon@6wind.com > > wrote: > > > 2016-09-13 07:45, Michael Wildt: > > > Hi Thomas, > > > > > > Appreciate the assistance. Please see inline. > > > > > > > > > On Tue, Sep 13, 2016 at 5:03 AM, Thomas Monjalon < > > thomas.monjalon@6wind.com> > > > wrote: > > > > > > > Hi, > > > > > > > > 2016-09-12 22:20, Michael Wildt: > > > > > I'm attempting to cross compile DPDK on an x86 for an ARM64 target. > > This > > > > > fails in the following areas, using latest dpdk as of 9/12. When > > > > compiling > > > > > natively there are no issues. > > > > > > > > Your analysis below seems good. > > > > Interestingly, I do not see such error (don't know why). > > > > Please could you share the commands you are using? > > > > > > > > > > Sure can. > > > > > > make config T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ > > > toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/ > > bin/aarch64-linux-gnu- > > > ARCH=arm64 > > > > > > make T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ > > > toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/ > > bin/aarch64-linux-gnu- > > > ARCH=arm64 RTE_KERNELDIR=/projects/kernel > > > > > > > > - librte_vhost, fails with: > > > > > > > > > > /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio- > > > > net-user.c:250:23: > > > > > error: array subscript is above array bounds [-Werror=array-bounds] > > > > > rvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ]; > > > > [...] > > > > > - buildtools/pmdinfogen, fails with: > > > > > > > > > > == Build buildtools/pmdinfogen > > > > > HOSTCC pmdinfogen.o > > > > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_byteorder.h: > > > > > Assembler messages: > > > > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_ > > byteorder.h:53: > > > > > Error: no such instruction: `rev16 %bx,%bx' > > > > [...] > > > > > - The issue is due to the rte_byteorder.h file which gets > > > > > symlink'ed with the ARM version at the beginning of the build. > > > > > The pmdinfogen is always compiled for x86 thus the asm is failing. > > > > It is definitely something to fix. > > In the meantime, you should be able to compile DPDK by using a more > > recent toolchain. This error is in: > > > > /* fix missing __builtin_bswap16 for gcc older then 4.8 */ #if > > !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) > > > > I know you are using gcc-4.9 but maybe __GNUC_MINOR__ is wrong in yours. > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-users] Cross compile for ARM64 fails due to librte_vhost and pmdinfogen issues 2016-09-14 7:25 ` Hemant Agrawal @ 2016-09-14 13:47 ` Michael Wildt 0 siblings, 0 replies; 6+ messages in thread From: Michael Wildt @ 2016-09-14 13:47 UTC (permalink / raw) To: Hemant Agrawal; +Cc: Thomas Monjalon, users Hi Hemant, Thanks for the pointer to the 4.9.3 version. Haven't had issues with 4.9.2 but good to know. I gave that one a try and that works as well but as with the 5.3 I have to be on a Ubuntu not RHEL6 to make it work. Thanks, Michael On Wed, Sep 14, 2016 at 3:25 AM, Hemant Agrawal <hemant.agrawal@nxp.com> wrote: > Hi Michael, > One of the problem, I found with Linaro gcc 4.9 toolchain for i686 > (default one), that it seems to be built with older kernel headers (<3.8). > This usages older linux/vhost.h file. > > However, we have not observed this issue with x86_64 based toolchain on 64 > bit m/c. > https://releases.linaro.org/14.11/components/toolchain/ > binaries/aarch64-linux-gnu/ > > Regards, > Hemant > > > -----Original Message----- > > From: users [mailto:users-bounces@dpdk.org] On Behalf Of Michael Wildt > > Sent: Wednesday, September 14, 2016 12:05 AM > > To: Thomas Monjalon <thomas.monjalon@6wind.com> > > Cc: users@dpdk.org > > Subject: Re: [dpdk-users] Cross compile for ARM64 fails due to > librte_vhost and > > pmdinfogen issues > > > > Hi Thomas, > > > > The Linaro gcc 4.9 is correct when it gets to __GNUC_MINOR__, used a test > > application. Its actually 4.9.2. > > > > Tried a newer Linaro tool chain, turned out to be a bit more complicated > since > > that does not work on RHEL6, is however a success. With Linaro 5.3 one > can > > cross compile dpdk fine with no errors, though the rte_byteorder.h file > still > > points to arm's version, but pmdinfogen builds. > > > > Probably should still fix both issues just to keep the base clean. > > > > At least I have a workaround in the interim. > > > > Thanks for the help. > > > > Thanks, > > Michael > > > > > > On Tue, Sep 13, 2016 at 11:07 AM, Thomas Monjalon > > <thomas.monjalon@6wind.com > > > wrote: > > > > > 2016-09-13 07:45, Michael Wildt: > > > > Hi Thomas, > > > > > > > > Appreciate the assistance. Please see inline. > > > > > > > > > > > > On Tue, Sep 13, 2016 at 5:03 AM, Thomas Monjalon < > > > thomas.monjalon@6wind.com> > > > > wrote: > > > > > > > > > Hi, > > > > > > > > > > 2016-09-12 22:20, Michael Wildt: > > > > > > I'm attempting to cross compile DPDK on an x86 for an ARM64 > target. > > > This > > > > > > fails in the following areas, using latest dpdk as of 9/12. When > > > > > compiling > > > > > > natively there are no issues. > > > > > > > > > > Your analysis below seems good. > > > > > Interestingly, I do not see such error (don't know why). > > > > > Please could you share the commands you are using? > > > > > > > > > > > > > Sure can. > > > > > > > > make config T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ > > > > toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/ > > > bin/aarch64-linux-gnu- > > > > ARCH=arm64 > > > > > > > > make T=arm64-armv8a-linuxapp-gcc CROSS=/projects/ccxsw/ > > > > toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/ > > > bin/aarch64-linux-gnu- > > > > ARCH=arm64 RTE_KERNELDIR=/projects/kernel > > > > > > > > > > - librte_vhost, fails with: > > > > > > > > > > > > /projects/dpdk_latest/lib/librte_vhost/vhost_user/virtio- > > > > > net-user.c:250:23: > > > > > > error: array subscript is above array bounds > [-Werror=array-bounds] > > > > > > rvq = dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ]; > > > > > [...] > > > > > > - buildtools/pmdinfogen, fails with: > > > > > > > > > > > > == Build buildtools/pmdinfogen > > > > > > HOSTCC pmdinfogen.o > > > > > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_ > byteorder.h: > > > > > > Assembler messages: > > > > > > /projects/dpdk_test_wget/dpdk-16.07/build/include/rte_ > > > byteorder.h:53: > > > > > > Error: no such instruction: `rev16 %bx,%bx' > > > > > [...] > > > > > > - The issue is due to the rte_byteorder.h file which gets > > > > > > symlink'ed with the ARM version at the beginning of the build. > > > > > > The pmdinfogen is always compiled for x86 thus the asm is > failing. > > > > > > It is definitely something to fix. > > > In the meantime, you should be able to compile DPDK by using a more > > > recent toolchain. This error is in: > > > > > > /* fix missing __builtin_bswap16 for gcc older then 4.8 */ #if > > > !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) > > > > > > I know you are using gcc-4.9 but maybe __GNUC_MINOR__ is wrong in > yours. > > > > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-09-14 13:48 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-09-13 2:20 [dpdk-users] Cross compile for ARM64 fails due to librte_vhost and pmdinfogen issues Michael Wildt [not found] ` <2139728.s9C09RKb8B@xps13> 2016-09-13 11:45 ` Michael Wildt 2016-09-13 15:07 ` Thomas Monjalon 2016-09-13 18:35 ` Michael Wildt 2016-09-14 7:25 ` Hemant Agrawal 2016-09-14 13:47 ` Michael Wildt
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).