Upgrade dpdk version 19.11 98/3298/1
authorBin Yang <bin.yang@windriver.com>
Thu, 16 Apr 2020 12:55:29 +0000 (12:55 +0000)
committerBin Yang <bin.yang@windriver.com>
Thu, 16 Apr 2020 12:55:29 +0000 (12:55 +0000)
Issue-ID: INF-23
Signed-off-by: Bin Yang <bin.yang@windriver.com>
Change-Id: Ib4513e7d9c4c67d078e768b588db082f85ff7516

meta-oran/conf/distro/oran-inf.conf
meta-oran/recipes-extended/dpdk/dpdk.inc [new file with mode: 0644]
meta-oran/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch [new file with mode: 0644]
meta-oran/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch [new file with mode: 0644]
meta-oran/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch [new file with mode: 0644]
meta-oran/recipes-extended/dpdk/dpdk_19.11.bb [new file with mode: 0644]

index 2582109..f5f88b7 100644 (file)
@@ -29,7 +29,7 @@ require conf/distro/include/oran-whitelist.conf
 DISTRO_NAME = "O-RAN-INF"
 
 # Set software versions
-PREFERRED_VERSION_dpdk ?= "17%"
+PREFERRED_VERSION_dpdk ?= "19.11%"
 PREFERRED_VERSION_kubernetes ?= "1.16.2%"
 GOVERSION ?= "1.12%"
 
diff --git a/meta-oran/recipes-extended/dpdk/dpdk.inc b/meta-oran/recipes-extended/dpdk/dpdk.inc
new file mode 100644 (file)
index 0000000..7a949ff
--- /dev/null
@@ -0,0 +1,181 @@
+DESCRIPTION = "Intel(r) Data Plane Development Kit"
+HOMEPAGE = "http://dpdk.org"
+
+STABLE = ""
+BRANCH = "master"
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://dpdk.org/dpdk${STABLE};branch=${BRANCH} \
+          file://dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch \
+          file://dpdk-16.07-add-sysroot-option-within-app-makefile.patch \
+         "
+
+COMPATIBLE_MACHINE = "null"
+COMPATIBLE_HOST_libc-musl_class-target = "null"
+COMPATIBLE_HOST_linux-gnux32 = "null"
+
+# dpdk example apps dpdk_qat and vhost have dependancy on fuse and qat.
+# fuse is in meta-filesystems and qat is not yet upstreamed.
+# So adding mechanism to explicitly disable the use of fuse and qat.
+# To enable, uncomment the below line or include in .bbappend.
+# PACKAGECONFIG ?= " dpdk_qat vhost libvirt"
+
+PACKAGECONFIG[dpdk_qat] = ",,virtual/qat"
+PACKAGECONFIG[vhost] = ",,fuse"
+PACKAGECONFIG[libvirt] = ",,libvirt"
+PACKAGECONFIG[numa] = ",,numactl"
+
+export CONFIG_EXAMPLE_DPDK_QAT = "${@bb.utils.contains('PACKAGECONFIG', 'dpdk_qat', 'y', 'n', d)}"
+export CONFIG_EXAMPLE_VM_POWER_MANAGER = "${@bb.utils.contains('PACKAGECONFIG', 'libvirt', 'y', 'n', d)}"
+export CONFIG_VHOST_ENABLED = "${@bb.utils.contains('PACKAGECONFIG', 'vhost', 'y', 'n', d)}"
+export CONFIG_HAVE_NUMA = "${@bb.utils.contains('PACKAGECONFIG', 'numa', 'y', 'n', d)}"
+
+# Don't use the default value of datadir and let the dpdk set it to a dpdk
+# specific directory
+datadir[unexport] = "1"
+
+RDEPENDS_${PN} += "python-subprocess"
+DEPENDS = "virtual/kernel"
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
+
+inherit module
+
+export MODULE_DIR="/lib/modules/${KERNEL_VERSION}/kernel/drivers/net"
+export RTE_SDK = "${S}"
+
+export ICP_ROOT = "${PKG_CONFIG_SYSROOT_DIR}/usr/include"
+export ICP_LIB_ROOT= "${PKG_CONFIG_SYSROOT_DIR}/usr/lib"
+export RTE_KERNELDIR = "${STAGING_KERNEL_DIR}"
+export RTE_KERNELDIR_OUT = "${STAGING_KERNEL_BUILDDIR}"
+export INSTALL_PATH = "${prefix}/share/dpdk"
+export RTE_OUTPUT = "${S}/${RTE_TARGET}"
+export ETHTOOL_LIB_PATH = "${S}/examples/ethtool/lib/${RTE_TARGET}/"
+export SYSROOTPATH = "--sysroot=${STAGING_DIR_HOST}"
+export DPDK_TARGET_MACH = "${@get_dpdk_target_mach(bb,d)}"
+export ICP_LAC_API_DIR = "${STAGING_DIR_TARGET}${includedir}/lac"
+
+export EXAMPLES_BUILD_DIR = "${RTE_TARGET}"
+export ARCHDIR = "generic"
+
+DPDK_RTE_TARGET_x86-64 = "x86_64-native-linuxapp-gcc"
+DPDK_RTE_TARGET_x86 = "i686-native-linuxapp-gcc"
+DPDK_RTE_TARGET_aarch64 = "arm64-${DPDK_TARGET_MACH}-linuxapp-gcc"
+export RTE_TARGET = "${DPDK_RTE_TARGET}"
+
+# The list of intel Comms platforms and their target machine
+# process mapping. The supported target machine is listed under
+# dpdk/mk/machine
+def get_dpdk_target_mach(bb, d):
+    target_arch = d.getVar('DPDK_TARGET_MACHINE', True)
+    if target_arch:
+            return target_arch
+    return "default"
+
+do_configure () {
+       #############################################################
+       ### default value for prefix is "usr", unsetting it, so it
+       ### will not be concatenated in ${RTE_TARGET}/Makefile
+       ### which will cause compilation failure
+       #############################################################
+       unset prefix
+
+       # Fix-up CONFIG_RTE_MACHINE based on target machine
+       sed -e "s#CONFIG_RTE_MACHINE=\"native\"#CONFIG_RTE_MACHINE=\"${DPDK_TARGET_MACH}\"#" -i ${S}/config/defconfig_${RTE_TARGET}
+
+       # Fix-up vhost configs based on package config
+       sed -e "s#CONFIG_RTE_KNI_VHOST=n#CONFIG_RTE_KNI_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linux
+       sed -e "s#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=n#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linux
+       sed -e "s#CONFIG_RTE_LIBRTE_VHOST=n#CONFIG_RTE_LIBRTE_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linux
+       sed -e "s#CONFIG_RTE_LIBRTE_VHOST_NUMA=.*#CONFIG_RTE_LIBRTE_VHOST_NUMA=${CONFIG_HAVE_NUMA}#" -i ${S}/config/common_linux
+       sed -e "s#CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=.*#CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=${CONFIG_HAVE_NUMA}#" -i ${S}/config/common_linux
+
+       # Fix-up CONFIG_RTE_LIBRTE_POWER based on package config for libvirt
+       sed -e "s#CONFIG_RTE_LIBRTE_POWER=y#CONFIG_RTE_LIBRTE_POWER=${CONFIG_EXAMPLE_VM_POWER_MANAGER}#" -i ${S}/config/common_linux
+
+       make O=$RTE_TARGET T=$RTE_TARGET config
+}
+
+do_compile () {
+       unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS
+
+       cd ${S}/${RTE_TARGET}
+       oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" \
+                  EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -I${STAGING_INCDIR}" \
+                  CROSS="${TARGET_PREFIX}" \
+                  prefix=""  LDFLAGS="${TUNE_LDARGS}"  WERROR_FLAGS="-w" V=1
+
+       cd ${S}/examples/
+       oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu -fuse-ld=bfd" \
+                  EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -I${STAGING_INCDIR}" \
+                  CROSS="${TARGET_PREFIX}" O="${S}/examples/$@/"
+
+        cd ${S}/app/test
+       oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu -fuse-ld=bfd" \
+                  EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -I${STAGING_INCDIR}" \
+                  CROSS="${TARGET_PREFIX}" O="${S}/app/test/$@/"
+}
+
+do_install () {
+       oe_runmake O=${RTE_OUTPUT} T= install-runtime DESTDIR=${D}
+       oe_runmake O=${RTE_OUTPUT} T= install-kmod DESTDIR=${D} kerneldir=${MODULE_DIR}
+       oe_runmake O=${RTE_OUTPUT} T= install-sdk DESTDIR=${D}
+
+       # Install examples
+       for dirname in ${S}/examples/*
+       do
+               install -m 0755 -d ${D}/${INSTALL_PATH}/examples/`basename ${dirname}`
+
+               for appname in `find ${dirname} -regex ".*${EXAMPLES_BUILD_DIR}\/app\/[-0-9a-zA-Z0-9/_]*$"`
+               do
+                       install -m 755 ${appname}       ${D}/${INSTALL_PATH}/examples/`basename ${dirname}`/
+               done
+       done
+
+       # Install test
+       for dirname in ${S}/app/test/app/*
+       do
+               install -m 0755 -d ${D}/${INSTALL_PATH}/test
+
+               for appname in `find ${dirname} -regex ".*test\/app\/[-0-9a-zA-Z0-9/_]*$"`
+               do
+                       install -m 755 ${appname} ${D}/${INSTALL_PATH}/test
+               done
+       done
+
+       cp -r ${S}/mk ${D}${INSTALL_PATH}/
+}
+
+PACKAGES += "${PN}-examples ${PN}-test"
+
+FILES_${PN}-dbg += " \
+       ${INSTALL_PATH}/.debug \
+       ${INSTALL_PATH}/examples/*/.debug \
+       "
+
+FILES_${PN}-doc += "\
+       ${INSTALL_PATH}/doc \
+       "
+
+FILES_${PN}-dev += " \
+       ${INSTALL_PATH}/${RTE_TARGET}/.config \
+       ${includedir} \
+       ${includedir}/${ARCHDIR} \
+       ${includedir}/exec-env \
+       ${INSTALL_PATH}/buildtools/ \
+       ${INSTALL_PATH}/${RTE_TARGET}/include \
+       ${INSTALL_PATH}/${RTE_TARGET}/lib \
+       ${INSTALL_PATH}/mk \
+       "
+
+FILES_${PN} += " ${INSTALL_PATH}/usertools/ \
+                ${prefix}/sbin/ \
+                ${prefix}/bin/ \
+                ${libdir}/ \
+                "
+FILES_${PN}-examples += " \
+       ${INSTALL_PATH}/examples/* \
+       "
+
+FILES_${PN}-test += " \
+       ${INSTALL_PATH}/test \
+       "
diff --git a/meta-oran/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch b/meta-oran/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch
new file mode 100644 (file)
index 0000000..2facd39
--- /dev/null
@@ -0,0 +1,42 @@
+From 41ac64efa5050430b73e0f8813dffc7327083273 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 1 Aug 2017 20:18:46 -0700
+Subject: [PATCH] examples: Fix maybe-uninitialized warning
+
+Initialize arrays to 0, makes compiler happy about
+
+error: 'vals[0]' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ examples/qos_sched/args.c   | 2 +-
+ examples/vhost/virtio_net.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
+index 83eee95cc28e..3d2c0fbd6d0a 100644
+--- a/examples/qos_sched/args.c
++++ b/examples/qos_sched/args.c
+@@ -212,7 +212,7 @@ static int
+ app_parse_flow_conf(const char *conf_str)
+ {
+       int ret;
+-      uint32_t vals[5];
++      uint32_t vals[5] = {0};
+       struct flow_conf *pconf;
+       uint64_t mask;
+diff --git a/examples/vhost/virtio_net.c b/examples/vhost/virtio_net.c
+index f6e00674d9af..a4a90704d7b4 100644
+--- a/examples/vhost/virtio_net.c
++++ b/examples/vhost/virtio_net.c
+@@ -293,7 +293,7 @@ vs_dequeue_pkts(struct vhost_dev *dev, uint16_t queue_id,
+ {
+       struct vhost_queue *queue;
+       struct rte_vhost_vring *vr;
+-      uint32_t desc_indexes[MAX_PKT_BURST];
++      uint32_t desc_indexes[MAX_PKT_BURST] = {0};
+       uint32_t used_idx;
+       uint32_t i = 0;
+       uint16_t free_entries;
diff --git a/meta-oran/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch b/meta-oran/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch
new file mode 100644 (file)
index 0000000..603bd32
--- /dev/null
@@ -0,0 +1,50 @@
+From 0808b30cd00f307f182007d21a8be3a0866ccf83 Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Fri, 18 Dec 2015 18:30:47 +0800
+Subject: [PATCH] dpdk v2.2.0: add RTE_KERNELDIR_OUT to split kernel build
+ artifact
+
+Introduce RTE_KERNELDIR_OUT to be the path to which kernel build
+artifacts are located. This is for matching the workflow change
+since Yocto Project v1.8 onwards whereby tmp/work-shared contains
+separate directories for kernel source and kernel artifacts.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+
+---
+ mk/rte.module.mk | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/mk/rte.module.mk b/mk/rte.module.mk
+index 1ada528a00b1..da0538cd5321 100644
+--- a/mk/rte.module.mk
++++ b/mk/rte.module.mk
+@@ -48,7 +48,7 @@ build: _postbuild
+ # build module
+ $(MODULE).ko: $(SRCS_LINKS)
+       @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
+-      @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
++      @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
+               CC="$(KERNELCC)" CROSS_COMPILE=$(CROSS) V=$(if $V,1,0)
+ # install module in $(RTE_OUTPUT)/kmod
+@@ -59,7 +59,7 @@ $(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko
+ # install module
+ modules_install:
+-      @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
++      @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
+               modules_install
+ .PHONY: clean
+@@ -69,7 +69,7 @@ clean: _postclean
+ .PHONY: doclean
+ doclean:
+       @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
+-      $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean
++      $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) clean
+       @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
+               if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi ;)
+       @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi
diff --git a/meta-oran/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch b/meta-oran/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch
new file mode 100644 (file)
index 0000000..18b761c
--- /dev/null
@@ -0,0 +1,30 @@
+From d08d11c8b6fdfe73884d67a94d907000afd136ed Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Fri, 19 Aug 2016 11:57:49 +0800
+Subject: [PATCH] dpdk: add --sysroot option within app makefile
+
+Upstream-Status: Inappropriate [configuration]
+
+rte.app.mk has been changed to add -Wl, to all items listed
+under EXTRA_LDFLAGS. It causes --sysroot=<path> to not setup
+correctly when we depends on gcc to setup for GNU ld.
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+
+---
+ mk/rte.app.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mk/rte.app.mk b/mk/rte.app.mk
+index 3eb41d176d21..9ab6688718db 100644
+--- a/mk/rte.app.mk
++++ b/mk/rte.app.mk
+@@ -300,7 +300,7 @@ exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
+ ifeq ($(LINK_USING_CC),1)
+ O_TO_EXE = $(CC) -o $@ $(CFLAGS) $(EXTRA_CFLAGS) $(OBJS-y) $(call linkerprefix, \
+       $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
+-      $(MAPFLAGS))
++      $(MAPFLAGS)) $(SYSROOTPATH)
+ else
+ O_TO_EXE = $(LD) -o $@ $(OBJS-y) \
+       $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
diff --git a/meta-oran/recipes-extended/dpdk/dpdk_19.11.bb b/meta-oran/recipes-extended/dpdk/dpdk_19.11.bb
new file mode 100644 (file)
index 0000000..233e7ce
--- /dev/null
@@ -0,0 +1,12 @@
+include dpdk.inc
+
+SRCREV = "7001c8fdb27357c67147c0a13cb3826e48c0f2bf"
+
+LICENSE = "BSD & LGPLv2 & GPLv2"
+LIC_FILES_CHKSUM = "file://license/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://license/lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \
+                    file://license/bsd-3-clause.txt;md5=0f00d99239d922ffd13cabef83b33444"
+
+SRC_URI += "\
+            file://0001-examples-Fix-maybe-uninitialized-warning.patch \
+            "