Sirshak,The JVPP error was caused by a patch (10920) that somehow passed the Verify job, but failed during the merge job. I have just merged the patch (10965) which reverts the patch which introduced the JVPP build errors.
Thanks, -daw- On 3/5/2018 5:44 PM, Sirshak Das wrote:
Hi Marco, Thanks for replying. I am not sure if you read the last part of my email:Finally what is strange is if I copy dpdk-18.02.tar.gz to seperate location and turn MLx5 config and build this builds fine. Build drivers/net/mlx5 CC mlx5.o PMDINFO mlx5.o.pmd.c CC mlx5.o.pmd.o LD mlx5.o CC mlx5_glue.o CC mlx5_rxq.o CC mlx5_txq.o CC mlx5_rxtx.o CC mlx5_rxtx_vec.o CC mlx5_trigger.o CC mlx5_ethdev.o CC mlx5_mac.o CC mlx5_rxmode.o CC mlx5_vlan.o CC mlx5_stats.o CC mlx5_rss.o CC mlx5_mr.o CC mlx5_flow.o CC mlx5_socket.o AR librte_pmd_mlx5.a INSTALL-LIB librte_pmd_mlx5.aI dont know if Kernel Version is still an issue as dpdk(mlx5 pmd) works for me on its own. So in order to go past the issue I tried this change to vpp.mk: # DPDK configuration parameters vpp_uses_dpdk_mlx5_pmd = yes vpp_uses_external_dpdk = yes vpp_dpdk_inc_dir = <DPDK INSTALL DIR>/dpdk-18.02/build/include vpp_dpdk_lib_dir = <DPDK INSTALL DIR>/dpdk-18.02/build/lib vpp_dpdk_shared_lib = yes I was able to go past the issue but currently I am facing issue with jvpp building: $ javac -version javac 1.8.0_161 $ java -version java version "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode) Entering directory '/home/sirdas/code/common/vpp/build-root/build-vpp-native/vpp/vpp-api/java' JVPP GEN jvpp-registry/io_fd_vpp_jvpp_VppJNIConnection.h JVPP GEN jvpp-gtpu/io_fd_vpp_jvpp_gtpu_JVppGtpuImpl.h JVPP GEN jvpp-pppoe/io_fd_vpp_jvpp_pppoe_JVppPppoeImpl.h JVPP GEN jvpp-core/io_fd_vpp_jvpp_core_JVppCoreImpl.h JVPP GEN jvpp-ioampot/io_fd_vpp_jvpp_ioampot_JVppIoampotImpl.h JVPP GEN jvpp-acl/io_fd_vpp_jvpp_acl_JVppAclImpl.h JVPP GEN jvpp-ioamexport/io_fd_vpp_jvpp_ioamexport_JVppIoamexportImpl.h JVPP GEN jvpp-ioamtrace/io_fd_vpp_jvpp_ioamtrace_JVppIoamtraceImpl.h JVPP GEN jvpp-nat/io_fd_vpp_jvpp_nat_JVppNatImpl.h jvpp-core/target/io/fd/vpp/jvpp/core/callfacade/CallbackJVppCoreFacade.java:2177: error: cannot find symbol public final void wantIp4NbrStats(io.fd.vpp.jvpp.core.dto.WantIp4NbrStats request, io.fd.vpp.jvpp.core.callback.WantIp4NbrStatsCallback callback) throws io.fd.vpp.jvpp.VppInvocationException { ^ symbol: class WantIp4NbrStatsCallback location: package io.fd.vpp.jvpp.core.callback jvpp-core/target/io/fd/vpp/jvpp/core/callfacade/CallbackJVppCoreFacade.java:2183: error: cannot find symbol public final void wantIp6NbrStats(io.fd.vpp.jvpp.core.dto.WantIp6NbrStats request, io.fd.vpp.jvpp.core.callback.WantIp6NbrStatsCallback callback) throws io.fd.vpp.jvpp.VppInvocationException { ^ symbol: class WantIp6NbrStatsCallback location: package io.fd.vpp.jvpp.core.callback jvpp-core/target/io/fd/vpp/jvpp/core/callfacade/CallbackJVppCore.java:368: error: cannot find symbol void wantIp4NbrStats(io.fd.vpp.jvpp.core.dto.WantIp4NbrStats request, io.fd.vpp.jvpp.core.callback.WantIp4NbrStatsCallback callback) throws io.fd.vpp.jvpp.VppInvocationException; ^ symbol: class WantIp4NbrStatsCallback location: package io.fd.vpp.jvpp.core.callback jvpp-core/target/io/fd/vpp/jvpp/core/callfacade/CallbackJVppCore.java:369: error: cannot find symbol void wantIp6NbrStats(io.fd.vpp.jvpp.core.dto.WantIp6NbrStats request, io.fd.vpp.jvpp.core.callback.WantIp6NbrStatsCallback callback) throws io.fd.vpp.jvpp.VppInvocationException; ^ symbol: class WantIp6NbrStatsCallback location: package io.fd.vpp.jvpp.core.callback jvpp-core/target/io/fd/vpp/jvpp/core/future/FutureJVppCoreFacade.java:1815: error: incompatible types: inference variable REPLY has incompatible bounds return send(request); ^ equality constraints: WantIp4NbrStats upper bounds: JVppReply<REQ> where REPLY,REQ are type-variables: REPLY extends JVppReply<REQ> declared in method <REQ,REPLY>send(REQ) REQ extends JVppRequest declared in method <REQ,REPLY>send(REQ) jvpp-core/target/io/fd/vpp/jvpp/core/future/FutureJVppCoreFacade.java:1820: error: incompatible types: inference variable REPLY has incompatible bounds return send(request); ^ equality constraints: WantIp6NbrStats upper bounds: JVppReply<REQ> where REPLY,REQ are type-variables: REPLY extends JVppReply<REQ> declared in method <REQ,REPLY>send(REQ) REQ extends JVppRequest declared in method <REQ,REPLY>send(REQ) If you or anybody else could help me with the issue it will be great. Thank you Sirshak Das Marco Varlese writes:Hi Sirshak, Can you please take a look at this thread: https://lists.fd.io/g/vpp-dev/message/8219 Also, take a look at http://dpdk.org/doc/guides/nics/mlx5.html for detailed explanations and steps for DPDK to work with Mellanox NICs... Likely, it's a kernel issue: for Mellanox latest PMD drivers (DPDK 17.11 and above) you're required to have 4.15.x whilst I see you're running 4.10.x Hope this helps. Cheers, Marco On Thu, 2018-03-01 at 18:02 -0600, Sirshak Das wrote:Hi all, I am facing an issue with building VPP with DPDK (Mellanox Drivers enabled) on aarch64. The OFED version installed: $ ofed_info -s MLNX_OFED_LINUX-4.2-1.2.0.0: Kernel Version: $ uname -r 4.10.0-28-generic Operating System Version: Ubuntu 16.04.4 LTS (GNU/Linux 4.10.0-28-generic aarch64) gcc version: gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) Target Machine: Qualcomm Centriq lspci: 0004:01:00.0 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4] Steps I followed: $ git clone ssh://<my-user-id>@gerrit.fd.io:29418/vpp.git $ cd vpp/ $ sed -i '/vpp_uses_dpdk_mlx5_pmd/s/^# //g' build-data/platforms/vpp.mk $ make dpdk-install-dev DPDK_MLX5_PMD=y <INSTALL DIR>/vpp/dpdk/deb/_build/dpdk- 18.02/drivers/net/mlx5/mlx5_flow.c:38:8: error: redefinition of ‘struct ibv_flow_spec_counter_action’ struct ibv_flow_spec_counter_action { ^ In file included from <INSTALL DIR>/vpp/dpdk/deb/_build/dpdk- 18.02/drivers/net/mlx5/mlx5_flow.c:14:0: /usr/include/infiniband/verbs.h:1360:8: note: originally defined here struct ibv_flow_spec_counter_action { By looking at this file: <INSTALL DIR>/vpp/dpdk/deb/_build/dpdk-18.02/arm64-armv8a-linuxapp- gcc/build/drivers/net/mlx5/mlx5_autoconf.h Which looks like this: /* HAVE_IBV_DEVICE_VXLAN_SUPPORT is not defined. *//* HAVE_IBV_WQ_FLAG_RX_END_PADDING is not defined. *//* HAVE_IBV_MLX5_MOD_MPW is not defined. *//* HAVE_IBV_MLX5_MOD_CQE_128B_COMP is not defined. *//* HAVE_ETHTOOL_LINK_MODE_25G is not defined. */ /* HAVE_ETHTOOL_LINK_MODE_50G is not defined. *//* HAVE_ETHTOOL_LINK_MODE_100G is not defined. *//* HAVE_IBV_DEVICE_COUNTERS_SET_SUPPORT is not defined. */ So I moved my attentions to this file: <INSTALL DIR>/vpp/dpdk/deb/_build/dpdk-18.02/drivers/net/mlx5/Makefile This whole section fails: mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config- h.sh$Q $(RM) -f --'$@'$Q sh -- '$<' '$@' \HAVE_IBV_DEVICE_VXLAN_SUPPORT \infiniband/verbs.h\enum IBV_DEVICE_VXLAN_SUPPORT \$(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@'\HAVE_IBV_WQ_FLAG_RX_END_PADDING \infiniband/verbs.h\enum IBV_WQ_FLAG_RX_END_PADDING \$(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@'\HAVE_IBV_MLX5_MOD_MPW \infiniband/mlx5dv.h\enum MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED\$(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@'\HAVE_IBV_MLX5_MOD_CQE_128B_COMP \infiniband/mlx5dv.h\enum MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP\$(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@'\HAVE_ETHTOOL_LINK_MODE_25G \/usr/include/linux/ethtool.h \enum ETHTOOL_LINK_MODE_25000baseCR_Full_BIT \$(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@'\HAVE_ETHTOOL_LINK_MODE_50G \/usr/include/linux/ethtool.h \enum ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT \ $(AUTOCONF_OUTPUT)$Q sh -- '$<' '$@'\HAVE_ETHTOOL_LINK_MODE_100G \/usr/include/linux/ethtool.h\enum ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT \$(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@'\HAVE_IBV_DEVICE_COUNTERS_SET_SUPPORT \infiniband/verbs.h\enum IBV_FLOW_SPEC_ACTION_COUNT \$(AUTOCONF_OUTPUT)Which ideally shouldnt because all these files exist: $ ls -l /usr/include/infiniband/ total 156 -rw-r--r-- 1 root root 1939 Nov 25 12:17 arch.h -rw-r--r-- 1 root root 2897 Nov 25 12:17 ib.h -rw-r--r-- 1 root root 27353 Nov 25 12:17 kern-abi.h -rw-r--r-- 1 root root 12895 Nov 25 12:17 mlx4dv.h -rw-r--r-- 1 root root 17121 Nov 25 12:17 mlx5dv.h -rw-r--r-- 1 root root 5694 Nov 25 12:17 opcode.h -rw-r--r-- 1 root root 4074 Nov 25 12:17 sa.h -rw-r--r-- 1 root root 1622 Nov 25 12:17 sa-kern-abi.h -rw-r--r-- 1 root root 67777 Nov 25 12:17 verbs.h $ ls -l /usr/include/linux/ethtool.h -rw-r--r-- 1 root root 65636 Feb 12 17:44 /usr/include/linux/ethtool.h Finally what is strange is if I copy dpdk-18.02.tar.gz to seperate location and turn MLx5 config and build this builds fine. Build drivers/net/mlx5 CC mlx5.o PMDINFO mlx5.o.pmd.c CC mlx5.o.pmd.o LD mlx5.o CC mlx5_glue.o CC mlx5_rxq.o CC mlx5_txq.o CC mlx5_rxtx.o CC mlx5_rxtx_vec.o CC mlx5_trigger.o CC mlx5_ethdev.o CC mlx5_mac.o CC mlx5_rxmode.o CC mlx5_vlan.o CC mlx5_stats.o CC mlx5_rss.o CC mlx5_mr.o CC mlx5_flow.o CC mlx5_socket.o AR librte_pmd_mlx5.a INSTALL-LIB librte_pmd_mlx5.a I feel I am missing some trivial step in vpp build process please help me out I am new to vpp. Let me know if you need any more infor to debug this issue. Thank you Sirshak Das