I encountered the following issue: ovs-vswitchd with crashes when adding a dpdk port.
Building ovs with dpdk support is not straightforward because: - ovs doest not build with the latest dpdk version 1.7.1 - the document here http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=I NSTALL.DPDK;hb=HEAD refers to dpdk 1.6.0r2 but that doesn't work either. So I checked out dpdk 1.7.0 did some minor changes (combine libs and kcompat fix for kernel 3.13.0) Now ovs builds ok but: - if the database is empty then ovs-vswitchd starts but crashes on ovs-vsctl add-port ... type=dpdk - if the database already contains dpdk port configuration then ovs-vswitchd crashes at startup Logs seem to indicate a numa socket = -1 problem. Any ideea how to fix his? Is there any known good combination of dpdk and ovs-with-dpdk versions? Thanks, Daniel --------- OVS /opt/ovs# git log -1 | head -n 6 # commit 6db454dc00fa5d9693ebdf6c5e10c61030f8df8e # Author: Simon Horman <simon.hor...@netronome.com> # Date: Wed Sep 24 12:41:02 2014 +0000 # # ofproto-dpif-rid: correct logic error in rid_pool_alloc_id() # /opt/ovs# git status --short # ?? filelist # ?? tests/ovsclient DPDK /opt/dpdk# git log -1 # commit 9db7084fcdf6d57b892312ca641a97356629c04a # Author: Thomas Monjalon <thomas.monja...@6wind.com> # Date: Fri Jul 4 10:18:07 2014 +0200 # version: 1.7.0 # The makefile rule "showversion" needs a fix to handle empty RTE_VER_SUFFIX. # Signed-off-by: Thomas Monjalon <thomas.monja...@6wind.com> /opt/dpdk# git diff # diff --git a/config/common_linuxapp b/config/common_linuxapp # index 7bf5d80..a4cb508 100644 # --- a/config/common_linuxapp # +++ b/config/common_linuxapp # @@ -81,7 +81,7 @@ CONFIG_RTE_BUILD_SHARED_LIB=n # # # # Combine to one single library # # # -CONFIG_RTE_BUILD_COMBINE_LIBS=n # +CONFIG_RTE_BUILD_COMBINE_LIBS=y # CONFIG_RTE_LIBNAME="intel_dpdk" # # # # diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h # index 521a35d..d6a81ba 100644 # --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h # +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h # @@ -3845,7 +3845,7 @@ static inline struct sk_buff *__kc__vlan_hwaccel_put_tag(struct sk_buff *skb, # #define HAVE_ENCAP_TSO_OFFLOAD # #endif /* >= 3.10.0 */ # # -#if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) ) # +#if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0) ) # #if (!(RHEL_RELEASE_CODE && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,0))) # #ifdef NETIF_F_RXHASH # #define PKT_HASH_TYPE_L3 0 Environment export RTE_SDK=/opt/dpdk export RTE_TARGET=x86_64-native-linuxapp-gcc export DPDK_BUILD=$RTE_SDK/x86_64-native-linuxapp-gcc Build DPDK make T=$RTE_TARGET config make T=$RTE_TARGET -j 8 make T=$RTE_TARGET install OVS ./boot.sh ./configure --with-dpdk=$DPDK_BUILD LIBS=-ldl make make install Run Hardware lshw -sanitize -short | grep -e Xeon -e 'B DIMM' -e 82599 # /0/400 processor Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz # /0/401 processor Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz # /0/1000/0 memory 8GiB DIMM DDR3 Synchronous 1866 MHz (0.5 ns) # /0/1000/1 memory 8GiB DIMM DDR3 Synchronous 1866 MHz (0.5 ns) # /0/1000/2 memory 8GiB DIMM DDR3 Synchronous 1866 MHz (0.5 ns) # /0/1000/3 memory 8GiB DIMM DDR3 Synchronous 1866 MHz (0.5 ns) # /0/1000/c memory 8GiB DIMM DDR3 Synchronous 1866 MHz (0.5 ns) # /0/1000/d memory 8GiB DIMM DDR3 Synchronous 1866 MHz (0.5 ns) # /0/1000/e memory 8GiB DIMM DDR3 Synchronous 1866 MHz (0.5 ns) # /0/1000/f memory 8GiB DIMM DDR3 Synchronous 1866 MHz (0.5 ns) # /0/3.2/0 network 82599EB 10-Gigabit SFI/SFP+ Network Connection # /0/3.2/0.1 network 82599EB 10-Gigabit SFI/SFP+ Network Connection lspci | grep -i 82599 # 47:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01) # 47:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01) Kernel uname -a # Linux hwcompute1 3.13.0-35-generic #62~precise1-Ubuntu SMP Mon Aug 18 14:52:04 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux sed 's/^/# /;s/ / \\\n# /2g' /proc/cmdline # BOOT_IMAGE=vmlinuz.0A0A011E \ # root=/dev/nfs \ # rw \ # initrd=initrd.0A0A011E \ # nfsroot=10.10.1.20:/ons/output/hwcompute1 \ # ip=10.10.1.30::10.10.1.1:255.255.255.0:dell30:eth0:off \ # console=ttyS0,115200 \ # console=tty0 \ # rootwait \ # panic=1 \ # intremap=no_x2apic_optout \ # intel_iommu=on \ # iommu=pt \ # selinux=0 \ # enforcing=0 \ # rcu_nocb_poll \ # irqaffinity=0 \ # idle=poll \ # tsc=perfect \ # default_hugepagesz=1G \ # hugepagesz=1G \ # hugepages=8 \ # debug DPDK sudo modprobe uio sudo insmod build/kmod/igb_uio.ko sudo ./tools/dpdk_nic_bind.py --bind igb_uio 0000:47:00.0 igb_uio 0000:47:00.1 grep HugePages /proc/meminfo # AnonHugePages: 161792 kB # HugePages_Total: 8 # HugePages_Free: 8 # HugePages_Rsvd: 0 # HugePages_Surp: 0 OVS mkdir -p /usr/local/etc/openvswitch mkdir -p /usr/local/var/run/openvswitch sudo rm /usr/local/etc/openvswitch/conf.db sudo ovsdb-tool create \ /usr/local/etc/openvswitch/conf.db \ ./vswitchd/vswitch.ovsschema sudo ovsdb-server \ --remote=punix:/usr/local/var/run/openvswitch/db.sock \ --remote=db:Open_vSwitch,Open_vSwitch,manager_options \ --private-key=db:Open_vSwitch,SSL,private_key \ --certificate=db:Open_vSwitch,SSL,certificate \ --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \ --pidfile --detach sudo ovs-vsctl --no-wait init sudo modprobe openvswitch sudo ovs-vswitchd \ --dpdk -c 0x3 -n 4 \ -- \ unix:/usr/local/var/run/openvswitch/db.sock \ --pidfile \ -v # another console sudo ovs-vsctl add-br br0 sudo ovs-vsctl set bridge br0 datapath_type=netdev sudo ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk Results ovs-vswitchd console # 2014-09-25T09:33:30Z|00067|dpdk|INFO|Port 0: 00:1b:21:a3:e9:f8 # 2014-09-25T09:33:30Z|00068|dpdk|INFO|Port 0: 00:1b:21:a3:e9:f8 # 2014-09-25T09:33:30Z|00069|netdev|DBG|failed to set tx/rx queue for network device dpdk0:Success System log grep -i numa /var/log/syslog # Sep 25 16:03:29 localhost ovs-vswitchd[17688]: EAL: PCI device 0000:47:00.0 on NUMA socket -1 # Sep 25 16:03:29 localhost ovs-vswitchd[17688]: EAL: PCI device 0000:47:00.1 on NUMA socket -1 # Sep 25 16:03:29 localhost ovs-vswitchd: ovs|00003|ovs_numa|INFO|Discovered 20 CPU cores on NUMA node 0 # Sep 25 16:03:29 localhost ovs-vswitchd: ovs|00004|ovs_numa|INFO|Discovered 1 NUMA nodes and 20 CPU cores gdb stack trace Program received signal SIGSEGV, Segmentation fault. ovs_numa_get_n_unpinned_cores_on_numa (numa_id=<optimized out>) at lib/ovs-numa.c:240 240 LIST_FOR_EACH(core, list_node, &numa->cores) { (gdb) bt #0 ovs_numa_get_n_unpinned_cores_on_numa (numa_id=<optimized out>) at lib/ovs-numa.c:240 #1 0x000000000052a58d in dp_netdev_set_pmds_on_numa (numa_id=-1, dp=0x8f3a50) at lib/dpif-netdev.c:2331 #2 dp_netdev_set_pmds_on_numa (dp=0x8f3a50, numa_id=-1) at lib/dpif-netdev.c:2313 #3 0x000000000052ab98 in do_add_port (dp=0x8f3a50, devname=<optimized out>, type=<optimized out>, port_no=2) at lib/dpif-netdev.c:827 #4 0x000000000052ad3a in dpif_netdev_port_add (dpif=<optimized out>, netdev=0x7fff80cb9780, port_nop=0x7fffffffdddc) at lib/dpif-netdev.c:859 #5 0x000000000052dfca in dpif_port_add (dpif=0x8f6510, netdev=0x7fff80cb9780, port_nop=0x7fffffffde1c) at lib/dpif.c:522 #6 0x00000000004fca28 in port_add (ofproto_=0x8f3510, netdev=0x7fff80cb9780) at ofproto/ofproto-dpif.c:3216 #7 0x00000000004f12db in ofproto_port_add (ofproto=0x8f3510, netdev=0x7fff80cb9780, ofp_portp=0x7fffffffdf4c) at ofproto/ofproto.c:1796 #8 0x00000000004e2869 in iface_do_create (errp=0x7fffffffdf30, netdevp=<synthetic pointer>, ofp_portp=0x7fffffffdf4c, iface_cfg=0x8fc790, br=0x8f2ff0, port_cfg=<optimized out>) at vswitchd/bridge.c:1715 #9 iface_create (port_cfg=0x8fd2d0, iface_cfg=0x8fc790, br=0x8f2ff0) at vswitchd/bridge.c:1755 #10 bridge_add_ports__ (br=0x8f2ff0, wanted_ports=0x8f30b0, with_requested_port=false) at vswitchd/bridge.c:843 #11 0x00000000004e4efd in bridge_add_ports (wanted_ports=0x8f30b0, br=0x8f2ff0) at vswitchd/bridge.c:859 #12 bridge_reconfigure (ovs_cfg=0x8fdd40) at vswitchd/bridge.c:599 #13 0x00000000004e79f9 in bridge_run () at vswitchd/bridge.c:2824 #14 0x0000000000408775 in main (argc=4, argv=0x7fffffffe618) at vswitchd/ovs-vswitchd.c:116
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss