On Tue, Dec 15, 2020 at 8:25 PM Richardson, Bruce <[email protected]> wrote: > > > > > -----Original Message----- > > From: Tonghao Zhang <[email protected]> > > Sent: Tuesday, December 15, 2020 12:20 PM > > To: Ilya Maximets <[email protected]> > > Cc: Pai G, Sunil <[email protected]>; ovs dev <[email protected]>; > > Richardson, Bruce <[email protected]>; David Marchand > > <[email protected]>; Stokes, Ian <[email protected]> > > Subject: Re: [ovs-dev] [PATCH dpdk-latest v4] build: Add support for DPDK > > meson build. > > > > On Tue, Dec 15, 2020 at 5:32 PM Ilya Maximets <[email protected]> wrote: > > > > > > On 12/15/20 5:02 AM, Tonghao Zhang wrote: > > > > On Thu, Sep 3, 2020 at 2:06 AM Sunil Pai G <[email protected]> > > wrote: > > > >> > > > >> Make based build is deprecated in DPDK. Meson based > > > >> build to be used for future DPDK releases. > > > >> > > > >> This updates travis, configure script and documentation > > > >> for using DPDK Meson with OVS. > > > >> > > > >> Tested-at: https://travis-ci.org/github/Sunil-Pai-G/ovs- > > copy/builds/723510063 > > > >> Signed-off-by: Sunil Pai G <[email protected]> > > > >> --- > > > >> v3->v4: > > > >> - Fix checkpatch errors > > > >> > > > >> v2->v3: > > > >> - Update Documentation for vhost-user > > > >> > > > >> v1->v2: > > > >> - Update Documentation > > > >> - Simplify the pkg-config parsing script > > > >> - Rename and move the pkg-config parsing script to python dir > > > >> - Update travis to: > > > >> - install DPDK to cached dir > > > >> - disable DPDK tests > > > >> - removed fPIC flag for DPDK > > > >> - removed cross compilation for aarch64 > > > >> --- > > > >> .travis.yml | 3 ++ > > > >> .travis/linux-build.sh | 39 ++++++++++----- > > > >> .travis/linux-prepare.sh | 1 + > > > >> Documentation/intro/install/afxdp.rst | 2 +- > > > >> Documentation/intro/install/dpdk.rst | 63 ++++++++++++++++++++-- > > -- > > > >> Documentation/topics/dpdk/vhost-user.rst | 18 +------ > > > >> acinclude.m4 | 44 +++++++++++------ > > > >> python/automake.mk | 3 +- > > > >> python/build/pkgcfg.py | 30 +++++++++++ > > > >> 9 files changed, 149 insertions(+), 54 deletions(-) > > > >> create mode 100644 python/build/pkgcfg.py > > > >> > > > >> diff --git a/.travis.yml b/.travis.yml > > > >> index 3dd5d1d23..a8f9a4d79 100644 > > > >> --- a/.travis.yml > > > >> +++ b/.travis.yml > > > >> @@ -27,6 +27,9 @@ addons: > > > >> - selinux-policy-dev > > > >> - libunbound-dev > > > >> - libunwind-dev > > > >> + - python3-setuptools > > > >> + - python3-wheel > > > >> + - ninja-build > > > >> > > > >> before_install: ./.travis/${TRAVIS_OS_NAME}-prepare.sh > > > >> > > > >> diff --git a/.travis/linux-build.sh b/.travis/linux-build.sh > > > >> index 817bf24aa..14ef833c9 100755 > > > >> --- a/.travis/linux-build.sh > > > >> +++ b/.travis/linux-build.sh > > > >> @@ -85,17 +85,29 @@ function install_dpdk() > > > >> { > > > >> local DPDK_VER=$1 > > > >> local VERSION_FILE="dpdk-dir/travis-dpdk-cache-version" > > > >> + local DPDK_OPTS="" > > > >> + local DPDK_LIB="" > > > >> > > > >> if [ -z "$TRAVIS_ARCH" ] || > > > >> [ "$TRAVIS_ARCH" == "amd64" ]; then > > > >> - TARGET="x86_64-native-linuxapp-gcc" > > > >> + DPDK_LIB=$(pwd)/dpdk-dir/build/lib/x86_64-linux-gnu > > > >> elif [ "$TRAVIS_ARCH" == "aarch64" ]; then > > > >> - TARGET="arm64-armv8a-linuxapp-gcc" > > > >> + DPDK_LIB=$(pwd)/dpdk-dir/build/lib/aarch64-linux-gnu > > > >> else > > > >> echo "Target is unknown" > > > >> exit 1 > > > >> fi > > > >> > > > >> + if [ "$DPDK_SHARED" ]; then > > > >> + EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=shared" > > > >> + export LD_LIBRARY_PATH=$DPDK_LIB/:$LD_LIBRARY_PATH > > > >> + else > > > >> + EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=static" > > > >> + fi > > > >> + > > > >> + # Export the following path for pkg-config to find the .pc file. > > > >> + export PKG_CONFIG_PATH=$DPDK_LIB/pkgconfig/:$PKG_CONFIG_PATH > > > >> + > > > >> if [ "${DPDK_VER##refs/*/}" != "${DPDK_VER}" ]; then > > > >> # Avoid using cache for git tree build. > > > >> rm -rf dpdk-dir > > > >> @@ -108,7 +120,8 @@ function install_dpdk() > > > >> if [ -f "${VERSION_FILE}" ]; then > > > >> VER=$(cat ${VERSION_FILE}) > > > >> if [ "${VER}" = "${DPDK_VER}" ]; then > > > >> - EXTRA_OPTS="${EXTRA_OPTS} --with-dpdk=$(pwd)/dpdk- > > dir/build" > > > >> + # Update the library paths. > > > >> + sudo ldconfig > > > >> echo "Found cached DPDK ${VER} build in $(pwd)/dpdk- > > dir" > > > >> return > > > >> fi > > > >> @@ -122,16 +135,20 @@ function install_dpdk() > > > >> pushd dpdk-dir > > > >> fi > > > >> > > > >> - make config CC=gcc T=$TARGET > > > >> + # Disable building DPDK unit tests. Not needed for OVS build or > > tests. > > > >> + DPDK_OPTS="$DPDK_OPTS -Dtests=false" > > > >> > > > >> - if [ "$DPDK_SHARED" ]; then > > > >> - sed -i '/CONFIG_RTE_BUILD_SHARED_LIB=n/s/=n/=y/' > > build/.config > > > >> - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/$TARGET/lib > > > >> - fi > > > >> + # Install DPDK using prefix. > > > >> + DPDK_OPTS="$DPDK_OPTS --prefix=$(pwd)/build" > > > >> + > > > >> + CC=gcc meson $DPDK_OPTS build > > > >> + ninja -C build > > > >> + sudo ninja -C build install > > > >> + > > > >> + # Update the library paths. > > > >> + sudo ldconfig > > > >> > > > >> - make -j4 CC=gcc EXTRA_CFLAGS='-fPIC' > > > >> - EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=$(pwd)/build" > > > >> - echo "Installed DPDK source in $(pwd)" > > > >> + echo "Installed DPDK source" > > > >> popd > > > >> echo "${DPDK_VER}" > ${VERSION_FILE} > > > >> } > > > >> diff --git a/.travis/linux-prepare.sh b/.travis/linux-prepare.sh > > > >> index 71eb347e8..1baa11641 100755 > > > >> --- a/.travis/linux-prepare.sh > > > >> +++ b/.travis/linux-prepare.sh > > > >> @@ -22,6 +22,7 @@ cd .. > > > >> > > > >> pip3 install --disable-pip-version-check --user flake8 hacking > > > >> pip3 install --user --upgrade docutils > > > >> +pip3 install --user 'meson==0.47.1' > > > >> > > > >> if [ "$M32" ]; then > > > >> # Installing 32-bit libraries. > > > >> diff --git a/Documentation/intro/install/afxdp.rst > > b/Documentation/intro/install/afxdp.rst > > > >> index 3c8f78825..327f2b3df 100644 > > > >> --- a/Documentation/intro/install/afxdp.rst > > > >> +++ b/Documentation/intro/install/afxdp.rst > > > >> @@ -396,7 +396,7 @@ PVP using vhostuser device > > > >> -------------------------- > > > >> First, build OVS with DPDK and AFXDP:: > > > >> > > > >> - ./configure --enable-afxdp --with-dpdk=<dpdk path> > > > >> + ./configure --enable-afxdp --with-dpdk=shared|static|<dpdk path> > > > >> make -j4 && make install > > > >> > > > >> Create a vhost-user port from OVS:: > > > >> diff --git a/Documentation/intro/install/dpdk.rst > > b/Documentation/intro/install/dpdk.rst > > > >> index 39544f835..cd7e51c75 100644 > > > >> --- a/Documentation/intro/install/dpdk.rst > > > >> +++ b/Documentation/intro/install/dpdk.rst > > > >> @@ -62,6 +62,8 @@ Detailed system requirements can be found at `DPDK > > requirements`_. > > > >> .. _DPDK supported NIC: http://dpdk.org/doc/nics > > > >> .. _DPDK requirements: > > http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html > > > >> > > > >> +.. _dpdk-install: > > > >> + > > > >> Installing > > > >> ---------- > > > >> > > > >> @@ -76,10 +78,31 @@ Install DPDK > > > >> $ export DPDK_DIR=/usr/src/dpdk-stable-19.11.2 > > > >> $ cd $DPDK_DIR > > > >> > > > >> +#. Configure and install DPDK using Meson > > > >> + > > > >> + Meson is the preferred tool to build recent DPDK releases > > > >> + as Make support is deprecated and will be removed from DPDK > > 20.11. > > > >> + OVS supports DPDK Meson builds from DPDK 19.11 onwards. > > > >> + > > > >> + Build and install the DPDK library:: > > > >> + > > > >> + $ export DPDK_TARGET=x86_64-native-linuxapp-gcc > > > >> + $ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET > > > >> + $ meson $DPDK_TARGET > > > >> + $ ninja -C $DPDK_TARGET > > > >> + $ sudo ninja -C $DPDK_TARGET install > > > >> + $ sudo ldconfig > > > >> + > > > >> + Detailed information can be found at `DPDK documentation`_. > > > >> + > > > >> #. (Optional) Configure DPDK as a shared library > > > >> > > > >> - DPDK can be built as either a static library or a shared library. > > By > > > >> - default, it is configured for the former. If you wish to use the > > latter, set > > > >> + When using Meson, DPDK is built both as static and shared > > library. > > > >> + So no extra configuration is required in this case. > > > >> + > > > >> + In case of Make, DPDK can be built as either a static library or > > a shared > > > >> + library. By default, it is configured for the former. If you > > wish to use > > > >> + the latter, set > > > >> ``CONFIG_RTE_BUILD_SHARED_LIB=y`` in > > ``$DPDK_DIR/config/common_base``. > > > >> > > > >> .. note:: > > > >> @@ -87,7 +110,7 @@ Install DPDK > > > >> Minor performance loss is expected when using OVS with a > > shared DPDK > > > >> library compared to a static DPDK library. > > > >> > > > >> -#. Configure and install DPDK > > > >> +#. Configure and install DPDK using Make > > > >> > > > >> Build and install the DPDK library:: > > > >> > > > >> @@ -97,12 +120,22 @@ Install DPDK > > > >> > > > >> #. (Optional) Export the DPDK shared library location > > > >> > > > >> - If DPDK was built as a shared library, export the path to this > > library for > > > >> - use when building OVS:: > > > >> + If DPDK was built as a shared library using Make, export the path > > to this > > > >> + library for use when building OVS:: > > > >> > > > >> $ export LD_LIBRARY_PATH=$DPDK_DIR/x86_64-native-linuxapp- > > gcc/lib > > > >> > > > >> + In case of Meson, exporting the path to library is not necessary > > if > > > >> + the DPDK libraries are system installed. For libraries installed > > using > > > >> + a prefix(assuming $DPDK_INSTALL in the below case), export the > > path to this > > > >> + library and also update the $PKG_CONFIG_PATH for use before > > building OVS:: > > > >> + > > > >> + $ export $DPDK_LIB=$DPDK_INSTALL/lib/x86_64-linux-gnu > > > >> + $ export LD_LIBRARY_PATH=$DPDK_LIB/:$LD_LIBRARY_PATH > > > >> + $ export PKG_CONFIG_PATH=$DPDK_LIB/pkgconfig/:$PKG_CONFIG_PATH > > > >> + > > > >> .. _DPDK sources: http://dpdk.org/rel > > > >> +.. _DPDK documentation: > > https://doc.dpdk.org/guides/linux_gsg/build_dpdk.html > > > >> > > > >> Install OVS > > > >> ~~~~~~~~~~~ > > > >> @@ -121,17 +154,27 @@ has to be configured to build against the DPDK > > library (``--with-dpdk``). > > > >> > > > >> #. Bootstrap, if required, as described in :ref:`general- > > bootstrapping` > > > >> > > > >> -#. Configure the package using the ``--with-dpdk`` flag:: > > > >> +#. Configure the package using the ``--with-dpdk`` flag: > > > >> + > > > >> + Depending on the tool used to build DPDK and the type of > > > >> + DPDK library to use, one can configure OVS as follows: > > > >> + > > > >> + When DPDK is built using Meson, and OVS must consume DPDK shared > > libraries > > > >> + (also equivalent to leaving --with-dpdk option empty):: > > > >> + > > > >> + $ ./configure --with-dpdk=shared > > > > Hi all > > > > when I build ovs with --with-dpdk=shared, Compilation is fine, but we > > > > I launch the ovs: > > > > > > > > 41 2020-12-14T10:42:22.964Z|00018|dpdk|INFO|EAL ARGS: ovs-vswitchd -a > > > > > > 0000:82:00.0,dv_flow_en=1,dv_esw_en=1,l3_vxlan_en=1,dv_xmeta_en=2,represen > > tor=[0-6] > > > > -c 0xe --huge-dir /dev/hugepages --socket -mem 1024,1024 > > > > --socket-limit 1024,1024. > > > > 42 2020-12-14T10:42:22.969Z|00019|dpdk|INFO|EAL: Detected 56 lcore(s) > > > > 43 2020-12-14T10:42:22.969Z|00020|dpdk|INFO|EAL: Detected 2 NUMA nodes > > > > 44 2020-12-14T10:42:22.969Z|00021|dpdk|ERR|EAL: failed to parse device > > > > "0000:82:00.0" > > > > 45 2020-12-14T10:42:22.969Z|00022|dpdk|ERR|EAL: Unable to parse device > > > > > > '0000:82:00.0,dv_flow_en=1,dv_esw_en=1,l3_vxlan_en=1,dv_xmeta_en=2,represe > > ntor=[0-6]' > > > > 46 2020-12-14T10:42:22.969Z|00023|dpdk|EMER|Unable to initialize DPDK: > > > > No such device > > > > > > > > In dpdk: > > > > eal_plugins_init > > > > rte_pci_scan > > > > rte_bus_register > > > > eal_option_device_parse -- no pci bus > > > > > > > > pkg-config is pkgconf-1.4.2 > > > >> + When DPDK is built using Meson, and OVS must consume DPDK static > > libraries:: > > > >> + > > > >> + $ ./configure --with-dpdk=static > > > > Only one issue, if we use the pkgconfig-0.27 > > > > The ovs log: > > > > 2020-12-14T11:58:22.622Z|00018|dpdk|INFO|EAL ARGS: ovs-vswitchd -a > > > > > > 0000:82:00.0,dv_flow_en=1,dv_esw_en=1,l3_vxlan_en=1,dv_xmeta_en=2,represen > > tor=[0-6] > > > > -c 0xe --huge-dir /dev/hugepages --socket-mem 1024,1024 --socket-limit > > > > 1024,1024. > > > > 2020-12-14T11:58:22.627Z|00019|dpdk|INFO|EAL: Detected 56 lcore(s) > > > > 2020-12-14T11:58:22.627Z|00020|dpdk|INFO|EAL: Detected 2 NUMA nodes > > > > 2020-12-14T11:58:22.627Z|00021|dpdk|ERR|EAL: failed to parse device > > > > "0000:82:00.0" > > > > 2020-12-14T11:58:22.627Z|00022|dpdk|ERR|EAL: Unable to parse device > > > > > > '0000:82:00.0,dv_flow_en=1,dv_esw_en=1,l3_vxlan_en=1,dv_xmeta_en=2,represe > > ntor=[0-6]' > > > > 2020-12-14T11:58:22.627Z|00023|dpdk|EMER|Unable to initialize DPDK: No > > > > such device > > > > > > > > Because /bin/pkg-config --static --libs libdpdk > > > > pkg_cv_DPDK_LIBS='-Wl,--whole-archive -Wl,--no-whole-archive > > > > -Wl,--as-needed -pthread -L/root/local/dpdk-next-net/lib64 > > > > -l:librte_common_cpt.a -l:librte_common_dpaax.a > > > > -l:librte_common_iavf.a -l:librte_common_octeontx.a > > > > -l:librte_common_octeontx2.a -l:librte_common_sfc_efx.a > > > > -l:librte_bus_dpaa.a -l:librte_bus_fslmc.a -l:librte_bus_ifpga.a > > > > -l:librte_bus_pci.a -l:librte_bus_vdev.a -l:librte_bus_vmbus.a > > > > -l:librte_common_mlx5.a -l:librte_common_qat.a > > > > -l:librte_mempool_bucket.a -l:librte_mempool_dpaa.a > > > > -l:librte_mempool_dpaa2.a -l:librte_mempool_octeontx.a > > > > -l:librte_mempool_octeontx2.a -l:librte_mempool_ring.a > > > > -l:librte_mempool_stack.a -l:librte_net_af_packet.a > > > > -l:librte_net_ark.a -l:librte_net_atlantic.a -l:librte_net_avp.a > > > > -l:librte_net_axgbe.a -l:librte_net_bond.a -l:librte_net_bnxt.a > > > > -l:librte_net_cxgbe.a -l:librte_net_dpaa.a -l:librte_net_dpaa2.a > > > > -l:librte_net_e1000.a -l:librte_net_ena.a -l:librte_net_enetc.a > > > > -l:librte_net_enic.a -l:librte_net_failsafe.a -l:librte_net_fm10k.a > > > > -l:librte_net_i40e.a -l:librte_net_hinic.a -l:librte_net_hns3.a > > > > -l:librte_net_iavf.a -l:librte_net_ice.a -l:librte_net_igc.a > > > > -l:librte_net_ixgbe.a -l:librte_net_kni.a -l:librte_net_liquidio.a > > > > -l:librte_net_memif.a -l:librte_net_mlx5.a -l:librte_net_netvsc.a > > > > -l:librte_net_nfp.a -l:librte_net_null.a -l:librte_net_octeontx.a > > > > -l:librte_net_octeontx2.a -l:librte_net_pcap.a -l:librte_net_pfe.a > > > > -l:librte_net_qede.a -l:librte_net_ring.a -l:librte_net_sfc.a > > > > -l:librte_net_softnic.a -l:librte_net_thunderx.a -l:librte_net_txgbe.a > > > > -l:librte_net_vdev_netvsc.a -l:librte_net_vhost.a > > > > -l:librte_net_virtio.a -l:librte_net_vmxnet3.a > > > > -l:librte_raw_dpaa2_cmdif.a -l:librte_raw_dpaa2_qdma.a > > > > -l:librte_raw_ioat.a -l:librte_raw_ntb.a -l:librte_raw_octeontx2_dma.a > > > > -l:librte_raw_octeontx2_ep.a -l:librte_raw_skeleton.a > > > > -l:librte_compress_octeontx.a -l:librte_regex_mlx5.a > > > > -l:librte_regex_octeontx2.a -l:librte_vdpa_ifc.a -l:librte_vdpa_mlx5.a > > > > -l:librte_baseband_null.a -l:librte_baseband_turbo_sw.a > > > > -l:librte_baseband_fpga_lte_fec.a -l:librte_baseband_fpga_5gnr_fec.a > > > > -l:librte_baseband_acc100.a -l:librte_node.a -l:librte_graph.a > > > > -l:librte_bpf.a -l:librte_flow_classify.a -l:librte_pipeline.a > > > > -l:librte_table.a -l:librte_port.a -l:librte_fib.a -l:librte_ipsec.a > > > > -l:librte_vhost.a -l:librte_stack.a -l:librte_security.a > > > > -l:librte_sched.a -l:librte_reorder.a -l:librte_rib.a > > > > -l:librte_regexdev.a -l:librte_rawdev.a -l:librte_pdump.a > > > > -l:librte_power.a -l:librte_member.a -l:librte_lpm.a > > > > -l:librte_latencystats.a -l:librte_kni.a -l:librte_jobstats.a > > > > -l:librte_ip_frag.a -l:librte_gso.a -l:librte_gro.a > > > > -l:librte_eventdev.a -l:librte_efd.a -l:librte_distributor.a > > > > -l:librte_cryptodev.a -l:librte_compressdev.a -l:librte_cfgfile.a > > > > -l:librte_bitratestats.a -l:librte_bbdev.a -l:librte_acl.a > > > > -l:librte_timer.a -l:librte_hash.a -l:librte_metrics.a > > > > -l:librte_cmdline.a -l:librte_pci.a -l:librte_ethdev.a > > > > -l:librte_meter.a -l:librte_net.a -l:librte_mbuf.a -l:librte_mempool.a > > > > -l:librte_rcu.a -l:librte_ring.a -l:librte_eal.a -l:librte_telemetry.a > > > > -l:librte_kvargs.a -lmlx5 -libverbs -lrte_node -lrte_graph -lrte_bpf > > > > -lrte_flow_classify -lrte_pipeline -lrte_table -lrte_port -lrte_fib > > > > -lrte_ipsec -lrte_vhost -lrte_stack -lrte_security -lrte_sched > > > > -lrte_reorder -lrte_rib -lrte_regexdev -lrte_rawdev -lrte_pdump > > > > -lrte_power -lrte_member -lrte_lpm -lrte_latencystats -lrte_kni > > > > -lrte_jobstats -lrte_ip_frag -lrte_gso -lrte_gro -lrte_eventdev > > > > -lrte_efd -lrte_distributor -lrte_cryptodev -lrte_compressdev > > > > -lrte_cfgfile -lrte_bitratestats -lrte_bbdev -lrte_acl -lrte_timer > > > > -lrte_hash -lrte_metrics -lrte_cmdline -lrte_pci -lrte_ethdev > > > > -lrte_meter -lrte_net -lrte_mbuf -lrte_mempool -lrte_rcu -lrte_ring > > > > -lrte_eal -lrte_telemetry -lrte_kvargs -lm -ldl -lnuma -lpcap ' > > > > > > > > Note that: > > > > -Wl,--whole-archive -Wl,--no-whole-archive (RTE_INIT in dpdk doesn't > > work.) > > > > I guess we dont hope that, It should be: > > > > -Wl,--whole-archive ...(other -lxxx)... -Wl,--no-whole-archive > > > > > > > > update pkg-config to pkgconf-1.4.2 > > > > /bin/pkg-config --static --libs libdpdk > > > > pkg_cv_DPDK_LIBS='-Wl,--whole-archive > > > > -L/root/local/dpdk-next-net/lib64 -l:librte_common_cpt.a > > > > -l:librte_common_dpaax.a -l:librte_common_iavf.a > > > > -l:librte_common_octeontx.a -l:librte_common_octeontx2.a > > > > -l:librte_common_sfc_efx.a -l:librte_bus_dpaa.a -l:librte_bus_fslmc.a > > > > -l:librte_bus_ifpga.a -l:librte_bus_pci.a -l:librte_bus_vdev.a > > > > -l:librte_bus_vmbus.a -l:librte_common_mlx5.a -l:librte_common_qat.a > > > > -l:librte_mempool_bucket.a -l:librte_mempool_dpaa.a > > > > -l:librte_mempool_dpaa2.a -l:librte_mempool_octeontx.a > > > > -l:librte_mempool_octeontx2.a -l:librte_mempool_ring.a > > > > -l:librte_mempool_stack.a -l:librte_net_af_packet.a > > > > -l:librte_net_ark.a -l:librte_net_atlantic.a -l:librte_net_avp.a > > > > -l:librte_net_axgbe.a -l:librte_net_bond.a -l:librte_net_bnxt.a > > > > -l:librte_net_cxgbe.a -l:librte_net_dpaa.a -l:librte_net_dpaa2.a > > > > -l:librte_net_e1000.a -l:librte_net_ena.a -l:librte_net_enetc.a > > > > -l:librte_net_enic.a -l:librte_net_failsafe.a -l:librte_net_fm10k.a > > > > -l:librte_net_i40e.a -l:librte_net_hinic.a -l:librte_net_hns3.a > > > > -l:librte_net_iavf.a -l:librte_net_ice.a -l:librte_net_igc.a > > > > -l:librte_net_ixgbe.a -l:librte_net_kni.a -l:librte_net_liquidio.a > > > > -l:librte_net_memif.a -l:librte_net_mlx5.a -l:librte_net_netvsc.a > > > > -l:librte_net_nfp.a -l:librte_net_null.a -l:librte_net_octeontx.a > > > > -l:librte_net_octeontx2.a -l:librte_net_pcap.a -l:librte_net_pfe.a > > > > -l:librte_net_qede.a -l:librte_net_ring.a -l:librte_net_sfc.a > > > > -l:librte_net_softnic.a -l:librte_net_thunderx.a -l:librte_net_txgbe.a > > > > -l:librte_net_vdev_netvsc.a -l:librte_net_vhost.a > > > > -l:librte_net_virtio.a -l:librte_net_vmxnet3.a > > > > -l:librte_raw_dpaa2_cmdif.a -l:librte_raw_dpaa2_qdma.a > > > > -l:librte_raw_ioat.a -l:librte_raw_ntb.a -l:librte_raw_octeontx2_dma.a > > > > -l:librte_raw_octeontx2_ep.a -l:librte_raw_skeleton.a > > > > -l:librte_compress_octeontx.a -l:librte_regex_mlx5.a > > > > -l:librte_regex_octeontx2.a -l:librte_vdpa_ifc.a -l:librte_vdpa_mlx5.a > > > > -l:librte_baseband_null.a -l:librte_baseband_turbo_sw.a > > > > -l:librte_baseband_fpga_lte_fec.a -l:librte_baseband_fpga_5gnr_fec.a > > > > -l:librte_baseband_acc100.a -l:librte_node.a -l:librte_graph.a > > > > -l:librte_bpf.a -l:librte_flow_classify.a -l:librte_pipeline.a > > > > -l:librte_table.a -l:librte_port.a -l:librte_fib.a -l:librte_ipsec.a > > > > -l:librte_vhost.a -l:librte_stack.a -l:librte_security.a > > > > -l:librte_sched.a -l:librte_reorder.a -l:librte_rib.a > > > > -l:librte_regexdev.a -l:librte_rawdev.a -l:librte_pdump.a > > > > -l:librte_power.a -l:librte_member.a -l:librte_lpm.a > > > > -l:librte_latencystats.a -l:librte_kni.a -l:librte_jobstats.a > > > > -l:librte_ip_frag.a -l:librte_gso.a -l:librte_gro.a > > > > -l:librte_eventdev.a -l:librte_efd.a -l:librte_distributor.a > > > > -l:librte_cryptodev.a -l:librte_compressdev.a -l:librte_cfgfile.a > > > > -l:librte_bitratestats.a -l:librte_bbdev.a -l:librte_acl.a > > > > -l:librte_timer.a -l:librte_hash.a -l:librte_metrics.a > > > > -l:librte_cmdline.a -l:librte_pci.a -l:librte_ethdev.a > > > > -l:librte_meter.a -l:librte_net.a -l:librte_mbuf.a -l:librte_mempool.a > > > > -l:librte_rcu.a -l:librte_ring.a -l:librte_eal.a -l:librte_telemetry.a > > > > -l:librte_kvargs.a -Wl,--no-whole-archive -lpcap -lmlx5 -libverbs > > > > -Wl,--as-needed -lrte_node -lrte_graph -lrte_bpf -lrte_flow_classify > > > > -lrte_pipeline -lrte_table -lrte_port -lrte_fib -lrte_ipsec > > > > -lrte_vhost -lrte_stack -lrte_security -lrte_sched -lrte_reorder > > > > -lrte_rib -lrte_regexdev -lrte_rawdev -lrte_pdump -lrte_power > > > > -lrte_member -lrte_lpm -lrte_latencystats -lrte_kni -lrte_jobstats > > > > -lrte_ip_frag -lrte_gso -lrte_gro -lrte_eventdev -lrte_efd > > > > -lrte_distributor -lrte_cryptodev -lrte_compressdev -lrte_cfgfile > > > > -lrte_bitratestats -lrte_bbdev -lrte_acl -lrte_timer -lrte_hash > > > > -lrte_metrics -lrte_cmdline -lrte_pci -lrte_ethdev -lrte_meter > > > > -lrte_net -lrte_mbuf -lrte_mempool -lrte_rcu -lrte_ring -lrte_eal > > > > -lrte_telemetry -lrte_kvargs -pthread -lm -ldl -lnuma -lpcap ' > > > > > > > > ovs works fine. > > > > > > Hmm. Thanks for the report. > > > > > > It'll be great if you can test this with new version of this patch: > > > https://patchwork.ozlabs.org/project/openvswitch/patch/1607977825-30877- > > [email protected]/ > > Hi Ilya > > I tested the patch > > https://patchwork.ozlabs.org/project/openvswitch/patch/1607977825-30877-1- > > [email protected]/ > > As I said if we update the pkg-conf to new version. and we config the > > ovs --with-dpdk=static, ovs works fine. > > but if we build ovs --with-dpdk=shared, ovs doesn't work, there is error > > log: > > 2020-12-14T20:15:07.940Z|00018|dpdk|INFO|EAL ARGS: ovs-vswitchd -a > > 0000:82:00.0,dv_flow_en=1,dv_esw_en=1,l3_vxlan_en=1,dv_xmeta_en=2,represen > > tor=[0-6] > > -c 0xe --huge-dir /dev/hugepages --socket-mem 1024,1024 --socket-limit > > 1024,1024. > > 2020-12-14T20:15:07.946Z|00019|dpdk|INFO|EAL: Detected 56 lcore(s) > > 2020-12-14T20:15:07.946Z|00020|dpdk|INFO|EAL: Detected 2 NUMA nodes > > 2020-12-14T20:15:07.946Z|00021|dpdk|ERR|EAL: failed to parse device > > "0000:82:00.0" > > 2020-12-14T20:15:07.946Z|00022|dpdk|ERR|EAL: Unable to parse device > > '0000:82:00.0,dv_flow_en=1,dv_esw_en=1,l3_vxlan_en=1,dv_xmeta_en=2,represe > > ntor=[0-6]' > > 2020-12-14T20:15:07.946Z|00023|dpdk|EMER|Unable to initialize DPDK: No > > such device > > > > because pci bus was not registered. > > > > In dpdk: > > eal_plugins_init > > rte_pci_scan > > eal_option_device_parse -- no pci bus > > > > > > Is DPDK installed systemwide so that the drivers - including pci bus > driver - can be picked up automatically on init? If not, you may well > need to pass the path to the drivers via the "-d" flag on startup. Hi I build ovs, shown as below:
export DPDK_TARGET=x86_64-native-linuxapp-gcc meson -Dprefix=/root/local/dpdk-next-net -Dmax_ethports=256 -Dbuildtype=debug -Ddisable_drivers=event/*,net/tap,net/nfb,net/mlx4,crypto/* $DPDK_TARGET ninja -C $DPDK_TARGET install ldconfig export LD_LIBRARY_PATH=/root/local/dpdk-next-net/lib64:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/root/local/dpdk-next-net/lib64/pkgconfig/:$PKG_CONFIG_PATH ./configure --enable-Werror --prefix=/root/local/openvswitch-2.14 --disable-ssl --disable-libcapng --with-dpdk=shared 'CFLAGS=-g -O0 -Wno-deprecated-declarations' make && make install One question if we export LD_LIBRARY_PATH, we also use "-d" flag ? > Regards, > /Bruce -- Best regards, Tonghao _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
