From 199e427d5dea3051eec1726eb9c857aa3d5fdde2 Mon Sep 17 00:00:00 2001 From: Christian Ehrhardt Date: Wed, 15 Jun 2016 20:29:06 +0200 Subject: [PATCH] Merge Ubuntu DPDK packaging as of 15th June 2016 As discussed this shall be our initial baseline. If history is needed for any sort of debugging or analysis it can be found at https://code.launchpad.net/~ubuntu-server/dpdk/+git/dpdk Change-Id: Ie95c7effbbea34d723df14f6451c1f782000cbc1 Signed-off-by: Christian Ehrhardt --- debian/changelog | 302 +++++++++ debian/compat | 1 + debian/control | 686 +++++++++++++++++++++ debian/copyright | 47 ++ debian/dpdk-dev.dirs | 1 + debian/dpdk-doc.README.Debian | 52 ++ debian/dpdk-doc.dirs | 1 + debian/dpdk-igb-uio-dkms.dkms | 7 + debian/dpdk-init | 251 ++++++++ debian/dpdk-rte-kni-dkms.dkms | 7 + debian/dpdk-sdk-env.sh.in | 3 + debian/dpdk.conf | 54 ++ debian/dpdk.dirs | 5 + debian/dpdk.init | 57 ++ debian/dpdk.install | 2 + debian/dpdk.interfaces | 19 + debian/dpdk.service | 12 + debian/libdpdk-dev.dirs | 1 + debian/libdpdk-libethdev3.symbols | 112 ++++ debian/libdpdk-librte-acl2.symbols | 15 + debian/libdpdk-librte-cfgfile2.symbols | 13 + debian/libdpdk-librte-cmdline2.symbols | 68 ++ debian/libdpdk-librte-cryptodev1.symbols | 30 + debian/libdpdk-librte-distributor1.symbols | 11 + debian/libdpdk-librte-eal2.symbols | 131 ++++ debian/libdpdk-librte-hash2.symbols | 26 + debian/libdpdk-librte-ip-frag1.symbols | 9 + debian/libdpdk-librte-jobstats1.symbols | 17 + debian/libdpdk-librte-kni2.symbols | 13 + debian/libdpdk-librte-kvargs1.symbols | 6 + debian/libdpdk-librte-lpm2.symbols | 27 + debian/libdpdk-librte-mbuf2.symbols | 11 + debian/libdpdk-librte-mempool1.symbols | 15 + debian/libdpdk-librte-meter1.symbols | 4 + debian/libdpdk-librte-pipeline3.symbols | 28 + debian/libdpdk-librte-pmd-af-packet1.symbols | 2 + debian/libdpdk-librte-pmd-bond1.symbols | 20 + debian/libdpdk-librte-pmd-cxgbe1.symbols | 2 + debian/libdpdk-librte-pmd-e10001.symbols | 2 + debian/libdpdk-librte-pmd-ena1.symbols | 2 + debian/libdpdk-librte-pmd-enic1.symbols | 2 + debian/libdpdk-librte-pmd-fm10k1.symbols | 2 + debian/libdpdk-librte-pmd-i40e1.symbols | 2 + debian/libdpdk-librte-pmd-ixgbe1.symbols | 2 + debian/libdpdk-librte-pmd-null-crypto1.symbols | 2 + debian/libdpdk-librte-pmd-null1.symbols | 4 + debian/libdpdk-librte-pmd-pcap1.symbols | 2 + debian/libdpdk-librte-pmd-ring2.symbols | 5 + debian/libdpdk-librte-pmd-vhost1.symbols | 6 + debian/libdpdk-librte-pmd-virtio1.symbols | 2 + debian/libdpdk-librte-pmd-vmxnet3-uio1.symbols | 2 + debian/libdpdk-librte-pmd-xenvirt1.symbols | 3 + debian/libdpdk-librte-port2.symbols | 21 + debian/libdpdk-librte-power1.symbols | 14 + debian/libdpdk-librte-reorder1.symbols | 9 + debian/libdpdk-librte-ring1.symbols | 11 + debian/libdpdk-librte-sched1.symbols | 22 + debian/libdpdk-librte-table2.symbols | 19 + debian/libdpdk-librte-timer1.symbols | 11 + debian/libdpdk-librte-vhost2.symbols | 13 + debian/libdpdk0.dirs | 1 + debian/patches/series | 12 + ...vhost-user-add-error-handling-for-fd-1023.patch | 141 +++++ ...eak-when-adding-removing-vhost_user-ports.patch | 63 ++ ...-39-lpm-fix-freeing-in-compatibility-mode.patch | 52 ++ ...buntu-backport-40-linking-fixes-stage-1-4.patch | 101 +++ ...buntu-backport-40-linking-fixes-stage-2-4.patch | 556 +++++++++++++++++ ...buntu-backport-40-linking-fixes-stage-3-4.patch | 217 +++++++ ...buntu-backport-40-linking-fixes-stage-4-4.patch | 149 +++++ .../ubuntu-backport-41-fix-install-tar-1.29.patch | 25 + ...ackport-42-increase-default-logging-level.patch | 81 +++ ...ntu-backport-43-fix-level-type-retrieving.patch | 61 ++ .../ubuntu-fix-vhost-user-socket-permission.patch | 372 +++++++++++ ...ntu-fix-xenvirt-support-dynamic-page-size.patch | 32 + debian/rules | 176 ++++++ debian/source/format | 1 + debian/tests/check-dpdk-supported-arch.sh | 12 + debian/tests/control | 13 + debian/tests/test-dkms | 18 + debian/tests/test-initscripts | 143 +++++ debian/tests/test-linkage | 51 ++ debian/watch | 2 + 82 files changed, 4505 insertions(+) create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/dpdk-dev.dirs create mode 100644 debian/dpdk-doc.README.Debian create mode 100644 debian/dpdk-doc.dirs create mode 100644 debian/dpdk-igb-uio-dkms.dkms create mode 100755 debian/dpdk-init create mode 100644 debian/dpdk-rte-kni-dkms.dkms create mode 100755 debian/dpdk-sdk-env.sh.in create mode 100644 debian/dpdk.conf create mode 100644 debian/dpdk.dirs create mode 100644 debian/dpdk.init create mode 100644 debian/dpdk.install create mode 100644 debian/dpdk.interfaces create mode 100644 debian/dpdk.service create mode 100644 debian/libdpdk-dev.dirs create mode 100644 debian/libdpdk-libethdev3.symbols create mode 100644 debian/libdpdk-librte-acl2.symbols create mode 100644 debian/libdpdk-librte-cfgfile2.symbols create mode 100644 debian/libdpdk-librte-cmdline2.symbols create mode 100644 debian/libdpdk-librte-cryptodev1.symbols create mode 100644 debian/libdpdk-librte-distributor1.symbols create mode 100644 debian/libdpdk-librte-eal2.symbols create mode 100644 debian/libdpdk-librte-hash2.symbols create mode 100644 debian/libdpdk-librte-ip-frag1.symbols create mode 100644 debian/libdpdk-librte-jobstats1.symbols create mode 100644 debian/libdpdk-librte-kni2.symbols create mode 100644 debian/libdpdk-librte-kvargs1.symbols create mode 100644 debian/libdpdk-librte-lpm2.symbols create mode 100644 debian/libdpdk-librte-mbuf2.symbols create mode 100644 debian/libdpdk-librte-mempool1.symbols create mode 100644 debian/libdpdk-librte-meter1.symbols create mode 100644 debian/libdpdk-librte-pipeline3.symbols create mode 100644 debian/libdpdk-librte-pmd-af-packet1.symbols create mode 100644 debian/libdpdk-librte-pmd-bond1.symbols create mode 100644 debian/libdpdk-librte-pmd-cxgbe1.symbols create mode 100644 debian/libdpdk-librte-pmd-e10001.symbols create mode 100644 debian/libdpdk-librte-pmd-ena1.symbols create mode 100644 debian/libdpdk-librte-pmd-enic1.symbols create mode 100644 debian/libdpdk-librte-pmd-fm10k1.symbols create mode 100644 debian/libdpdk-librte-pmd-i40e1.symbols create mode 100644 debian/libdpdk-librte-pmd-ixgbe1.symbols create mode 100644 debian/libdpdk-librte-pmd-null-crypto1.symbols create mode 100644 debian/libdpdk-librte-pmd-null1.symbols create mode 100644 debian/libdpdk-librte-pmd-pcap1.symbols create mode 100644 debian/libdpdk-librte-pmd-ring2.symbols create mode 100644 debian/libdpdk-librte-pmd-vhost1.symbols create mode 100644 debian/libdpdk-librte-pmd-virtio1.symbols create mode 100644 debian/libdpdk-librte-pmd-vmxnet3-uio1.symbols create mode 100644 debian/libdpdk-librte-pmd-xenvirt1.symbols create mode 100644 debian/libdpdk-librte-port2.symbols create mode 100644 debian/libdpdk-librte-power1.symbols create mode 100644 debian/libdpdk-librte-reorder1.symbols create mode 100644 debian/libdpdk-librte-ring1.symbols create mode 100644 debian/libdpdk-librte-sched1.symbols create mode 100644 debian/libdpdk-librte-table2.symbols create mode 100644 debian/libdpdk-librte-timer1.symbols create mode 100644 debian/libdpdk-librte-vhost2.symbols create mode 100644 debian/libdpdk0.dirs create mode 100644 debian/patches/series create mode 100644 debian/patches/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch create mode 100644 debian/patches/ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch create mode 100644 debian/patches/ubuntu-backport-39-lpm-fix-freeing-in-compatibility-mode.patch create mode 100644 debian/patches/ubuntu-backport-40-linking-fixes-stage-1-4.patch create mode 100644 debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch create mode 100644 debian/patches/ubuntu-backport-40-linking-fixes-stage-3-4.patch create mode 100644 debian/patches/ubuntu-backport-40-linking-fixes-stage-4-4.patch create mode 100644 debian/patches/ubuntu-backport-41-fix-install-tar-1.29.patch create mode 100644 debian/patches/ubuntu-backport-42-increase-default-logging-level.patch create mode 100644 debian/patches/ubuntu-backport-43-fix-level-type-retrieving.patch create mode 100644 debian/patches/ubuntu-fix-vhost-user-socket-permission.patch create mode 100644 debian/patches/ubuntu-fix-xenvirt-support-dynamic-page-size.patch create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/tests/check-dpdk-supported-arch.sh create mode 100644 debian/tests/control create mode 100644 debian/tests/test-dkms create mode 100644 debian/tests/test-initscripts create mode 100644 debian/tests/test-linkage create mode 100644 debian/watch diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000..36a76421 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,302 @@ +dpdk (16.04-1) UNRELEASED; urgency=medium + + [ Christian Ehrhardt ] + * Merge with upstream DPDK 16.04 release + * droping patches/backports that are already upstream in DPDK 16.04 + - d/p/ubuntu-fix-doc-installpath.patch + - d/p/ubuntu-fix-testpmd-without-xen.patch + - d/p/ubuntu-fix-lpm-use-after-free-and-leak.patch + - d/p/ubuntu-backport-[01-32,34-35] backports for stability + - d/p/ubuntu-backport-[36-37] but keep doc and example changes in d/* + * droping patches for soname / linking fixups. + - Upstream now goes with proper soname/abi/api handling per sublib plus a + linker script. + - dropped d/p/ubuntu-combined-shared-lib-abiversion.patch + - dropped d/p/ubuntu-fix-library-linkage.patch + * keeping patches: + - d/p/ubuntu-backport-38-* fix for memory leak + this now applies as is, so changed from a modified backport to match the + post 16.04 upstream commit now. + - d/p/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch + - doc and example changes that were related to d/p/ubuntu-backport-[36-37] + - d/p/ubuntu-fix-vhost-user-socket-permission.patch adapted for dpdk-16.04: + In the new build system with sublibs the exposed function needs to be + listed in lib/librte_eal/linuxapp/eal/rte_eal_version.map + * adding upstream backports - can be dropped when merging DPDK 16.07. + - d/p/ubuntu-backport-39-lpm-fix-freeing-in-compatibility-mode.patch + This was formerly part of a combined patch that we dropped because the + majority is upstream (d/p/ubuntu-fix-lpm-use-after-free-and-leak.patch). + - d/p/ubuntu-backport-40-linking-fixes-stage-[1-4]-4.patch + Fixing underlinking and overlinking issues in apps and libraries. + - d/p/ubuntu-backport-41-fix-install-tar-1.29.patch + Fix issues with tar >=1.29 (Yakkety) + - d/p/ubuntu-backport-43-increase-default-logging-level.patch + avoid default debug messages causing a perf degradation + - d/p/ubuntu-backport-43-fix-level-type-retrieving.patch + Fix type retrieving which was broken in standard threads + * adapt to new build system + - drop enabling the following build config symbols as they no more exist + CONFIG_RTE_BUILD_COMBINE_LIBS + - Sub-Libraries are now packaged in a versioned package per library. That + allows consumers of dpdk to just depend on what they need. As well as + installation of multiple .so versions concurrently. + - added the hidden dependency of librte_eal to librte_mempool + * Adding DKMS package for rte_kni (LP: #1592786) + + [ Ricardo Salveti ] + * Adding support for ARM64: + - debian/control: adding arm64 to the supported architecture list + - debian/rules: supporting dpdk config and machine for arm64 + - d/p/ubuntu-fix-xenvirt-support-dynamic-page-size.patch: fix build + failure on arm64 + - debian/dpdk-sdk-env.sh: generating the right RTE_TARGET during build + time, so we can also make it compatible with ARM64 + - debian/tests: also making tests compatible with ARM64 + * Adding DKMS package for igb_uio + * Build static dpdk with -fPIC so it can be used by shared libraries + * debian/copyright: fixing Canonical's copyright entry + * Renaming symbol files so they can match the right package + * Drop the arch specific symbol files, as they are identical + + [ Anders Roxell ] + * debian/dpdk.init: add remote_fs (lintian) + * debian/control: fixing week-library-dev-dependency (lintian) + + -- Christian Ehrhardt Tue, 17 May 2016 14:23:21 +0200 + +dpdk (2.2.0-0ubuntu9) yakkety; urgency=medium + + * d/p/ubuntu-backport-[36-37] fix virtio issues (LP: #1570195): + - don't let DPDK initialize virtio devices still in use by the kernel + - this avoids conflicts between kernel and dpdk usage of those devices + - an admin now has to unbind/bind devices as on physical hardware + - this is in the dpdk 16.04 release and delta can then be dropped + - d/dpdk-doc.README.Debian update for changes in virtio-pci handling + - d/dpdk.interfaces update for changes in virtio-pci handling + * d/p/ubuntu-backport-38... fix for memory leak (LP: #1570466): + - call vhost_destroy_device on removing vhost user ports to fix memory leak + - this likely is in the dpdk 16.07 release and delta can then be dropped + * d/p/ubuntu-fix-vhost-user-socket-permission.patch fox (LP: #1546565): + - when vhost_user sockets are created they are owner:group of the process + - the DPDK api to create those has no way to specify owner:group + - to fix that without breaking the API and potential workaround code in + consumers of the library like openvswitch 2.6 for example. This patch + adds an EAL commandline option to specify user:group created vhost_user + sockets should have. + + -- Christian Ehrhardt Wed, 27 Apr 2016 07:52:48 -0500 + +dpdk (2.2.0-0ubuntu7) xenial; urgency=medium + + * Increase max_map_count after setting huge pages (LP: #1507921): + - The default config of 65530 would cause issues as soon as about 64GB or + more are used as 2M huge pages for dpdk. + - Increase this value to base+2*#hugepages to avoid issues on huge systems. + * d/p/ubuntu-backport-[28-32,34-35] backports for stability (LP: #1568838): + - these will be in the 16.04 dpdk release, delta can then be dropped. + - 5 fixes that do not change api/behaviour but fix serious issues. + - 01 f82f705b lpm: fix allocation of an existing object + - 02 f9bd3342 hash: fix multi-process support + - 03 1aadacb5 hash: fix allocation of an existing object + - 04 5d7bfb73 hash: fix race condition at creation + - 05 fe671356 vfio: fix resource leak + - 06 356445f9 port: fix ring writer buffer overflow + - 07 52f7a5ae port: fix burst size mask type + * d/p/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch + - this will likely be in dpdk release 16.07 and delta can then be dropped. + - fixes a crash on using fd's >1023 (LP: #1566874) + * d/p/ubuntu-fix-lpm-use-after-free-and-leak.patch fix lpm_free (LP: #1569375) + - the old patches had an error freeing a pointer which had no meta data + - that lead to a crash on any lpm_free call + - folded into the fix that generally covers the lpm allocation and free + weaknesses already (also there this particular mistake was added) + + -- Christian Ehrhardt Tue, 12 Apr 2016 16:13:47 +0200 + +dpdk (2.2.0-0ubuntu6) xenial; urgency=medium + + * d/dpdk-init fix handling of multiple huge page sizes (LP: #1557532): + - dpdk-init now ensures non-default-hugepage-size mountpoints are + available as well. + - extra mountpoints are only created if requested in dpdk.conf and not yet + available (e.g. by the admin). + * d/dpdk-init fix issues with unassigned devices (LP: #1558485): + - dpdk-init no more checks /sys/.../driver of the device unconditionally + - removed the superfluous tr call in that path + * d/p/ubuntu-fix-lpm-use-after-free-and-leak.patch lpm/lpm6 (LP: #1554009): + - lpm/lpm6 fix use after free on lpm[6]_create + - lpm/lpm6 fix missing frees of rules_tbl substructure + - lpm/lpm6 fix missing free of lpm due to early exit + - make RTE_LOG messages of the failed allocation unique + * d/p/ubuntu-backport-[01-26] backport for stability (LP: #1559981): + - these will be in the following dpdk release and delta can then be dropped + - 26 fixes that do not change api/behaviour but fix serious issues + - 01 d3a274ce app/testpmd: handle SIGINT and SIGTERM + - 02 308df2bf Handle SIGINT and SIGTERM in l3fwd. + - 03 da82ee17 tools: fix unbinding failure handling + - 04 16c1814c tools: support Python 3 in bind script + - 05 bb9f4085 tools: support binding to built-in kernel modules + - 06 6e7caa1a eal/linux: support built-in kernel modules + - 07 86f36ff9 mempool: fix leak when creation fails + - 08 ca67ed28 vhost: fix leak of fds and mmaps + - 09 fa11a8a7 port: fix crash for ring writer nodrop + - 10 04f36690 port: fix crash for ethdev writer nodrop + - 11 c7a4ff80 i40e: fix overflow + - 12 097e920c i40e: fix inverted check for no refcount + - 13 330aa319 i40e: fix VLAN filtering + - 14 9f44dd3d i40e/base: fix missing check for stopped admin queue + - 15 8a880736 i40e/base: fix driver load failure + - 16 7656a546 fm10k: fix VLAN flag in scattered Rx + - 17 c6fb0e55 pcap: fix captured frame length + - 18 6e027237 bonding: fix detach of bonded device + - 19 df3e8ad7 bonding: fix detach of slave devices + - 20 786c990a bonding: copy entire config structure in mode 4 + - 21 6698820b bonding: do not ignore multicast in mode 4 + - 22 8997a10b bonding: fix active slaves with no primary + - 23 7a7122ed bonding: do not activate slave twice + - 24 2186fff3 bonding: fix crash when no slave device + - 25 c680a4a8 virtio: fix crash in statistics functions + - 26 3b1e3e4e virtio: fix descriptors pointing to the same buffer + * d/p/ubuntu-backport-27-virtio-fix-restart.patch for (LP: #1559981): + - fixing re-initializing the ethdev as openvswitch-dpdk does in the + virtio pmd driver by moving the detection of already being initialized + from virtio_dev_close to virtio_dev_start/stop + - this will be in the following dpdk release and delta can then be dropped + * d/rules build with debuginfo (LP: #1560839): + - exporting CFLAGS for all dpdk build processes + - dh_strip will automatically and create -dbgsym packages accordingly + + -- Christian Ehrhardt Wed, 23 Mar 2016 10:34:50 +0100 + +dpdk (2.2.0-0ubuntu5) xenial; urgency=medium + + * d/t/test-initscripts fix issues regarding 1G hugepages + - the dep8 was already taking care of 1G hugepages being not supported in + some environments. But it was failing when supported, but not enough + memory available. + + -- Christian Ehrhardt Wed, 09 Mar 2016 17:19:24 +0000 + +dpdk (2.2.0-0ubuntu4) xenial; urgency=medium + + * harden d/dpdk-init for configuration issues (LP: #1551601): + - detect and warn about bad bus specifications. + - detect and warn about incomplete device specifications. + - detect and warn about non existing pci IDs. + - avoid failing when working with unassigned devices. + - d/t/test-initscripts now testing various misconfigs. + - d/t/test-initscripts now also verifying service status. + * d/dpdk-init d/dpdk.conf now also support 1G hugepages (LP: #1551767): + - detect and warn if 1G pages are not available but configured. + - d/t/test-initscripts now also testing hugepage allocations. + - d/dpdk.conf has an option to drop caches to incease the likeliness of + successful 1G hugepage allocations (default off). + * d/rules replaced uname -m with DEB_HOST_GNU_CPU (LP: #1551796): + * fix testpmd to run without Xen environment (LP: #1551752): + - upstream discussion is slow, but we need a fix now. We can drop this + and change to the upstream solution when it is available. + * avoid errors due to missing modules (LP: #1554397): + - d/dpdk-init gracefully warns about missing modules. + - d/control now suggests linux-image-generic. + - d/dpdk.interfaces has a comment that makes the user aware. + * d/dpdk-init fix failure loading vfio-pci (LP: #1554214): + - d/dpdk-init no more converts "-" to "_" to make vfio-pci work + - d/dpdk.interfaces enhanced comments and updated examples + - d/dpdk-doc.README.debian got extra notes about using some modules + * unify whitespace/tabs in packaging and scripts + - tabs/spaces to just spaces in d/dpdk-init and d/dpdk.init. + - few remaining spaces to tabs in d/rules + * d/t/test-* now satisfy shellcheck + * d/* fix various comments and guides to be more readable + * d/dpdk-init and d/copyright updated copyright information + + -- Christian Ehrhardt Wed, 09 Mar 2016 08:48:58 +0000 + +dpdk (2.2.0-0ubuntu3) xenial; urgency=medium + + * Guard dep8 tests against non supported platforms (LP: #1551158): + - d/t/control now avoids failing due to "dependencies are unsatisfiable" + when fetching packages. The packages architecture restrictions got added + to avoid that. + - d/t/check-dpdk-supported-arch.sh is called by all DPDK tests to ensure + the platform is supported. If not it skips the test. + + -- Christian Ehrhardt Mon, 29 Feb 2016 11:03:39 +0000 + +dpdk (2.2.0-0ubuntu2) xenial; urgency=medium + + [ Christian Ehrhardt ] + * fix libdpdk.so library linking (LP: #1547517) + - libdpdk.so now has proper linkage information (was underlinked) + Note: this can be dropped when moving to DPDK 2.3 with linker script + instead of combined shared lib. + - remove reference to extra linkage needed when building against -ldpdk + in dpdk-doc README. + - add dep8 d/t/test-linkage to verify linking dpdk works as expected. + * d/control remove ${shlibs:Depends} on package with no linked binary + avoiding dpkg-gencontrol build warning about unknown ${shlibs:Depends}. + * d/dpdk-doc.README.debian fix path to DPDK build environment variable + helper script in README file. + * Update VCS Info in d/control to include our repositories. + + [ James Page ] + * d/*: wrap-and-sort. + * d/control: Trim trailing whitespace. + + -- Christian Ehrhardt Thu, 25 Feb 2016 16:07:21 +0000 + +dpdk (2.2.0-0ubuntu1) xenial; urgency=low + + * Merge from Upstream to DPDK 2.2 + Remaining changes: + - Set soabi for the combined shared library + * Drop changes: + - configuring RTE_LIBNAME to dpdk as it is the upstream default now + - enabled formerly non building components as they build properly in 2.2 + - d/p/ubunut-avoid-texlive-fonts-extra, d/control: + Replace use of DejaVuSansMono is no more needed as upstream changed the + font. Thereby we can drop our delta. + - d/p/ubuntu-fix-gcc5-ftbs.patch no more needed with DPDK 2.2 + * Added changes + - Disable CONFIG_RTE_NEXT_ABI as required for packaging (git 506f51cc) + - Enable LIBRTE_PMD_PCAP which is useful for some DPDK testcase examples + this adds a build dependency to libpcap-dev + - Fully support DH_VERBOSE for build debugging convenience + - adapt to new make infrastructure of dpdk 2.2 + - d/README.debian: convert into d/dpdk-doc.README.debian + - d/dpdk-doc.README.debian: update recommendations about sdk env variables + - d/dpdk-sdk-env.sh: now deployed in /usr/share/dpdk to be opt in + - enable XEN support for dpdk (LP: #1521289). + + -- Christian Ehrhardt Wed, 17 Feb 2016 09:29:28 +0100 + +dpdk (2.0.0-0ubuntu3) xenial; urgency=medium + + * Only generate HTML documentation, easing backports to 14.04 and + reducing the time to build and size of the -doc package (LP: #1524700). + + -- James Page Thu, 10 Dec 2015 10:23:51 +0000 + +dpdk (2.0.0-0ubuntu2) xenial; urgency=low + + * d/p/ubunut-avoid-texlive-fonts-extra, d/control: + Replace use of DejaVuSansMono by courier and drop dependency on the + texlive-fonts-extra package (which is in universe). + * d/watch added to allow use of uscan to check for upstream releases. + * d/dpdk-init: fix error if bash variables could not be resolved that + appeared as "[: -gt: unexpected operator" (had no functional impact) + * d/dpdk-init: + Replace use of head and cut (in /usr/bin) commands with sed (in /bin) + while also adding /usr/bin to the PATH used on direct /etc/init.d/dpdk + invocation. The PATH is only updated to be on the safe side, there + should be no other commands from /usr/bin used (LP: #1516543). + * d/t/test-mountpoint: add dep8 test to cover the issue of LP #1517075. + * d/dpdk-dev.install: Copy the SDK makefiles into place (LP: #1517075). + + -- Stefan Bader Tue, 17 Nov 2015 11:50:15 +0100 + +dpdk (2.0.0-0ubuntu1) wily; urgency=low + + * Initial release (LP: #1487538) + + -- Stefan Bader Mon, 01 Jun 2015 18:46:38 +0200 diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 00000000..9a934901 --- /dev/null +++ b/debian/control @@ -0,0 +1,686 @@ +Source: dpdk +Priority: optional +Maintainer: Ubuntu Developers +Build-Depends: debhelper (>= 9), + dh-python, + dh-systemd (>= 1.5), + dkms, + doxygen, + graphviz, + inkscape, + libcap-dev, + libpcap-dev, + libxen-dev, + libxenstore3.0, + python, + python-sphinx, + texlive-fonts-recommended, + texlive-latex-extra +Standards-Version: 3.9.6 +Section: libs +Homepage: http://www.dpdk.org +Vcs-Git: https://gerrit.fd.io/r/deb_dpdk +Vcs-Browser: https://gerrit.fd.io/r/gitweb?p=deb_dpdk.git + +Package: dpdk +Section: admin +Architecture: amd64 arm64 i386 +Homepage: http://www.dpdk.org +Depends: libdpdk-dev (= ${binary:Version}), + lsb-base (>= 3.2-14), + ${misc:Depends}, + ${python:Depends}, + ${shlibs:Depends} +Suggests: linux-image-generic +Description: Data Plane Development Kit (runtime) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime environment to run DPDK applications. + +Package: dpdk-dev +Section: devel +Architecture: amd64 arm64 i386 +Homepage: http://www.dpdk.org +Depends: libdpdk-dev (= ${binary:Version}), ${misc:Depends} +Description: Data Plane Development Kit (development files) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains examples and the upstream build environment. It is + not strictly required in order to build external applications. + +Package: dpdk-doc +Section: doc +Architecture: all +Homepage: http://dpdk.org/doc/guides/index.html +Depends: libjs-jquery, libjs-underscore, ${misc:Depends} +Description: Data Plane Development Kit (documentation) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the complete set of documentation and guides. + +Package: dpdk-igb-uio-dkms +Section: kernel +Architecture: amd64 arm64 i386 +Depends: dkms, + dpdk-dev (= ${binary:Version}), + libdpdk-dev (= ${binary:Version}), + make, + ${misc:Depends} +Description: Data Plane Development Kit (igb uio dkms) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the source code for the igb_uio kernel module. + +Package: dpdk-rte-kni-dkms +Section: kernel +Architecture: amd64 arm64 i386 +Depends: dkms, + dpdk-dev (= ${binary:Version}), + libdpdk-dev (= ${binary:Version}), + make, + ${misc:Depends} +Description: Data Plane Development Kit (rte kni dkms) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the source code for the rte_kni kernel module. + +Package: libdpdk-dev +Section: libdevel +Architecture: amd64 arm64 i386 +Multi-Arch: same +Homepage: http://www.dpdk.org +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, + libdpdk-libethdev3 (= ${binary:Version}), + libdpdk-librte-acl2 (= ${binary:Version}), + libdpdk-librte-cfgfile2 (= ${binary:Version}), + libdpdk-librte-cmdline2 (= ${binary:Version}), + libdpdk-librte-cryptodev1 (= ${binary:Version}), + libdpdk-librte-distributor1 (= ${binary:Version}), + libdpdk-librte-eal2 (= ${binary:Version}), + libdpdk-librte-hash2 (= ${binary:Version}), + libdpdk-librte-ip-frag1 (= ${binary:Version}), + libdpdk-librte-jobstats1 (= ${binary:Version}), + libdpdk-librte-kni2 (= ${binary:Version}) [amd64 arm64], + libdpdk-librte-kvargs1 (= ${binary:Version}), + libdpdk-librte-lpm2 (= ${binary:Version}), + libdpdk-librte-mbuf2 (= ${binary:Version}), + libdpdk-librte-mempool1 (= ${binary:Version}), + libdpdk-librte-meter1 (= ${binary:Version}), + libdpdk-librte-pipeline3 (= ${binary:Version}), + libdpdk-librte-pmd-af-packet1 (= ${binary:Version}), + libdpdk-librte-pmd-bond1 (= ${binary:Version}), + libdpdk-librte-pmd-cxgbe1 (= ${binary:Version}), + libdpdk-librte-pmd-e10001 (= ${binary:Version}), + libdpdk-librte-pmd-ena1 (= ${binary:Version}), + libdpdk-librte-pmd-enic1 (= ${binary:Version}), + libdpdk-librte-pmd-fm10k1 (= ${binary:Version}) [amd64 i386], + libdpdk-librte-pmd-i40e1 (= ${binary:Version}) [amd64 i386], + libdpdk-librte-pmd-ixgbe1 (= ${binary:Version}), + libdpdk-librte-pmd-null-crypto1 (= ${binary:Version}), + libdpdk-librte-pmd-null1 (= ${binary:Version}), + libdpdk-librte-pmd-pcap1 (= ${binary:Version}), + libdpdk-librte-pmd-ring2 (= ${binary:Version}), + libdpdk-librte-pmd-vhost1 (= ${binary:Version}), + libdpdk-librte-pmd-virtio1 (= ${binary:Version}), + libdpdk-librte-pmd-vmxnet3-uio1 (= ${binary:Version}), + libdpdk-librte-pmd-xenvirt1 (= ${binary:Version}), + libdpdk-librte-port2 (= ${binary:Version}), + libdpdk-librte-power1 (= ${binary:Version}), + libdpdk-librte-reorder1 (= ${binary:Version}), + libdpdk-librte-ring1 (= ${binary:Version}), + libdpdk-librte-sched1 (= ${binary:Version}), + libdpdk-librte-table2 (= ${binary:Version}), + libdpdk-librte-timer1 (= ${binary:Version}), + libdpdk-librte-vhost2 (= ${binary:Version}) +Description: Data Plane Development Kit (basic development files) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the basic headers and library files required to + build external applications which will also require at least SSE3 support + when running. + +Package: libdpdk-libethdev3 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__ethdev_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (libethdev runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for libethdev + +Package: libdpdk-librte-acl2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__ethdev_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-acl runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_acl + +Package: libdpdk-librte-cfgfile2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__cfgfile_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-cfgfile runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_cfgfile + +Package: libdpdk-librte-cmdline2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-cmdline runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_cmdline + +Package: libdpdk-librte-cryptodev1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__cryptodev_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-cryptodev runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_cryptodev + +Package: libdpdk-librte-distributor1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__distributor_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-distributor runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_distributor + +Package: libdpdk-librte-eal2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__eal_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends}, libdpdk-librte-mempool1 +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-eal runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_eal + +Package: libdpdk-librte-hash2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__hash_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-hash runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_hash + +Package: libdpdk-librte-ip-frag1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__ip__frag_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-ip-frag runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_ip_frag + +Package: libdpdk-librte-jobstats1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__jobstats_8h_source.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-jobstats runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_jobstats + +Package: libdpdk-librte-kni2 +Architecture: amd64 arm64 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__kni_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-kni runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_kni + +Package: libdpdk-librte-kvargs1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__kvargs_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-kvargs runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_kvargs + +Package: libdpdk-librte-lpm2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__lpm_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-lpm runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_lpm + +Package: libdpdk-librte-mbuf2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__mbuf_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-mbuf2 runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_mbuf + +Package: libdpdk-librte-mempool1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__mempool_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-mempool runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_mempool + +Package: libdpdk-librte-meter1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__meter_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-meter runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_meter + +Package: libdpdk-librte-pipeline3 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__pipeline_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pipeline runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pipeline + +Package: libdpdk-librte-pmd-af-packet1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/browse/dpdk/tree/drivers/net/af_packet +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-af-packet runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_af_packet + +Package: libdpdk-librte-pmd-bond1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-bond runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_bond + +Package: libdpdk-librte-pmd-cxgbe1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/cxgbe.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-cxgbe runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_cxgbe + +Package: libdpdk-librte-pmd-e10001 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/e1000em.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-e1000 runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_e1000 + +Package: libdpdk-librte-pmd-ena1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/ena.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-ena runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_ena + +Package: libdpdk-librte-pmd-enic1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/enic.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-enic runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_enic + +Package: libdpdk-librte-pmd-fm10k1 +Architecture: amd64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/fm10k.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-fm10k runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_fm10k + +Package: libdpdk-librte-pmd-i40e1 +Architecture: amd64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/i40e.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-i40e runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_i40e + +Package: libdpdk-librte-pmd-ixgbe1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/ixgbe.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-ixgbe runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_ixgbe + +Package: libdpdk-librte-pmd-null-crypto1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/cryptodevs/null.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-null-crypto runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_null_crypto + +Package: libdpdk-librte-pmd-null1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/browse/dpdk/tree/drivers/net/null +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-null runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_null + +Package: libdpdk-librte-pmd-pcap1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/pcap_ring.html#libpcap-based-pmd +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-pcap runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_pcap + +Package: libdpdk-librte-pmd-ring2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/pcap_ring.html#rings-based-pmd +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-ring runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_ring + +Package: libdpdk-librte-pmd-vhost1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/vhost.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-vhost runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_vhost + +Package: libdpdk-librte-pmd-virtio1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/virtio.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-virtio runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_virtio + +Package: libdpdk-librte-pmd-vmxnet3-uio1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/nics/vmxnet3.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-vmxnet3-uio runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_vmxnet3_uio + +Package: libdpdk-librte-pmd-xenvirt1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/guides/xen/pkt_switch.html#xen-pmd-frontend-prerequisites +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-pmd-xenvirt runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_pmd_xenvirt + +Package: libdpdk-librte-port2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__port_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-port runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_port + +Package: libdpdk-librte-power1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__power_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-power runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_power + +Package: libdpdk-librte-reorder1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__reorder_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte-reorder runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_reorder + +Package: libdpdk-librte-ring1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__ring_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte_ring runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_ring + +Package: libdpdk-librte-sched1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__sched_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte_sched runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_sched + +Package: libdpdk-librte-table2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__table_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte_table runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_table + +Package: libdpdk-librte-timer1 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__timer_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte_timer runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_timer + +Package: libdpdk-librte-vhost2 +Architecture: amd64 arm64 i386 +Section: libs +Multi-Arch: same +Homepage: http://dpdk.org/doc/api/rte__virtio__net_8h.html +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Conflicts: libdpdk0 +Description: Data Plane Development Kit (librte_vhost runtime library) + DPDK is a set of libraries for fast packet processing. Applications run + in user-space and communicate directly with dedicated network interfaces. + This package contains the runtime libraries for librte_vhost diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 00000000..1c6ee2cf --- /dev/null +++ b/debian/copyright @@ -0,0 +1,47 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: dpdk +Source: http://dpdk.org + +Files: * +Copyright: 2008-2014 Cisco Systems, Inc. + 2012-2014 6WIND S.A. + 1999-2015 Intel Corporation. + 2010-2013 Tilera Corporation. + 2012 Mellanox. + 2007 VMware, Inc. + 2007 Nuova Systems, Inc. + 2014 IBM Corporation. +License: BSD+GPLv2+LGPLv2 + On Debian systems, the complete text of the BSD License can be + found in "/usr/share/common-licenses/BSD". + . + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +Files: debian/* +Copyright: 2015, 2016 Canonical Ltd. +License: GPL-3 + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License version 3, as published + by the Free Software Foundation. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranties of + MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License along + with this program. If not, see . diff --git a/debian/dpdk-dev.dirs b/debian/dpdk-dev.dirs new file mode 100644 index 00000000..bdac81a8 --- /dev/null +++ b/debian/dpdk-dev.dirs @@ -0,0 +1 @@ +usr/share/dpdk diff --git a/debian/dpdk-doc.README.Debian b/debian/dpdk-doc.README.Debian new file mode 100644 index 00000000..669bf396 --- /dev/null +++ b/debian/dpdk-doc.README.Debian @@ -0,0 +1,52 @@ +dpdk for Debian +--------------- + +This package is currently compiled for the lowest possible CPU requirements. +Which still requires at least SSE3 to be supported by the CPU. + +dpdk (runtime) / libdpdk0: + +For runtime /etc/dpdk/interfaces holds a list of PCI devices to be assigned +to DPDK compatible drivers and /etc/dpdk/dpdk.conf allows one to define the +number of hugepages to be reserved at boot. +The runtime environment is not required to build applications that use +DPDK but if those applications get packaged they should depend on the +runtime. + +Since DPDK technically would be able to use all of your compatible card/driver +combination it is required that you take care of blacklisting / whitelisting +network cards to tell dpdk which it has to to initialize (especially true for +virtio-pci as the normal kernel driver is considered compatible). + +If you are working with virtio-pci network cards it isn't a hard requirement to +assign them to a dpdk compatible userspace driver like uio_pci_generic. But you +have to at least unbind them from the default kernel driver (virtio-pci) to +avoid bugs by dpdk and the kernel working on them simultaneously. It is +recommended to reassign them to dpdk compatible drivers using +/etc/dpdk/interfaces (just as you would with any physical card). + +libdpdk0 contains the shared object needed to run a program in terms of symbol +resolution, but none of the other runtime environment pieces. + +dpdk-dev / libdpdk-dev: + +The minimum requirement for developing external applications is libdpdk-dev, +which brings the headers and library files. + +In dpdk-dev is the upstream makefile environment. Sample applications, which +are shipped in dpdk-doc, are providing makefiles. +Those makefiles need to find the dpdk build system. To do so they need some +environment variables defined: + export RTE_TARGET="$(uname -m)-default-linuxapp-gcc" + export RTE_SDK="/usr/share/dpdk/" + export RTE_INCLUDE="/usr/include/dpdk" +Those can be set by the user to overwrite with a custom path/config. If no +custom environment is used it is recommended to source the file +/usr/share/dpdk/dpdk-sdk-env.sh which comes with dpdk-dev. +If the paths ever change or there will be more/less variables needed to build +against dpdk-dev that file will be adjusted for you. + +Alternatively /usr/include/dpdk/rte_config.h has to be pre-included: +CFLAGS += -I/usr/include/dpdk -irte_config.h + + -- Christian Ehrhardt Thu, 04 Feb 2016 09:16:11 +0100 diff --git a/debian/dpdk-doc.dirs b/debian/dpdk-doc.dirs new file mode 100644 index 00000000..fcd9dfe3 --- /dev/null +++ b/debian/dpdk-doc.dirs @@ -0,0 +1 @@ +usr/share/doc/dpdk diff --git a/debian/dpdk-igb-uio-dkms.dkms b/debian/dpdk-igb-uio-dkms.dkms new file mode 100644 index 00000000..10dfecc7 --- /dev/null +++ b/debian/dpdk-igb-uio-dkms.dkms @@ -0,0 +1,7 @@ +PACKAGE_NAME="dpdk-igb-uio" +PACKAGE_VERSION="#MODULE_VERSION#" +BUILT_MODULE_NAME[0]="igb_uio" +MAKE="source /usr/share/dpdk/dpdk-sdk-env.sh; make MODULE_CFLAGS='-I/usr/include/dpdk -include /usr/include/dpdk/rte_config.h'" +CLEAN="source /usr/share/dpdk/dpdk-sdk-env.sh; make clean" +DEST_MODULE_LOCATION[0]="/updates/dkms" +AUTOINSTALL="YES" diff --git a/debian/dpdk-init b/debian/dpdk-init new file mode 100755 index 00000000..86eda2cb --- /dev/null +++ b/debian/dpdk-init @@ -0,0 +1,251 @@ +#!/bin/sh +# +# dpdk-init: startup script to initialize a dpdk runtime environment +# +# Copyright 2015-2016 Canonical Ltd. +# Autor: Stefan Bader +# Autor: Christian Ehrhardt +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +set -e + +DPDK_BIND="/sbin/dpdk_nic_bind" +DPDK_INTERF="/etc/dpdk/interfaces" + + +# pagesize supports [G|g]/[M|m]/[K|k] +get_kbytes() { + local unit + local num + unit=$(echo "${1}" | sed 's/[0-9]*//g') + num=$(echo "${1}" | sed 's/[^0-9]*//g') + case ${unit} in + *g | *G) + echo $((num*1024*1024)) + ;; + *m | *M) + echo $((num*1024)) + ;; + *k | *K) + echo $((num)) + ;; + *) + echo $((num/1024)) + ;; + esac +} + +get_default_hpgsz() { + default_hpgsz=$(grep "Hugepagesize:" /proc/meminfo \ + | sed 's/^Hugepagesize:\s*//g' | sed 's/\s*kB$//g') + echo "${default_hpgsz}" +} + +get_hugetlbfs_mountpoint() { + local requested_hpgsz + local mp_hpgsz + requested_hpgsz=$(get_kbytes "${1}") + + grep hugetlbfs /proc/mounts | while read \ + mntfrom mntpoint mntfstype mntopt mntdump mntfsck; do + + # check if the current muntpoint is of the requested huge page size + case ${mntopt} in + *pagesize=*) + mp_hpgsz=$(echo "${mntopt}" | sed 's/.*pagesize=//g' | sed 's/,.*//g') + mp_hpgsz=$(get_kbytes "${mp_hpgsz}") + ;; + *) + mp_hpgsz=$(get_default_hpgsz) + ;; + esac + if [ "${requested_hpgsz}" -eq "${mp_hpgsz}" ]; then + echo "${mntpoint}" + return + fi + done +} + +_mount_hugetlbfs() { + local MNT="/dev/hugepages" + local MNTOPTS="" + local requested_hpgsz + local default_hpgsz + requested_hpgsz=$(get_kbytes "${1}") + default_hpgsz=$(get_default_hpgsz) + + # kernel might not support the requested size + if [ ! -d "/sys/kernel/mm/hugepages/hugepages-${requested_hpgsz}kB" ]; then + echo "WARNING: requested page size of ${requested_hpgsz}kB " \ + "not supported by the kernel" + return 0 + fi + + # special case if this is not the default huge page size + if [ "${requested_hpgsz}" -ne "${default_hpgsz}" ]; then + MNT="${MNT}-${requested_hpgsz}" + MNTOPTS="pagesize=${requested_hpgsz}K" + fi + + if [ ! -e "${MNT}" ]; then + mkdir "${MNT}" + if [ $? -ne 0 ]; then + echo "Could not create directory ${MNT}!" >&2 + return 1 + fi + fi + mount -thugetlbfs hugetlbfs "${MNT}" -o "${MNTOPTS}" + return $? +} + +# +# The DPDK library will use the first mounted instance it finds for a given +# page size. so if there is already one for a given size there is no need to +# create another for the same huge page size. +# +mount_hugetlbfs() { + if [ ! -r /etc/dpdk/dpdk.conf ]; then + return 1 + fi + . /etc/dpdk/dpdk.conf + + # if a page size is requested, there has to be a mountpoint for that size + if [ -n "${NR_2M_PAGES}" -a -z "$(get_hugetlbfs_mountpoint '2M')" ]; then + _mount_hugetlbfs 2M + fi + if [ -n "${NR_1G_PAGES}" -a -z "$(get_hugetlbfs_mountpoint '1G')" ]; then + _mount_hugetlbfs 1G + fi +} + +_setup_hugepages() { + MMDIR="/sys/kernel/mm/hugepages/${1}" + PAGES=${2} + + if [ "$PAGES" != "" ]; then + if [ "$PAGES" -gt 0 ]; then + if [ -d "$MMDIR" -a -w "$MMDIR/nr_hugepages" ]; then + # increases the chance to allocate enough huge pages + # configurable, since it comes at a perf penality + if [ "$DROPCACHE_BEFORE_HP_ALLOC" = "1" ]; then + echo 3 > /proc/sys/vm/drop_caches + fi + + echo "$PAGES" > "$MMDIR/nr_hugepages" + + GOTPAGES=$(cat "$MMDIR/nr_hugepages") + if [ "$GOTPAGES" -lt "$PAGES" ]; then + echo "WARNING: could not allocate $PAGES at " \ + "$MMDIR/nr_hugepages (only got $GOTPAGES)." + fi + else + echo "WARNING: $MMDIR/nr_hugepages not found/writable" + fi + fi + fi +} + +# +# Reserve a certain amount of hugepages (defined in /etc/dpdk.conf) +# +setup_hugepages() { + if [ ! -r /etc/dpdk/dpdk.conf ]; then + return 1 + fi + . /etc/dpdk/dpdk.conf + + _setup_hugepages "hugepages-2048kB" "$NR_2M_PAGES" + _setup_hugepages "hugepages-1048576kB" "$NR_1G_PAGES" + + # dpdk uses 2*#hugepages mappings, increase for huge systems LP #1507921 + if [ -d /sys/kernel/mm/hugepages ]; then + max_map_count=$(awk -v pad=65530 '{tot+=$1}END{print tot*2+pad}' \ + /sys/kernel/mm/hugepages/hugepages-*/nr_hugepages) + sysctl -q vm.max_map_count="${max_map_count:-65530}" + fi + + return 0 +} + +# +# Allow NICs to be automatically bound to DPDK compatible drivers on boot. +# +bind_interfaces() { + if [ ! -r "$DPDK_INTERF" ]; then + return 0 + fi + grep -v '^[ \t]*#' "$DPDK_INTERF" | while read BUS ID MOD; do + if [ "$BUS" = "" -o "$ID" = "" -o "$MOD" = "" ]; then + echo "WARNING: incomplete spec in $DPDK_INTERF" \ + " - BUS '$BUS' ID '$ID' MOD '$MOD'" + continue + fi + if [ "$BUS" != "pci" ]; then + echo "WARNING: incompatible bus '$BUS' in $DPDK_INTERF" + continue + fi + + SYSFSPATH="/sys/bus/$BUS/devices/$ID" + if [ ! -e "$SYSFSPATH" ]; then + echo "WARNING: invalid pci ID '$ID' in $DPDK_INTERF" \ + " - '$SYSFSPATH' does not exist" + continue + fi + if [ -L "$SYSFSPATH/driver" ]; then + CUR=$(readlink "$SYSFSPATH/driver") + CUR=$(basename "$CUR") + else + # device existing, but currently unregistered + CUR="" + fi + if [ "$MOD" != "$CUR" ]; then + modprobe -q "$MOD" || true + # cloud img have no linux-image-extra initially (uip_pci_generic) + # so check if the module is available (loadable/built in) + if [ -e "/sys/bus/pci/drivers/${MOD}" ]; then + echo "Reassigning pci:$ID to $MOD" + $DPDK_BIND -b "$MOD" "$ID" + else + echo "Warning: failed assigning pci:$ID," \ + " module $MOD not available" + fi + else + echo "pci:$ID already assigned to $MOD" + fi + done +} + + + +case "$1" in +start) + mount_hugetlbfs + setup_hugepages + bind_interfaces + ;; +stop) + ;; +reload|force-reload) + setup_hugepages + bind_interfaces + ;; +status) + $DPDK_BIND --status + ;; +*) + echo "Usage: $0 {start|stop|reload|force-reload|status}" + exit 1 + ;; +esac + diff --git a/debian/dpdk-rte-kni-dkms.dkms b/debian/dpdk-rte-kni-dkms.dkms new file mode 100644 index 00000000..efccf1fb --- /dev/null +++ b/debian/dpdk-rte-kni-dkms.dkms @@ -0,0 +1,7 @@ +PACKAGE_NAME="dpdk-rte-kni" +PACKAGE_VERSION="#MODULE_VERSION#" +BUILT_MODULE_NAME[0]="rte_kni" +MAKE="source /usr/share/dpdk/dpdk-sdk-env.sh; make MODULE_CFLAGS='-I/usr/include/dpdk -include /usr/include/dpdk/rte_config.h -I$source_tree/dpdk-rte-kni-#MODULE_VERSION#/ethtool/ixgbe -I$source_tree/dpdk-rte-kni-#MODULE_VERSION#/ethtool/igb'" +CLEAN="source /usr/share/dpdk/dpdk-sdk-env.sh; make clean" +DEST_MODULE_LOCATION[0]="/updates/dkms" +AUTOINSTALL="YES" diff --git a/debian/dpdk-sdk-env.sh.in b/debian/dpdk-sdk-env.sh.in new file mode 100755 index 00000000..8cc3944f --- /dev/null +++ b/debian/dpdk-sdk-env.sh.in @@ -0,0 +1,3 @@ +export RTE_TARGET=SDK_TARGET +export RTE_SDK="/usr/share/dpdk/" +export RTE_INCLUDE="/usr/include/dpdk" diff --git a/debian/dpdk.conf b/debian/dpdk.conf new file mode 100644 index 00000000..fb4572d0 --- /dev/null +++ b/debian/dpdk.conf @@ -0,0 +1,54 @@ +# +# The number of 2M hugepages to reserve on system boot +# +# Default is 0 +# To e.g. let it reserve 64x 2M Hugepages set: +# NR_2M_PAGES=64 + +# +# The number of 1G hugepages to reserve on system boot +# +# Default is 0 +# To e.g. let it reserve 2x 1G Hugepages set: +# NR_1G_PAGES=2 + +# +# Dropping slab and pagecache can help to successfully allocate hugepages, +# especially later in the lifecycle of a system. +# This comes at the cost of loosing all slab and pagecache on (re)start +# of the dpdk service - therefore the default is off. +# +# Default is 0 +# Set to 1 to enable it +#DROPCACHE_BEFORE_HP_ALLOC=0 + +# The DPDK library will use the first mounted hugetlbfs. +# The init scripts try to ensure there is at least one default hugetlbfs +# mountpoint on start. +# If you have multiple hugetlbfs mountpoints for a complex (e.g. specific numa +# policies) setup it should be controlled by the admin instead of this init +# script. In that case specific mountpoints can be provided as parameters to +# the DPDK library. + +# Hardware may support other granularities of hugepages (like 4M). But the +# larger the hugepages the earlier those should be allocated. +# Note: the dpdk init scripts will report warnings, but not fail if they could +# not allocate the requested amount of hugepages. +# The more or the larger the hugepages to be allocated are, the more it is +# recommended to do the reservation as kernel commandline arguments. +# To do so edit /etc/default/grub: GRUB_CMDLINE_LINUX_DEFAULT +# and add [hugepagesz=xx] hugepages=yy ... +# +# Kernel commandline config: +# hugepagesz sets the size for the next hugepages reservation (default 2M) +# hugepages reserves the given number of hugepages of the size set before +# +# After modifying /etc/default/grub, the command "update-grub" has to be +# run in order to re-generate the grub config files. The new values will +# be used after next reboot. +# +# example: +# GRUB_CMDLINE_LINUX_DEFAULT="... hugepages=16 hugepagesz=1G hugepages=2" +# +# If the system supports it, this will reserve 16x 2M pages and 2x 1G pages. +# diff --git a/debian/dpdk.dirs b/debian/dpdk.dirs new file mode 100644 index 00000000..29ca563f --- /dev/null +++ b/debian/dpdk.dirs @@ -0,0 +1,5 @@ +etc/dpdk +lib/dpdk +sbin +usr/bin +usr/lib/dpdk diff --git a/debian/dpdk.init b/debian/dpdk.init new file mode 100644 index 00000000..01b47845 --- /dev/null +++ b/debian/dpdk.init @@ -0,0 +1,57 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: dpdk +# Required-Start: $remote_fs $local_fs +# Required-Stop: $remote_fs $local_fs +# Default-Start: S +# Default-Stop: 0 1 6 +# Short-Description: start dpdk runtime environment +### END INIT INFO + +set -e + +PATH="/sbin:/bin:/usr/bin" + +[ -d /lib/dpdk ] || exit 0 + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.2-14) to ensure that this file is present +# and status_of_proc is working. +. /lib/lsb/init-functions + +error=0 +case "$1" in +start) + log_action_begin_msg "Starting DPDK environment" "dpdk" + output=$(/lib/dpdk/dpdk-init start 2>&1) || error="$?" + if [ ! -z "$output" ]; then + echo "$output" | while read line; do + log_action_cont_msg "$line" + done + fi + log_action_end_msg $error + exit $error + ;; +stop) + ;; +restart|force-reload) + ;; +status) + output=$(/lib/dpdk/dpdk-init --status 2>&1) || error="$?" + if [ ! -z "$output" ]; then + echo "$output" | while read line; do + log_action_cont_msg "$line" + done + fi + log_action_end_msg $error + exit $error + ;; +*) + echo "Usage: $0 {start|stop|restart|force-reload|status}" + exit 1 + ;; +esac + +exit 0 + diff --git a/debian/dpdk.install b/debian/dpdk.install new file mode 100644 index 00000000..24c8d452 --- /dev/null +++ b/debian/dpdk.install @@ -0,0 +1,2 @@ +debian/dpdk-init lib/dpdk/ +debian/dpdk.conf etc/dpdk/ diff --git a/debian/dpdk.interfaces b/debian/dpdk.interfaces new file mode 100644 index 00000000..3442343b --- /dev/null +++ b/debian/dpdk.interfaces @@ -0,0 +1,19 @@ +# +# Currently only "pci" is supported +# Device ID on the specified bus +# Driver to bind against (vfio-pci, uio_pci_generic, igb_uio or +# rte_kni) +# +# Be aware that the two dpdk compatible drivers uio_pci_generic and vfio-pci are +# part of linux-image-extra- package. +# This package is not always installed by default - for example in cloud-images. +# So please install it in case you run into missing module issues. +# +# For the module igb_uio, please install the dpdk-igb-uio-dkms package. +# For the module rte_kni, please install the dpdk-rte-kni-dkms package. +# +# +# pci 0000:04:00.0 vfio-pci +# pci 0000:04:00.1 uio_pci_generic +# pci 0000:05:00.0 igb_uio +# pci 0000:06:00.0 rte_kni diff --git a/debian/dpdk.service b/debian/dpdk.service new file mode 100644 index 00000000..09ef8bec --- /dev/null +++ b/debian/dpdk.service @@ -0,0 +1,12 @@ +[Unit] +Description=DPDK runtime environment +DefaultDependencies=false +After=network-pre.target local-fs.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/lib/dpdk/dpdk-init start + +[Install] +WantedBy=multi-user.target diff --git a/debian/libdpdk-dev.dirs b/debian/libdpdk-dev.dirs new file mode 100644 index 00000000..e43b95cb --- /dev/null +++ b/debian/libdpdk-dev.dirs @@ -0,0 +1 @@ +usr/include diff --git a/debian/libdpdk-libethdev3.symbols b/debian/libdpdk-libethdev3.symbols new file mode 100644 index 00000000..46313720 --- /dev/null +++ b/debian/libdpdk-libethdev3.symbols @@ -0,0 +1,112 @@ +libethdev.so.3 libdpdk-libethdev3 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 + DPDK_2.2@DPDK_2.2 16.04 + _rte_eth_dev_callback_process@DPDK_2.2 16.04 + rte_eth_add_rx_callback@DPDK_2.2 16.04 + rte_eth_add_tx_callback@DPDK_2.2 16.04 + rte_eth_allmulticast_disable@DPDK_2.2 16.04 + rte_eth_allmulticast_enable@DPDK_2.2 16.04 + rte_eth_allmulticast_get@DPDK_2.2 16.04 + rte_eth_copy_pci_info@DPDK_2.2 16.04 + rte_eth_dev_allocate@DPDK_2.2 16.04 + rte_eth_dev_allocated@DPDK_2.2 16.04 + rte_eth_dev_attach@DPDK_2.2 16.04 + rte_eth_dev_callback_register@DPDK_2.2 16.04 + rte_eth_dev_callback_unregister@DPDK_2.2 16.04 + rte_eth_dev_close@DPDK_2.2 16.04 + rte_eth_dev_configure@DPDK_2.2 16.04 + rte_eth_dev_count@DPDK_2.2 16.04 + rte_eth_dev_default_mac_addr_set@DPDK_2.2 16.04 + rte_eth_dev_detach@DPDK_2.2 16.04 + rte_eth_dev_filter_ctrl@DPDK_2.2 16.04 + rte_eth_dev_filter_supported@DPDK_2.2 16.04 + rte_eth_dev_flow_ctrl_get@DPDK_2.2 16.04 + rte_eth_dev_flow_ctrl_set@DPDK_2.2 16.04 + rte_eth_dev_get_dcb_info@DPDK_2.2 16.04 + rte_eth_dev_get_eeprom@DPDK_2.2 16.04 + rte_eth_dev_get_eeprom_length@DPDK_2.2 16.04 + rte_eth_dev_get_mtu@DPDK_2.2 16.04 + rte_eth_dev_get_reg_info@DPDK_2.2 16.04 + rte_eth_dev_get_reg_length@DPDK_2.2 16.04 + rte_eth_dev_get_supported_ptypes@DPDK_16.04 16.04 + rte_eth_dev_get_vlan_offload@DPDK_2.2 16.04 + rte_eth_dev_info_get@DPDK_2.2 16.04 + rte_eth_dev_is_valid_port@DPDK_2.2 16.04 + rte_eth_dev_l2_tunnel_eth_type_conf@DPDK_16.04 16.04 + rte_eth_dev_l2_tunnel_offload_set@DPDK_16.04 16.04 + rte_eth_dev_mac_addr_add@DPDK_2.2 16.04 + rte_eth_dev_mac_addr_remove@DPDK_2.2 16.04 + rte_eth_dev_priority_flow_ctrl_set@DPDK_2.2 16.04 + rte_eth_dev_release_port@DPDK_2.2 16.04 + rte_eth_dev_rss_hash_conf_get@DPDK_2.2 16.04 + rte_eth_dev_rss_hash_update@DPDK_2.2 16.04 + rte_eth_dev_rss_reta_query@DPDK_2.2 16.04 + rte_eth_dev_rss_reta_update@DPDK_2.2 16.04 + rte_eth_dev_rx_intr_ctl@DPDK_2.2 16.04 + rte_eth_dev_rx_intr_ctl_q@DPDK_2.2 16.04 + rte_eth_dev_rx_intr_disable@DPDK_2.2 16.04 + rte_eth_dev_rx_intr_enable@DPDK_2.2 16.04 + rte_eth_dev_rx_queue_start@DPDK_2.2 16.04 + rte_eth_dev_rx_queue_stop@DPDK_2.2 16.04 + rte_eth_dev_set_eeprom@DPDK_2.2 16.04 + rte_eth_dev_set_link_down@DPDK_2.2 16.04 + rte_eth_dev_set_link_up@DPDK_2.2 16.04 + rte_eth_dev_set_mc_addr_list@DPDK_2.2 16.04 + rte_eth_dev_set_mtu@DPDK_2.2 16.04 + rte_eth_dev_set_rx_queue_stats_mapping@DPDK_2.2 16.04 + rte_eth_dev_set_tx_queue_stats_mapping@DPDK_2.2 16.04 + rte_eth_dev_set_vf_rx@DPDK_2.2 16.04 + rte_eth_dev_set_vf_rxmode@DPDK_2.2 16.04 + rte_eth_dev_set_vf_tx@DPDK_2.2 16.04 + rte_eth_dev_set_vf_vlan_filter@DPDK_2.2 16.04 + rte_eth_dev_set_vlan_ether_type@DPDK_2.2 16.04 + rte_eth_dev_set_vlan_offload@DPDK_2.2 16.04 + rte_eth_dev_set_vlan_pvid@DPDK_2.2 16.04 + rte_eth_dev_set_vlan_strip_on_queue@DPDK_2.2 16.04 + rte_eth_dev_socket_id@DPDK_2.2 16.04 + rte_eth_dev_start@DPDK_2.2 16.04 + rte_eth_dev_stop@DPDK_2.2 16.04 + rte_eth_dev_tx_queue_start@DPDK_2.2 16.04 + rte_eth_dev_tx_queue_stop@DPDK_2.2 16.04 + rte_eth_dev_uc_all_hash_table_set@DPDK_2.2 16.04 + rte_eth_dev_uc_hash_table_set@DPDK_2.2 16.04 + rte_eth_dev_udp_tunnel_port_add@DPDK_16.04 16.04 + rte_eth_dev_udp_tunnel_port_delete@DPDK_16.04 16.04 + rte_eth_dev_vlan_filter@DPDK_2.2 16.04 + rte_eth_devices@DPDK_2.2 16.04 + rte_eth_dma_zone_reserve@DPDK_2.2 16.04 + rte_eth_driver_register@DPDK_2.2 16.04 + rte_eth_led_off@DPDK_2.2 16.04 + rte_eth_led_on@DPDK_2.2 16.04 + rte_eth_link_get@DPDK_2.2 16.04 + rte_eth_link_get_nowait@DPDK_2.2 16.04 + rte_eth_macaddr_get@DPDK_2.2 16.04 + rte_eth_mirror_rule_reset@DPDK_2.2 16.04 + rte_eth_mirror_rule_set@DPDK_2.2 16.04 + rte_eth_promiscuous_disable@DPDK_2.2 16.04 + rte_eth_promiscuous_enable@DPDK_2.2 16.04 + rte_eth_promiscuous_get@DPDK_2.2 16.04 + rte_eth_remove_rx_callback@DPDK_2.2 16.04 + rte_eth_remove_tx_callback@DPDK_2.2 16.04 + rte_eth_rx_queue_info_get@DPDK_2.2 16.04 + rte_eth_rx_queue_setup@DPDK_2.2 16.04 + rte_eth_set_queue_rate_limit@DPDK_2.2 16.04 + rte_eth_set_vf_rate_limit@DPDK_2.2 16.04 + rte_eth_speed_bitflag@DPDK_16.04 16.04 + rte_eth_stats_get@DPDK_2.2 16.04 + rte_eth_stats_reset@DPDK_2.2 16.04 + rte_eth_timesync_adjust_time@DPDK_2.2 16.04 + rte_eth_timesync_disable@DPDK_2.2 16.04 + rte_eth_timesync_enable@DPDK_2.2 16.04 + rte_eth_timesync_read_rx_timestamp@DPDK_2.2 16.04 + rte_eth_timesync_read_time@DPDK_2.2 16.04 + rte_eth_timesync_read_tx_timestamp@DPDK_2.2 16.04 + rte_eth_timesync_write_time@DPDK_2.2 16.04 + rte_eth_tx_buffer_count_callback@DPDK_16.04 16.04 + rte_eth_tx_buffer_drop_callback@DPDK_16.04 16.04 + rte_eth_tx_buffer_init@DPDK_16.04 16.04 + rte_eth_tx_buffer_set_err_callback@DPDK_16.04 16.04 + rte_eth_tx_queue_info_get@DPDK_2.2 16.04 + rte_eth_tx_queue_setup@DPDK_2.2 16.04 + rte_eth_xstats_get@DPDK_2.2 16.04 + rte_eth_xstats_reset@DPDK_2.2 16.04 diff --git a/debian/libdpdk-librte-acl2.symbols b/debian/libdpdk-librte-acl2.symbols new file mode 100644 index 00000000..b889abe1 --- /dev/null +++ b/debian/libdpdk-librte-acl2.symbols @@ -0,0 +1,15 @@ +librte_acl.so.2 libdpdk-librte-acl2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_acl_add_rules@DPDK_2.0 16.04 + rte_acl_build@DPDK_2.0 16.04 + rte_acl_classify@DPDK_2.0 16.04 + rte_acl_classify_alg@DPDK_2.0 16.04 + rte_acl_classify_scalar@DPDK_2.0 16.04 + rte_acl_create@DPDK_2.0 16.04 + rte_acl_dump@DPDK_2.0 16.04 + rte_acl_find_existing@DPDK_2.0 16.04 + rte_acl_free@DPDK_2.0 16.04 + rte_acl_list_dump@DPDK_2.0 16.04 + rte_acl_reset@DPDK_2.0 16.04 + rte_acl_reset_rules@DPDK_2.0 16.04 + rte_acl_set_ctx_classify@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-cfgfile2.symbols b/debian/libdpdk-librte-cfgfile2.symbols new file mode 100644 index 00000000..c25969dd --- /dev/null +++ b/debian/libdpdk-librte-cfgfile2.symbols @@ -0,0 +1,13 @@ +librte_cfgfile.so.2 libdpdk-librte-cfgfile2 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 + DPDK_2.0@DPDK_2.0 16.04 + rte_cfgfile_close@DPDK_2.0 16.04 + rte_cfgfile_get_entry@DPDK_2.0 16.04 + rte_cfgfile_has_entry@DPDK_2.0 16.04 + rte_cfgfile_has_section@DPDK_2.0 16.04 + rte_cfgfile_load@DPDK_2.0 16.04 + rte_cfgfile_num_sections@DPDK_2.0 16.04 + rte_cfgfile_section_entries@DPDK_2.0 16.04 + rte_cfgfile_section_entries_by_index@DPDK_16.04 16.04 + rte_cfgfile_section_num_entries@DPDK_2.0 16.04 + rte_cfgfile_sections@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-cmdline2.symbols b/debian/libdpdk-librte-cmdline2.symbols new file mode 100644 index 00000000..feeb1e62 --- /dev/null +++ b/debian/libdpdk-librte-cmdline2.symbols @@ -0,0 +1,68 @@ +librte_cmdline.so.2 libdpdk-librte-cmdline2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + cirbuf_add_buf_head@DPDK_2.0 16.04 + cirbuf_add_buf_tail@DPDK_2.0 16.04 + cirbuf_add_head@DPDK_2.0 16.04 + cirbuf_add_head_safe@DPDK_2.0 16.04 + cirbuf_add_tail@DPDK_2.0 16.04 + cirbuf_add_tail_safe@DPDK_2.0 16.04 + cirbuf_align_left@DPDK_2.0 16.04 + cirbuf_align_right@DPDK_2.0 16.04 + cirbuf_del_buf_head@DPDK_2.0 16.04 + cirbuf_del_buf_tail@DPDK_2.0 16.04 + cirbuf_del_head@DPDK_2.0 16.04 + cirbuf_del_head_safe@DPDK_2.0 16.04 + cirbuf_del_tail@DPDK_2.0 16.04 + cirbuf_del_tail_safe@DPDK_2.0 16.04 + cirbuf_get_buf_head@DPDK_2.0 16.04 + cirbuf_get_buf_tail@DPDK_2.0 16.04 + cirbuf_get_head@DPDK_2.0 16.04 + cirbuf_get_tail@DPDK_2.0 16.04 + cirbuf_init@DPDK_2.0 16.04 + cmdline_complete@DPDK_2.0 16.04 + cmdline_complete_get_elt_string@DPDK_2.0 16.04 + cmdline_complete_get_nb_string@DPDK_2.0 16.04 + cmdline_file_new@DPDK_2.0 16.04 + cmdline_free@DPDK_2.0 16.04 + cmdline_get_help_etheraddr@DPDK_2.0 16.04 + cmdline_get_help_ipaddr@DPDK_2.0 16.04 + cmdline_get_help_num@DPDK_2.0 16.04 + cmdline_get_help_portlist@DPDK_2.0 16.04 + cmdline_get_help_string@DPDK_2.0 16.04 + cmdline_in@DPDK_2.0 16.04 + cmdline_interact@DPDK_2.0 16.04 + cmdline_isendoftoken@DPDK_2.0 16.04 + cmdline_new@DPDK_2.0 16.04 + cmdline_parse@DPDK_2.0 16.04 + cmdline_parse_etheraddr@DPDK_2.0 16.04 + cmdline_parse_ipaddr@DPDK_2.0 16.04 + cmdline_parse_num@DPDK_2.0 16.04 + cmdline_parse_portlist@DPDK_2.0 16.04 + cmdline_parse_string@DPDK_2.0 16.04 + cmdline_poll@DPDK_2.1 16.04 + cmdline_printf@DPDK_2.0 16.04 + cmdline_quit@DPDK_2.0 16.04 + cmdline_set_prompt@DPDK_2.0 16.04 + cmdline_stdin_exit@DPDK_2.0 16.04 + cmdline_stdin_new@DPDK_2.0 16.04 + cmdline_token_etheraddr_ops@DPDK_2.0 16.04 + cmdline_token_ipaddr_ops@DPDK_2.0 16.04 + cmdline_token_num_ops@DPDK_2.0 16.04 + cmdline_token_portlist_ops@DPDK_2.0 16.04 + cmdline_token_string_ops@DPDK_2.0 16.04 + cmdline_write_char@DPDK_2.0 16.04 + rdline_add_history@DPDK_2.0 16.04 + rdline_char_in@DPDK_2.0 16.04 + rdline_clear_history@DPDK_2.0 16.04 + rdline_get_buffer@DPDK_2.0 16.04 + rdline_get_history_item@DPDK_2.0 16.04 + rdline_init@DPDK_2.0 16.04 + rdline_newline@DPDK_2.0 16.04 + rdline_quit@DPDK_2.0 16.04 + rdline_redisplay@DPDK_2.0 16.04 + rdline_reset@DPDK_2.0 16.04 + rdline_restart@DPDK_2.0 16.04 + rdline_stop@DPDK_2.0 16.04 + vt100_init@DPDK_2.0 16.04 + vt100_parser@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-cryptodev1.symbols b/debian/libdpdk-librte-cryptodev1.symbols new file mode 100644 index 00000000..9c74dd93 --- /dev/null +++ b/debian/libdpdk-librte-cryptodev1.symbols @@ -0,0 +1,30 @@ +librte_cryptodev.so.1 libdpdk-librte-cryptodev1 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 + rte_crypto_op_pool_create@DPDK_16.04 16.04 + rte_cryptodev_callback_register@DPDK_16.04 16.04 + rte_cryptodev_callback_unregister@DPDK_16.04 16.04 + rte_cryptodev_close@DPDK_16.04 16.04 + rte_cryptodev_configure@DPDK_16.04 16.04 + rte_cryptodev_count@DPDK_16.04 16.04 + rte_cryptodev_count_devtype@DPDK_16.04 16.04 + rte_cryptodev_create_vdev@DPDK_16.04 16.04 + rte_cryptodev_get_dev_id@DPDK_16.04 16.04 + rte_cryptodev_get_feature_name@DPDK_16.04 16.04 + rte_cryptodev_info_get@DPDK_16.04 16.04 + rte_cryptodev_pmd_allocate@DPDK_16.04 16.04 + rte_cryptodev_pmd_callback_process@DPDK_16.04 16.04 + rte_cryptodev_pmd_driver_register@DPDK_16.04 16.04 + rte_cryptodev_pmd_release_device@DPDK_16.04 16.04 + rte_cryptodev_pmd_virtual_dev_init@DPDK_16.04 16.04 + rte_cryptodev_queue_pair_count@DPDK_16.04 16.04 + rte_cryptodev_queue_pair_setup@DPDK_16.04 16.04 + rte_cryptodev_queue_pair_start@DPDK_16.04 16.04 + rte_cryptodev_queue_pair_stop@DPDK_16.04 16.04 + rte_cryptodev_socket_id@DPDK_16.04 16.04 + rte_cryptodev_start@DPDK_16.04 16.04 + rte_cryptodev_stats_get@DPDK_16.04 16.04 + rte_cryptodev_stats_reset@DPDK_16.04 16.04 + rte_cryptodev_stop@DPDK_16.04 16.04 + rte_cryptodev_sym_session_create@DPDK_16.04 16.04 + rte_cryptodev_sym_session_free@DPDK_16.04 16.04 + rte_cryptodevs@DPDK_16.04 16.04 diff --git a/debian/libdpdk-librte-distributor1.symbols b/debian/libdpdk-librte-distributor1.symbols new file mode 100644 index 00000000..61f8d9d6 --- /dev/null +++ b/debian/libdpdk-librte-distributor1.symbols @@ -0,0 +1,11 @@ +librte_distributor.so.1 libdpdk-librte-distributor1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_distributor_clear_returns@DPDK_2.0 16.04 + rte_distributor_create@DPDK_2.0 16.04 + rte_distributor_flush@DPDK_2.0 16.04 + rte_distributor_get_pkt@DPDK_2.0 16.04 + rte_distributor_poll_pkt@DPDK_2.0 16.04 + rte_distributor_process@DPDK_2.0 16.04 + rte_distributor_request_pkt@DPDK_2.0 16.04 + rte_distributor_return_pkt@DPDK_2.0 16.04 + rte_distributor_returned_pkts@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-eal2.symbols b/debian/libdpdk-librte-eal2.symbols new file mode 100644 index 00000000..730ee11a --- /dev/null +++ b/debian/libdpdk-librte-eal2.symbols @@ -0,0 +1,131 @@ +librte_eal.so.2 libdpdk-librte-eal2 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + DPDK_2.2@DPDK_2.2 16.04 + __rte_panic@DPDK_2.0 16.04 + devargs_list@DPDK_2.0 16.04 + eal_parse_sysfs_value@DPDK_2.0 16.04 + eal_timer_source@DPDK_2.0 16.04 + lcore_config@DPDK_2.0 16.04 + pci_device_list@DPDK_2.0 16.04 + pci_driver_list@DPDK_2.0 16.04 + per_lcore__lcore_id@DPDK_2.0 16.04 + per_lcore__rte_errno@DPDK_2.0 16.04 + rte_calloc@DPDK_2.0 16.04 + rte_calloc_socket@DPDK_2.0 16.04 + rte_cpu_check_supported@DPDK_2.0 16.04 + rte_cpu_get_flag_enabled@DPDK_2.0 16.04 + rte_cpu_get_flag_name@DPDK_16.04 16.04 + rte_cycles_vmware_tsc_map@DPDK_2.0 16.04 + rte_delay_us@DPDK_2.0 16.04 + rte_dump_physmem_layout@DPDK_2.0 16.04 + rte_dump_registers@DPDK_2.0 16.04 + rte_dump_stack@DPDK_2.0 16.04 + rte_dump_tailq@DPDK_2.0 16.04 + rte_eal_alarm_cancel@DPDK_2.0 16.04 + rte_eal_alarm_set@DPDK_2.0 16.04 + rte_eal_dev_init@DPDK_2.0 16.04 + rte_eal_devargs_add@DPDK_2.0 16.04 + rte_eal_devargs_dump@DPDK_2.0 16.04 + rte_eal_devargs_type_count@DPDK_2.0 16.04 + rte_eal_driver_register@DPDK_2.0 16.04 + rte_eal_driver_unregister@DPDK_2.0 16.04 + rte_eal_get_configuration@DPDK_2.0 16.04 + rte_eal_get_lcore_state@DPDK_2.0 16.04 + rte_eal_get_physmem_layout@DPDK_2.0 16.04 + rte_eal_get_physmem_size@DPDK_2.0 16.04 + rte_eal_has_hugepages@DPDK_2.0 16.04 + rte_eal_init@DPDK_2.0 16.04 + rte_eal_iopl_init@DPDK_2.0 16.04 + rte_eal_lcore_role@DPDK_2.0 16.04 + rte_eal_mp_remote_launch@DPDK_2.0 16.04 + rte_eal_mp_wait_lcore@DPDK_2.0 16.04 + rte_eal_parse_devargs_str@DPDK_2.0 16.04 + rte_eal_pci_detach@DPDK_2.1 16.04 + rte_eal_pci_dump@DPDK_2.0 16.04 + rte_eal_pci_ioport_map@DPDK_16.04 16.04 + rte_eal_pci_ioport_read@DPDK_16.04 16.04 + rte_eal_pci_ioport_unmap@DPDK_16.04 16.04 + rte_eal_pci_ioport_write@DPDK_16.04 16.04 + rte_eal_pci_map_device@DPDK_16.04 16.04 + rte_eal_pci_probe@DPDK_2.0 16.04 + rte_eal_pci_probe_one@DPDK_2.0 16.04 + rte_eal_pci_read_config@DPDK_2.1 16.04 + rte_eal_pci_register@DPDK_2.0 16.04 + rte_eal_pci_scan@DPDK_2.0 16.04 + rte_eal_pci_unmap_device@DPDK_16.04 16.04 + rte_eal_pci_unregister@DPDK_2.0 16.04 + rte_eal_pci_write_config@DPDK_2.1 16.04 + rte_eal_primary_proc_alive@DPDK_16.04 16.04 + rte_eal_process_type@DPDK_2.0 16.04 + rte_eal_remote_launch@DPDK_2.0 16.04 + rte_eal_set_socket_permissions@DPDK_2.2 16.04 + rte_eal_tailq_lookup@DPDK_2.0 16.04 + rte_eal_tailq_register@DPDK_2.0 16.04 + rte_eal_vdev_init@DPDK_2.0 16.04 + rte_eal_vdev_uninit@DPDK_2.0 16.04 + rte_eal_wait_lcore@DPDK_2.0 16.04 + rte_epoll_ctl@DPDK_2.1 16.04 + rte_epoll_wait@DPDK_2.1 16.04 + rte_exit@DPDK_2.0 16.04 + rte_free@DPDK_2.0 16.04 + rte_get_log_level@DPDK_2.0 16.04 + rte_get_log_type@DPDK_2.0 16.04 + rte_get_tsc_hz@DPDK_2.0 16.04 + rte_hexdump@DPDK_2.0 16.04 + rte_intr_allow_others@DPDK_2.1 16.04 + rte_intr_callback_register@DPDK_2.0 16.04 + rte_intr_callback_unregister@DPDK_2.0 16.04 + rte_intr_cap_multiple@DPDK_2.2 16.04 + rte_intr_disable@DPDK_2.0 16.04 + rte_intr_dp_is_en@DPDK_2.1 16.04 + rte_intr_efd_disable@DPDK_2.1 16.04 + rte_intr_efd_enable@DPDK_2.1 16.04 + rte_intr_enable@DPDK_2.0 16.04 + rte_intr_rx_ctl@DPDK_2.1 16.04 + rte_intr_tls_epfd@DPDK_2.1 16.04 + rte_keepalive_create@DPDK_2.2 16.04 + rte_keepalive_dispatch_pings@DPDK_2.2 16.04 + rte_keepalive_mark_alive@DPDK_2.2 16.04 + rte_keepalive_register_core@DPDK_2.2 16.04 + rte_log@DPDK_2.0 16.04 + rte_log_add_in_history@DPDK_2.0 16.04 + rte_log_cur_msg_loglevel@DPDK_2.0 16.04 + rte_log_cur_msg_logtype@DPDK_2.0 16.04 + rte_log_dump_history@DPDK_2.0 16.04 + rte_log_set_history@DPDK_2.0 16.04 + rte_logs@DPDK_2.0 16.04 + rte_malloc@DPDK_2.0 16.04 + rte_malloc_dump_stats@DPDK_2.0 16.04 + rte_malloc_get_socket_stats@DPDK_2.0 16.04 + rte_malloc_set_limit@DPDK_2.0 16.04 + rte_malloc_socket@DPDK_2.0 16.04 + rte_malloc_validate@DPDK_2.0 16.04 + rte_malloc_virt2phy@DPDK_2.0 16.04 + rte_mem_lock_page@DPDK_2.0 16.04 + rte_mem_virt2phy@DPDK_2.0 16.04 + rte_memdump@DPDK_2.0 16.04 + rte_memory_get_nchannel@DPDK_2.0 16.04 + rte_memory_get_nrank@DPDK_2.0 16.04 + rte_memzone_dump@DPDK_2.0 16.04 + rte_memzone_free@DPDK_2.1 16.04 + rte_memzone_lookup@DPDK_2.0 16.04 + rte_memzone_reserve@DPDK_2.0 16.04 + rte_memzone_reserve_aligned@DPDK_2.0 16.04 + rte_memzone_reserve_bounded@DPDK_2.0 16.04 + rte_memzone_walk@DPDK_2.0 16.04 + rte_openlog_stream@DPDK_2.0 16.04 + rte_realloc@DPDK_2.0 16.04 + rte_set_application_usage_hook@DPDK_2.0 16.04 + rte_set_log_level@DPDK_2.0 16.04 + rte_set_log_type@DPDK_2.0 16.04 + rte_socket_id@DPDK_2.0 16.04 + rte_strerror@DPDK_2.0 16.04 + rte_strsplit@DPDK_2.0 16.04 + rte_sys_gettid@DPDK_2.0 16.04 + rte_thread_get_affinity@DPDK_2.0 16.04 + rte_thread_set_affinity@DPDK_2.0 16.04 + rte_vlog@DPDK_2.0 16.04 + rte_zmalloc@DPDK_2.0 16.04 + rte_zmalloc_socket@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-hash2.symbols b/debian/libdpdk-librte-hash2.symbols new file mode 100644 index 00000000..0173e0da --- /dev/null +++ b/debian/libdpdk-librte-hash2.symbols @@ -0,0 +1,26 @@ +librte_hash.so.2 libdpdk-librte-hash2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + DPDK_2.2@DPDK_2.2 16.04 + rte_fbk_hash_create@DPDK_2.0 16.04 + rte_fbk_hash_find_existing@DPDK_2.0 16.04 + rte_fbk_hash_free@DPDK_2.0 16.04 + rte_hash_add_key@DPDK_2.0 16.04 + rte_hash_add_key_data@DPDK_2.1 16.04 + rte_hash_add_key_with_hash@DPDK_2.0 16.04 + rte_hash_add_key_with_hash_data@DPDK_2.1 16.04 + rte_hash_create@DPDK_2.0 16.04 + rte_hash_del_key@DPDK_2.0 16.04 + rte_hash_del_key_with_hash@DPDK_2.0 16.04 + rte_hash_find_existing@DPDK_2.0 16.04 + rte_hash_free@DPDK_2.0 16.04 + rte_hash_hash@DPDK_2.0 16.04 + rte_hash_iterate@DPDK_2.1 16.04 + rte_hash_lookup@DPDK_2.0 16.04 + rte_hash_lookup_bulk@DPDK_2.0 16.04 + rte_hash_lookup_bulk_data@DPDK_2.1 16.04 + rte_hash_lookup_data@DPDK_2.1 16.04 + rte_hash_lookup_with_hash@DPDK_2.0 16.04 + rte_hash_lookup_with_hash_data@DPDK_2.1 16.04 + rte_hash_reset@DPDK_2.1 16.04 + rte_hash_set_cmp_func@DPDK_2.2 16.04 diff --git a/debian/libdpdk-librte-ip-frag1.symbols b/debian/libdpdk-librte-ip-frag1.symbols new file mode 100644 index 00000000..503ebdfd --- /dev/null +++ b/debian/libdpdk-librte-ip-frag1.symbols @@ -0,0 +1,9 @@ +librte_ip_frag.so.1 libdpdk-librte-ip-frag1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_ip_frag_free_death_row@DPDK_2.0 16.04 + rte_ip_frag_table_create@DPDK_2.0 16.04 + rte_ip_frag_table_statistics_dump@DPDK_2.0 16.04 + rte_ipv4_frag_reassemble_packet@DPDK_2.0 16.04 + rte_ipv4_fragment_packet@DPDK_2.0 16.04 + rte_ipv6_frag_reassemble_packet@DPDK_2.0 16.04 + rte_ipv6_fragment_packet@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-jobstats1.symbols b/debian/libdpdk-librte-jobstats1.symbols new file mode 100644 index 00000000..af119016 --- /dev/null +++ b/debian/libdpdk-librte-jobstats1.symbols @@ -0,0 +1,17 @@ +librte_jobstats.so.1 libdpdk-librte-jobstats1 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 + DPDK_2.0@DPDK_2.0 16.04 + rte_jobstats_abort@DPDK_16.04 16.04 + rte_jobstats_context_finish@DPDK_2.0 16.04 + rte_jobstats_context_init@DPDK_2.0 16.04 + rte_jobstats_context_reset@DPDK_2.0 16.04 + rte_jobstats_context_start@DPDK_2.0 16.04 + rte_jobstats_finish@DPDK_2.0 16.04 + rte_jobstats_init@DPDK_2.0 16.04 + rte_jobstats_reset@DPDK_2.0 16.04 + rte_jobstats_set_max@DPDK_2.0 16.04 + rte_jobstats_set_min@DPDK_2.0 16.04 + rte_jobstats_set_period@DPDK_2.0 16.04 + rte_jobstats_set_target@DPDK_2.0 16.04 + rte_jobstats_set_update_period_function@DPDK_2.0 16.04 + rte_jobstats_start@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-kni2.symbols b/debian/libdpdk-librte-kni2.symbols new file mode 100644 index 00000000..661595e3 --- /dev/null +++ b/debian/libdpdk-librte-kni2.symbols @@ -0,0 +1,13 @@ +librte_kni.so.2 libdpdk-librte-kni2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_kni_alloc@DPDK_2.0 16.04 + rte_kni_close@DPDK_2.0 16.04 + rte_kni_get@DPDK_2.0 16.04 + rte_kni_get_name@DPDK_2.0 16.04 + rte_kni_handle_request@DPDK_2.0 16.04 + rte_kni_init@DPDK_2.0 16.04 + rte_kni_register_handlers@DPDK_2.0 16.04 + rte_kni_release@DPDK_2.0 16.04 + rte_kni_rx_burst@DPDK_2.0 16.04 + rte_kni_tx_burst@DPDK_2.0 16.04 + rte_kni_unregister_handlers@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-kvargs1.symbols b/debian/libdpdk-librte-kvargs1.symbols new file mode 100644 index 00000000..d61a3168 --- /dev/null +++ b/debian/libdpdk-librte-kvargs1.symbols @@ -0,0 +1,6 @@ +librte_kvargs.so.1 libdpdk-librte-kvargs1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_kvargs_count@DPDK_2.0 16.04 + rte_kvargs_free@DPDK_2.0 16.04 + rte_kvargs_parse@DPDK_2.0 16.04 + rte_kvargs_process@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-lpm2.symbols b/debian/libdpdk-librte-lpm2.symbols new file mode 100644 index 00000000..e87ef64d --- /dev/null +++ b/debian/libdpdk-librte-lpm2.symbols @@ -0,0 +1,27 @@ +librte_lpm.so.2 libdpdk-librte-lpm2 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 + DPDK_2.0@DPDK_2.0 16.04 + rte_lpm6_add@DPDK_2.0 16.04 + rte_lpm6_create@DPDK_2.0 16.04 + rte_lpm6_delete@DPDK_2.0 16.04 + rte_lpm6_delete_all@DPDK_2.0 16.04 + rte_lpm6_delete_bulk_func@DPDK_2.0 16.04 + rte_lpm6_find_existing@DPDK_2.0 16.04 + rte_lpm6_free@DPDK_2.0 16.04 + rte_lpm6_is_rule_present@DPDK_2.0 16.04 + rte_lpm6_lookup@DPDK_2.0 16.04 + rte_lpm6_lookup_bulk_func@DPDK_2.0 16.04 + rte_lpm_add@DPDK_16.04 16.04 + rte_lpm_add@DPDK_2.0 16.04 + rte_lpm_create@DPDK_16.04 16.04 + rte_lpm_create@DPDK_2.0 16.04 + rte_lpm_delete@DPDK_16.04 16.04 + rte_lpm_delete@DPDK_2.0 16.04 + rte_lpm_delete_all@DPDK_16.04 16.04 + rte_lpm_delete_all@DPDK_2.0 16.04 + rte_lpm_find_existing@DPDK_16.04 16.04 + rte_lpm_find_existing@DPDK_2.0 16.04 + rte_lpm_free@DPDK_16.04 16.04 + rte_lpm_free@DPDK_2.0 16.04 + rte_lpm_is_rule_present@DPDK_16.04 16.04 + rte_lpm_is_rule_present@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-mbuf2.symbols b/debian/libdpdk-librte-mbuf2.symbols new file mode 100644 index 00000000..d0e8c450 --- /dev/null +++ b/debian/libdpdk-librte-mbuf2.symbols @@ -0,0 +1,11 @@ +librte_mbuf.so.2 libdpdk-librte-mbuf2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + rte_ctrlmbuf_init@DPDK_2.0 16.04 + rte_get_rx_ol_flag_name@DPDK_2.0 16.04 + rte_get_tx_ol_flag_name@DPDK_2.0 16.04 + rte_mbuf_sanity_check@DPDK_2.0 16.04 + rte_pktmbuf_dump@DPDK_2.0 16.04 + rte_pktmbuf_init@DPDK_2.0 16.04 + rte_pktmbuf_pool_create@DPDK_2.1 16.04 + rte_pktmbuf_pool_init@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-mempool1.symbols b/debian/libdpdk-librte-mempool1.symbols new file mode 100644 index 00000000..024efc42 --- /dev/null +++ b/debian/libdpdk-librte-mempool1.symbols @@ -0,0 +1,15 @@ +librte_mempool.so.1 libdpdk-librte-mempool1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_dom0_mempool_create@DPDK_2.0 16.04 + rte_mempool_audit@DPDK_2.0 16.04 + rte_mempool_calc_obj_size@DPDK_2.0 16.04 + rte_mempool_count@DPDK_2.0 16.04 + rte_mempool_create@DPDK_2.0 16.04 + rte_mempool_dump@DPDK_2.0 16.04 + rte_mempool_list_dump@DPDK_2.0 16.04 + rte_mempool_lookup@DPDK_2.0 16.04 + rte_mempool_obj_iter@DPDK_2.0 16.04 + rte_mempool_walk@DPDK_2.0 16.04 + rte_mempool_xmem_create@DPDK_2.0 16.04 + rte_mempool_xmem_size@DPDK_2.0 16.04 + rte_mempool_xmem_usage@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-meter1.symbols b/debian/libdpdk-librte-meter1.symbols new file mode 100644 index 00000000..adf2cec1 --- /dev/null +++ b/debian/libdpdk-librte-meter1.symbols @@ -0,0 +1,4 @@ +librte_meter.so.1 libdpdk-librte-meter1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_meter_srtcm_config@DPDK_2.0 16.04 + rte_meter_trtcm_config@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pipeline3.symbols b/debian/libdpdk-librte-pipeline3.symbols new file mode 100644 index 00000000..7204deb6 --- /dev/null +++ b/debian/libdpdk-librte-pipeline3.symbols @@ -0,0 +1,28 @@ +librte_pipeline.so.3 libdpdk-librte-pipeline3 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + DPDK_2.2@DPDK_2.2 16.04 + rte_pipeline_ah_packet_drop@DPDK_16.04 16.04 + rte_pipeline_ah_packet_hijack@DPDK_16.04 16.04 + rte_pipeline_check@DPDK_2.0 16.04 + rte_pipeline_create@DPDK_2.0 16.04 + rte_pipeline_flush@DPDK_2.0 16.04 + rte_pipeline_free@DPDK_2.0 16.04 + rte_pipeline_port_in_connect_to_table@DPDK_2.0 16.04 + rte_pipeline_port_in_create@DPDK_2.0 16.04 + rte_pipeline_port_in_disable@DPDK_2.0 16.04 + rte_pipeline_port_in_enable@DPDK_2.0 16.04 + rte_pipeline_port_in_stats_read@DPDK_2.1 16.04 + rte_pipeline_port_out_create@DPDK_2.0 16.04 + rte_pipeline_port_out_packet_insert@DPDK_2.0 16.04 + rte_pipeline_port_out_stats_read@DPDK_2.1 16.04 + rte_pipeline_run@DPDK_2.0 16.04 + rte_pipeline_table_create@DPDK_2.0 16.04 + rte_pipeline_table_default_entry_add@DPDK_2.0 16.04 + rte_pipeline_table_default_entry_delete@DPDK_2.0 16.04 + rte_pipeline_table_entry_add@DPDK_2.0 16.04 + rte_pipeline_table_entry_add_bulk@DPDK_2.2 16.04 + rte_pipeline_table_entry_delete@DPDK_2.0 16.04 + rte_pipeline_table_entry_delete_bulk@DPDK_2.2 16.04 + rte_pipeline_table_stats_read@DPDK_2.1 16.04 diff --git a/debian/libdpdk-librte-pmd-af-packet1.symbols b/debian/libdpdk-librte-pmd-af-packet1.symbols new file mode 100644 index 00000000..d36eb82f --- /dev/null +++ b/debian/libdpdk-librte-pmd-af-packet1.symbols @@ -0,0 +1,2 @@ +librte_pmd_af_packet.so.1 libdpdk-librte-pmd-af-packet1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-bond1.symbols b/debian/libdpdk-librte-pmd-bond1.symbols new file mode 100644 index 00000000..57d525ee --- /dev/null +++ b/debian/libdpdk-librte-pmd-bond1.symbols @@ -0,0 +1,20 @@ +librte_pmd_bond.so.1 libdpdk-librte-pmd-bond1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + rte_eth_bond_8023ad_conf_get@DPDK_2.0 16.04 + rte_eth_bond_8023ad_setup@DPDK_2.0 16.04 + rte_eth_bond_active_slaves_get@DPDK_2.0 16.04 + rte_eth_bond_create@DPDK_2.0 16.04 + rte_eth_bond_free@DPDK_2.1 16.04 + rte_eth_bond_link_monitoring_set@DPDK_2.0 16.04 + rte_eth_bond_mac_address_reset@DPDK_2.0 16.04 + rte_eth_bond_mac_address_set@DPDK_2.0 16.04 + rte_eth_bond_mode_get@DPDK_2.0 16.04 + rte_eth_bond_mode_set@DPDK_2.0 16.04 + rte_eth_bond_primary_get@DPDK_2.0 16.04 + rte_eth_bond_primary_set@DPDK_2.0 16.04 + rte_eth_bond_slave_add@DPDK_2.0 16.04 + rte_eth_bond_slave_remove@DPDK_2.0 16.04 + rte_eth_bond_slaves_get@DPDK_2.0 16.04 + rte_eth_bond_xmit_policy_get@DPDK_2.0 16.04 + rte_eth_bond_xmit_policy_set@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-cxgbe1.symbols b/debian/libdpdk-librte-pmd-cxgbe1.symbols new file mode 100644 index 00000000..0b6059e0 --- /dev/null +++ b/debian/libdpdk-librte-pmd-cxgbe1.symbols @@ -0,0 +1,2 @@ +librte_pmd_cxgbe.so.1 libdpdk-librte-pmd-cxgbe1 #MINVER# + DPDK_2.1@DPDK_2.1 16.04 diff --git a/debian/libdpdk-librte-pmd-e10001.symbols b/debian/libdpdk-librte-pmd-e10001.symbols new file mode 100644 index 00000000..052ee050 --- /dev/null +++ b/debian/libdpdk-librte-pmd-e10001.symbols @@ -0,0 +1,2 @@ +librte_pmd_e1000.so.1 libdpdk-librte-pmd-e10001 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-ena1.symbols b/debian/libdpdk-librte-pmd-ena1.symbols new file mode 100644 index 00000000..3684a586 --- /dev/null +++ b/debian/libdpdk-librte-pmd-ena1.symbols @@ -0,0 +1,2 @@ +librte_pmd_ena.so.1 libdpdk-librte-pmd-ena1 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 diff --git a/debian/libdpdk-librte-pmd-enic1.symbols b/debian/libdpdk-librte-pmd-enic1.symbols new file mode 100644 index 00000000..2c7c2b64 --- /dev/null +++ b/debian/libdpdk-librte-pmd-enic1.symbols @@ -0,0 +1,2 @@ +librte_pmd_enic.so.1 libdpdk-librte-pmd-enic1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-fm10k1.symbols b/debian/libdpdk-librte-pmd-fm10k1.symbols new file mode 100644 index 00000000..5cf6b71f --- /dev/null +++ b/debian/libdpdk-librte-pmd-fm10k1.symbols @@ -0,0 +1,2 @@ +librte_pmd_fm10k.so.1 libdpdk-librte-pmd-fm10k1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-i40e1.symbols b/debian/libdpdk-librte-pmd-i40e1.symbols new file mode 100644 index 00000000..61a933bc --- /dev/null +++ b/debian/libdpdk-librte-pmd-i40e1.symbols @@ -0,0 +1,2 @@ +librte_pmd_i40e.so.1 libdpdk-librte-pmd-i40e1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-ixgbe1.symbols b/debian/libdpdk-librte-pmd-ixgbe1.symbols new file mode 100644 index 00000000..5ee113c9 --- /dev/null +++ b/debian/libdpdk-librte-pmd-ixgbe1.symbols @@ -0,0 +1,2 @@ +librte_pmd_ixgbe.so.1 libdpdk-librte-pmd-ixgbe1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-null-crypto1.symbols b/debian/libdpdk-librte-pmd-null-crypto1.symbols new file mode 100644 index 00000000..487b0f8a --- /dev/null +++ b/debian/libdpdk-librte-pmd-null-crypto1.symbols @@ -0,0 +1,2 @@ +librte_pmd_null_crypto.so.1 libdpdk-librte-pmd-null-crypto1 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 diff --git a/debian/libdpdk-librte-pmd-null1.symbols b/debian/libdpdk-librte-pmd-null1.symbols new file mode 100644 index 00000000..19ffeb64 --- /dev/null +++ b/debian/libdpdk-librte-pmd-null1.symbols @@ -0,0 +1,4 @@ +librte_pmd_null.so.1 libdpdk-librte-pmd-null1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.2@DPDK_2.2 16.04 + eth_dev_null_create@DPDK_2.2 16.04 diff --git a/debian/libdpdk-librte-pmd-pcap1.symbols b/debian/libdpdk-librte-pmd-pcap1.symbols new file mode 100644 index 00000000..4aaa6cd5 --- /dev/null +++ b/debian/libdpdk-librte-pmd-pcap1.symbols @@ -0,0 +1,2 @@ +librte_pmd_pcap.so.1 libdpdk-librte-pmd-pcap1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-ring2.symbols b/debian/libdpdk-librte-pmd-ring2.symbols new file mode 100644 index 00000000..bca62702 --- /dev/null +++ b/debian/libdpdk-librte-pmd-ring2.symbols @@ -0,0 +1,5 @@ +librte_pmd_ring.so.2 libdpdk-librte-pmd-ring2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.2@DPDK_2.2 16.04 + rte_eth_from_ring@DPDK_2.2 16.04 + rte_eth_from_rings@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-vhost1.symbols b/debian/libdpdk-librte-pmd-vhost1.symbols new file mode 100644 index 00000000..3253224d --- /dev/null +++ b/debian/libdpdk-librte-pmd-vhost1.symbols @@ -0,0 +1,6 @@ +librte_pmd_vhost.so.1 libdpdk-librte-pmd-vhost1 #MINVER# + DPDK_16.04@DPDK_16.04 16.04 + rte_eth_vhost_feature_disable@DPDK_16.04 16.04 + rte_eth_vhost_feature_enable@DPDK_16.04 16.04 + rte_eth_vhost_feature_get@DPDK_16.04 16.04 + rte_eth_vhost_get_queue_event@DPDK_16.04 16.04 diff --git a/debian/libdpdk-librte-pmd-virtio1.symbols b/debian/libdpdk-librte-pmd-virtio1.symbols new file mode 100644 index 00000000..41f3e77f --- /dev/null +++ b/debian/libdpdk-librte-pmd-virtio1.symbols @@ -0,0 +1,2 @@ +librte_pmd_virtio.so.1 libdpdk-librte-pmd-virtio1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-vmxnet3-uio1.symbols b/debian/libdpdk-librte-pmd-vmxnet3-uio1.symbols new file mode 100644 index 00000000..4a3fb965 --- /dev/null +++ b/debian/libdpdk-librte-pmd-vmxnet3-uio1.symbols @@ -0,0 +1,2 @@ +librte_pmd_vmxnet3_uio.so.1 libdpdk-librte-pmd-vmxnet3-uio1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-pmd-xenvirt1.symbols b/debian/libdpdk-librte-pmd-xenvirt1.symbols new file mode 100644 index 00000000..76f116e1 --- /dev/null +++ b/debian/libdpdk-librte-pmd-xenvirt1.symbols @@ -0,0 +1,3 @@ +librte_pmd_xenvirt.so.1 libdpdk-librte-pmd-xenvirt1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_mempool_gntalloc_create@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-port2.symbols b/debian/libdpdk-librte-port2.symbols new file mode 100644 index 00000000..c94782a2 --- /dev/null +++ b/debian/libdpdk-librte-port2.symbols @@ -0,0 +1,21 @@ +librte_port.so.2 libdpdk-librte-port2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + DPDK_2.2@DPDK_2.2 16.04 + rte_port_ethdev_reader_ops@DPDK_2.0 16.04 + rte_port_ethdev_writer_nodrop_ops@DPDK_2.1 16.04 + rte_port_ethdev_writer_ops@DPDK_2.0 16.04 + rte_port_ring_multi_reader_ops@DPDK_2.2 16.04 + rte_port_ring_multi_writer_nodrop_ops@DPDK_2.2 16.04 + rte_port_ring_multi_writer_ops@DPDK_2.2 16.04 + rte_port_ring_reader_ipv4_frag_ops@DPDK_2.0 16.04 + rte_port_ring_reader_ipv6_frag_ops@DPDK_2.1 16.04 + rte_port_ring_reader_ops@DPDK_2.0 16.04 + rte_port_ring_writer_ipv4_ras_ops@DPDK_2.0 16.04 + rte_port_ring_writer_ipv6_ras_ops@DPDK_2.1 16.04 + rte_port_ring_writer_nodrop_ops@DPDK_2.1 16.04 + rte_port_ring_writer_ops@DPDK_2.0 16.04 + rte_port_sched_reader_ops@DPDK_2.0 16.04 + rte_port_sched_writer_ops@DPDK_2.0 16.04 + rte_port_sink_ops@DPDK_2.0 16.04 + rte_port_source_ops@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-power1.symbols b/debian/libdpdk-librte-power1.symbols new file mode 100644 index 00000000..22117859 --- /dev/null +++ b/debian/libdpdk-librte-power1.symbols @@ -0,0 +1,14 @@ +librte_power.so.1 libdpdk-librte-power1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_power_exit@DPDK_2.0 16.04 + rte_power_freq_down@DPDK_2.0 16.04 + rte_power_freq_max@DPDK_2.0 16.04 + rte_power_freq_min@DPDK_2.0 16.04 + rte_power_freq_up@DPDK_2.0 16.04 + rte_power_freqs@DPDK_2.0 16.04 + rte_power_get_env@DPDK_2.0 16.04 + rte_power_get_freq@DPDK_2.0 16.04 + rte_power_init@DPDK_2.0 16.04 + rte_power_set_env@DPDK_2.0 16.04 + rte_power_set_freq@DPDK_2.0 16.04 + rte_power_unset_env@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-reorder1.symbols b/debian/libdpdk-librte-reorder1.symbols new file mode 100644 index 00000000..24d5cd2a --- /dev/null +++ b/debian/libdpdk-librte-reorder1.symbols @@ -0,0 +1,9 @@ +librte_reorder.so.1 libdpdk-librte-reorder1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_reorder_create@DPDK_2.0 16.04 + rte_reorder_drain@DPDK_2.0 16.04 + rte_reorder_find_existing@DPDK_2.0 16.04 + rte_reorder_free@DPDK_2.0 16.04 + rte_reorder_init@DPDK_2.0 16.04 + rte_reorder_insert@DPDK_2.0 16.04 + rte_reorder_reset@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-ring1.symbols b/debian/libdpdk-librte-ring1.symbols new file mode 100644 index 00000000..29c8b9e9 --- /dev/null +++ b/debian/libdpdk-librte-ring1.symbols @@ -0,0 +1,11 @@ +librte_ring.so.1 libdpdk-librte-ring1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.2@DPDK_2.2 16.04 + rte_ring_create@DPDK_2.0 16.04 + rte_ring_dump@DPDK_2.0 16.04 + rte_ring_free@DPDK_2.2 16.04 + rte_ring_get_memsize@DPDK_2.0 16.04 + rte_ring_init@DPDK_2.0 16.04 + rte_ring_list_dump@DPDK_2.0 16.04 + rte_ring_lookup@DPDK_2.0 16.04 + rte_ring_set_water_mark@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-sched1.symbols b/debian/libdpdk-librte-sched1.symbols new file mode 100644 index 00000000..100829a6 --- /dev/null +++ b/debian/libdpdk-librte-sched1.symbols @@ -0,0 +1,22 @@ +librte_sched.so.1 libdpdk-librte-sched1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + rte_approx@DPDK_2.0 16.04 + rte_red_config_init@DPDK_2.0 16.04 + rte_red_log2_1_minus_Wq@DPDK_2.0 16.04 + rte_red_pow2_frac_inv@DPDK_2.0 16.04 + rte_red_rand_seed@DPDK_2.0 16.04 + rte_red_rand_val@DPDK_2.0 16.04 + rte_red_rt_data_init@DPDK_2.0 16.04 + rte_sched_pipe_config@DPDK_2.0 16.04 + rte_sched_port_config@DPDK_2.0 16.04 + rte_sched_port_dequeue@DPDK_2.0 16.04 + rte_sched_port_enqueue@DPDK_2.0 16.04 + rte_sched_port_free@DPDK_2.0 16.04 + rte_sched_port_get_memory_footprint@DPDK_2.0 16.04 + rte_sched_port_pkt_read_color@DPDK_2.1 16.04 + rte_sched_port_pkt_read_tree_path@DPDK_2.1 16.04 + rte_sched_port_pkt_write@DPDK_2.1 16.04 + rte_sched_queue_read_stats@DPDK_2.0 16.04 + rte_sched_subport_config@DPDK_2.0 16.04 + rte_sched_subport_read_stats@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-table2.symbols b/debian/libdpdk-librte-table2.symbols new file mode 100644 index 00000000..89dc550d --- /dev/null +++ b/debian/libdpdk-librte-table2.symbols @@ -0,0 +1,19 @@ +librte_table.so.2 libdpdk-librte-table2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.2@DPDK_2.2 16.04 + rte_table_acl_ops@DPDK_2.0 16.04 + rte_table_array_ops@DPDK_2.0 16.04 + rte_table_hash_ext_ops@DPDK_2.0 16.04 + rte_table_hash_key16_ext_dosig_ops@DPDK_2.2 16.04 + rte_table_hash_key16_ext_ops@DPDK_2.0 16.04 + rte_table_hash_key16_lru_ops@DPDK_2.0 16.04 + rte_table_hash_key32_ext_ops@DPDK_2.0 16.04 + rte_table_hash_key32_lru_ops@DPDK_2.0 16.04 + rte_table_hash_key8_ext_dosig_ops@DPDK_2.0 16.04 + rte_table_hash_key8_ext_ops@DPDK_2.0 16.04 + rte_table_hash_key8_lru_dosig_ops@DPDK_2.0 16.04 + rte_table_hash_key8_lru_ops@DPDK_2.0 16.04 + rte_table_hash_lru_ops@DPDK_2.0 16.04 + rte_table_lpm_ipv6_ops@DPDK_2.0 16.04 + rte_table_lpm_ops@DPDK_2.0 16.04 + rte_table_stub_ops@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-timer1.symbols b/debian/libdpdk-librte-timer1.symbols new file mode 100644 index 00000000..9e82b0e7 --- /dev/null +++ b/debian/libdpdk-librte-timer1.symbols @@ -0,0 +1,11 @@ +librte_timer.so.1 libdpdk-librte-timer1 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + rte_timer_dump_stats@DPDK_2.0 16.04 + rte_timer_init@DPDK_2.0 16.04 + rte_timer_manage@DPDK_2.0 16.04 + rte_timer_pending@DPDK_2.0 16.04 + rte_timer_reset@DPDK_2.0 16.04 + rte_timer_reset_sync@DPDK_2.0 16.04 + rte_timer_stop@DPDK_2.0 16.04 + rte_timer_stop_sync@DPDK_2.0 16.04 + rte_timer_subsystem_init@DPDK_2.0 16.04 diff --git a/debian/libdpdk-librte-vhost2.symbols b/debian/libdpdk-librte-vhost2.symbols new file mode 100644 index 00000000..e9382717 --- /dev/null +++ b/debian/libdpdk-librte-vhost2.symbols @@ -0,0 +1,13 @@ +librte_vhost.so.2 libdpdk-librte-vhost2 #MINVER# + DPDK_2.0@DPDK_2.0 16.04 + DPDK_2.1@DPDK_2.1 16.04 + rte_vhost_dequeue_burst@DPDK_2.0 16.04 + rte_vhost_driver_callback_register@DPDK_2.0 16.04 + rte_vhost_driver_register@DPDK_2.0 16.04 + rte_vhost_driver_session_start@DPDK_2.0 16.04 + rte_vhost_driver_unregister@DPDK_2.1 16.04 + rte_vhost_enable_guest_notification@DPDK_2.0 16.04 + rte_vhost_enqueue_burst@DPDK_2.0 16.04 + rte_vhost_feature_disable@DPDK_2.0 16.04 + rte_vhost_feature_enable@DPDK_2.0 16.04 + rte_vhost_feature_get@DPDK_2.0 16.04 diff --git a/debian/libdpdk0.dirs b/debian/libdpdk0.dirs new file mode 100644 index 00000000..68457717 --- /dev/null +++ b/debian/libdpdk0.dirs @@ -0,0 +1 @@ +usr/lib diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000..baab84f9 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,12 @@ +ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch +ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch +ubuntu-fix-vhost-user-socket-permission.patch +ubuntu-backport-39-lpm-fix-freeing-in-compatibility-mode.patch +ubuntu-fix-xenvirt-support-dynamic-page-size.patch +ubuntu-backport-40-linking-fixes-stage-1-4.patch +ubuntu-backport-40-linking-fixes-stage-2-4.patch +ubuntu-backport-40-linking-fixes-stage-3-4.patch +ubuntu-backport-40-linking-fixes-stage-4-4.patch +ubuntu-backport-41-fix-install-tar-1.29.patch +ubuntu-backport-42-increase-default-logging-level.patch +ubuntu-backport-43-fix-level-type-retrieving.patch diff --git a/debian/patches/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch b/debian/patches/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch new file mode 100644 index 00000000..ea1ff75b --- /dev/null +++ b/debian/patches/ubuntu-backport-33-vhost-user-add-error-handling-for-fd-1023.patch @@ -0,0 +1,141 @@ +Description: backport of dpdk fix for LP: #1566874 + +Forwarded: n/a (already discussed upstream) +Author: Christian Ehrhardt +Last-Update: 2016-04-11 + +Extended by Christian Ehrhardt +Close fd on vserver->listenfd (Part of the upstream discussion) + +Original: +From: Patrik Andersson + +Protect against DPDK crash when allocation of listen fd >= 1023. +For events on fd:s >1023, the current implementation will trigger +an abort due to access outside of allocated bit mask. + +Corrections would include: + + * Match fdset_add() signature in fd_man.c to fd_man.h + * Handling of return codes from fdset_add() + * Addition of check of fd number in fdset_add_fd() + +The rationale behind the suggested code change is that, +fdset_event_dispatch() could attempt access outside of the FD_SET +bitmask if there is an event on a file descriptor that in turn +looks up a virtio file descriptor with a value > 1023. +Such an attempt will lead to an abort() and a restart of any +vswitch using DPDK. + +A discussion topic exist in the ovs-discuss mailing list that can +provide a little more background: + +http://openvswitch.org/pipermail/discuss/2016-February/020243.html + +Signed-off-by: Patrik Andersson +--- + fd_man.c | 11 ++++++----- + vhost-net-user.c | 23 +++++++++++++++++++++-- + 2 files changed, 27 insertions(+), 7 deletions(-) + +Index: dpdk/lib/librte_vhost/vhost_user/fd_man.c +=================================================================== +--- dpdk.orig/lib/librte_vhost/vhost_user/fd_man.c ++++ dpdk/lib/librte_vhost/vhost_user/fd_man.c +@@ -71,20 +71,22 @@ fdset_find_free_slot(struct fdset *pfdse + return fdset_find_fd(pfdset, -1); + } + +-static void ++static int + fdset_add_fd(struct fdset *pfdset, int idx, int fd, + fd_cb rcb, fd_cb wcb, void *dat) + { + struct fdentry *pfdentry; + +- if (pfdset == NULL || idx >= MAX_FDS) +- return; ++ if (pfdset == NULL || idx >= MAX_FDS || fd >= FD_SETSIZE) ++ return -1; + + pfdentry = &pfdset->fd[idx]; + pfdentry->fd = fd; + pfdentry->rcb = rcb; + pfdentry->wcb = wcb; + pfdentry->dat = dat; ++ ++ return 0; + } + + /** +@@ -150,12 +152,11 @@ fdset_add(struct fdset *pfdset, int fd, + + /* Find a free slot in the list. */ + i = fdset_find_free_slot(pfdset); +- if (i == -1) { ++ if (i == -1 || fdset_add_fd(pfdset, i, fd, rcb, wcb, dat) < 0) { + pthread_mutex_unlock(&pfdset->fd_mutex); + return -2; + } + +- fdset_add_fd(pfdset, i, fd, rcb, wcb, dat); + pfdset->num++; + + pthread_mutex_unlock(&pfdset->fd_mutex); +Index: dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c +=================================================================== +--- dpdk.orig/lib/librte_vhost/vhost_user/vhost-net-user.c ++++ dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c +@@ -288,6 +288,7 @@ vserver_new_vq_conn(int fd, void *dat, _ + int fh; + struct vhost_device_ctx vdev_ctx = { (pid_t)0, 0 }; + unsigned int size; ++ int ret; + + conn_fd = accept(fd, NULL, NULL); + RTE_LOG(INFO, VHOST_CONFIG, +@@ -317,8 +318,15 @@ vserver_new_vq_conn(int fd, void *dat, _ + + ctx->vserver = vserver; + ctx->fh = fh; +- fdset_add(&g_vhost_server.fdset, ++ ret = fdset_add(&g_vhost_server.fdset, + conn_fd, vserver_message_handler, NULL, ctx); ++ if (ret < 0) { ++ free(ctx); ++ close(conn_fd); ++ RTE_LOG(ERR, VHOST_CONFIG, ++ "failed to add fd %d into vhost server fdset\n", ++ conn_fd); ++ } + } + + /* callback when there is message on the connfd */ +@@ -453,6 +461,7 @@ int + rte_vhost_driver_register(const char *path) + { + struct vhost_server *vserver; ++ int ret; + + pthread_mutex_lock(&g_vhost_server.server_mutex); + +@@ -478,8 +487,18 @@ rte_vhost_driver_register(const char *pa + + vserver->path = strdup(path); + +- fdset_add(&g_vhost_server.fdset, vserver->listenfd, ++ ret = fdset_add(&g_vhost_server.fdset, vserver->listenfd, + vserver_new_vq_conn, NULL, vserver); ++ if (ret < 0) { ++ pthread_mutex_unlock(&g_vhost_server.server_mutex); ++ RTE_LOG(ERR, VHOST_CONFIG, ++ "failed to add listen fd %d to vhost server fdset\n", ++ vserver->listenfd); ++ close(vserver->listenfd); ++ free(vserver->path); ++ free(vserver); ++ return -1; ++ } + + g_vhost_server.server[g_vhost_server.vserver_cnt++] = vserver; + pthread_mutex_unlock(&g_vhost_server.server_mutex); diff --git a/debian/patches/ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch b/debian/patches/ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch new file mode 100644 index 00000000..b756d8ff --- /dev/null +++ b/debian/patches/ubuntu-backport-38-dpdk-dev-Memory-leak-when-adding-removing-vhost_user-ports.patch @@ -0,0 +1,63 @@ +Description: backport of dpdk 16.07 fix for LP: #1570466 + +Backported from this discussion +http://dpdk.org/dev/patchwork/patch/12103/ +Not accepted yet, but likely to be accepted in some form once tested and +confirmed. + +Update 2016-05-17: +Moving to 16.04 this now applies as-is without modifications, dropping the +former backport changes. + +Also along the discussion vserver-fh is now initialized with -1 to avoid +accidentially deleting the first connected port if we delete another not yet +connected port. + +Forwarded: yes (based on an upstream discussion) +Author: Christian Ehrhardt +Last-Update: 2016-05-17 + +Index: dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c +=================================================================== +--- dpdk.orig/lib/librte_vhost/vhost_user/vhost-net-user.c ++++ dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c +@@ -310,6 +310,7 @@ vserver_new_vq_conn(int fd, void *dat, _ + } + + vdev_ctx.fh = fh; ++ vserver->fh = fh; + size = strnlen(vserver->path, PATH_MAX); + vhost_set_ifname(vdev_ctx, vserver->path, + size); +@@ -486,6 +487,7 @@ rte_vhost_driver_register(const char *pa + } + + vserver->path = strdup(path); ++ vserver->fh = -1; + + ret = fdset_add(&g_vhost_server.fdset, vserver->listenfd, + vserver_new_vq_conn, NULL, vserver); +@@ -520,6 +522,11 @@ rte_vhost_driver_unregister(const char * + + for (i = 0; i < g_vhost_server.vserver_cnt; i++) { + if (!strcmp(g_vhost_server.server[i]->path, path)) { ++ struct vhost_device_ctx ctx; ++ ++ ctx.fh = g_vhost_server.server[i]->fh; ++ vhost_destroy_device(ctx); ++ + fdset_del(&g_vhost_server.fdset, + g_vhost_server.server[i]->listenfd); + +Index: dpdk/lib/librte_vhost/vhost_user/vhost-net-user.h +=================================================================== +--- dpdk.orig/lib/librte_vhost/vhost_user/vhost-net-user.h ++++ dpdk/lib/librte_vhost/vhost_user/vhost-net-user.h +@@ -43,6 +43,7 @@ + struct vhost_server { + char *path; /**< The path the uds is bind to. */ + int listenfd; /**< The listener sockfd. */ ++ uint32_t fh; + }; + + /* refer to hw/virtio/vhost-user.c */ diff --git a/debian/patches/ubuntu-backport-39-lpm-fix-freeing-in-compatibility-mode.patch b/debian/patches/ubuntu-backport-39-lpm-fix-freeing-in-compatibility-mode.patch new file mode 100644 index 00000000..4224cad8 --- /dev/null +++ b/debian/patches/ubuntu-backport-39-lpm-fix-freeing-in-compatibility-mode.patch @@ -0,0 +1,52 @@ +Description: backport of dpdk 16.07 fix 7cc3f2c2 + +Author: Christian Ehrhardt +Date: Tue Apr 12 15:49:27 2016 +0200 + + lpm: fix freeing in compatibility mode + + Back then when we fixed the missing free lpm I was to quickly to say yes + if it applies not only to the lpm6 but also to all of the lpm code. + + It turned out to not apply to all of them. In rte_lpm_create_v20 there + is an unexpected fused allocation: + mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules); + [...] + lpm = (struct rte_lpm_v20 *)rte_zmalloc_socket(mem_name,mem_size, + RTE_CACHE_LINE_SIZE, socket_id); + + That causes lpm->rules_tbl not to have an own struct malloc_elem that + can be derived via RTE_PTR_SUB(data, MALLOC_ELEM_HEADER_LEN) in + malloc_elem_from_data. + Due to that the rte_lpm_free_v20 accidentially misderives the elem and + assumes it is ELEM_FREE triggering in malloc_elem_free + if (!malloc_elem_cookies_ok(elem) || elem->state != + return -1; + + While it seems counter-intuitive the way to properly remove rules_tbl in + the old fused allocation style of rte_lpm_free_v20 is to not remove it. + + The newer rte_lpm_free_v1604 is safe because in rte_lpm_create_v1604 + rules_tbl is a separate allocation. + + Fixes: d4c18f0a1d5d ("lpm: fix missing free") + + Signed-off-by: Christian Ehrhardt + Acked-by: Olivier Matz + +Forwarded: yes (in DPDK 16.07) +Author: Christian Ehrhardt +Last-Update: 2016-05-17 + +Index: dpdk/lib/librte_lpm/rte_lpm.c +=================================================================== +--- dpdk.orig/lib/librte_lpm/rte_lpm.c ++++ dpdk/lib/librte_lpm/rte_lpm.c +@@ -373,7 +373,6 @@ rte_lpm_free_v20(struct rte_lpm_v20 *lpm + + rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK); + +- rte_free(lpm->rules_tbl); + rte_free(lpm); + rte_free(te); + } diff --git a/debian/patches/ubuntu-backport-40-linking-fixes-stage-1-4.patch b/debian/patches/ubuntu-backport-40-linking-fixes-stage-1-4.patch new file mode 100644 index 00000000..5336cd49 --- /dev/null +++ b/debian/patches/ubuntu-backport-40-linking-fixes-stage-1-4.patch @@ -0,0 +1,101 @@ +Description: backport of dpdk 16.07 fix for library underlinking - stage 1/4 + +This is a merge of related upstream fixes: +- c6417ce6: mk: add build-time library directory to linker path +- aace9d0b: mk: cleanup leftover references to malloc library +- bf5a46fa: mk: generate internal library dependencies + +Forwarded: yes (in DPDK 16.07) +Author: Christian Ehrhardt +Last-Update: 2016-06-14 + +Index: dpdk/drivers/net/cxgbe/Makefile +=================================================================== +--- dpdk.orig/drivers/net/cxgbe/Makefile ++++ dpdk/drivers/net/cxgbe/Makefile +@@ -82,6 +82,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += t + # this lib depends upon: + DEPDIRS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += lib/librte_eal lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += lib/librte_mempool lib/librte_mbuf +-DEPDIRS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += lib/librte_net lib/librte_malloc ++DEPDIRS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += lib/librte_net + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/drivers/net/ena/Makefile +=================================================================== +--- dpdk.orig/drivers/net/ena/Makefile ++++ dpdk/drivers/net/ena/Makefile +@@ -54,7 +54,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += ena + # this lib depends upon: + DEPDIRS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += lib/librte_eal lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += lib/librte_mempool lib/librte_mbuf +-DEPDIRS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += lib/librte_net lib/librte_malloc ++DEPDIRS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += lib/librte_net + + CFLAGS += $(INCLUDES) + +Index: dpdk/drivers/net/mpipe/Makefile +=================================================================== +--- dpdk.orig/drivers/net/mpipe/Makefile ++++ dpdk/drivers/net/mpipe/Makefile +@@ -42,6 +42,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += m + + DEPDIRS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += lib/librte_eal lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += lib/librte_mempool lib/librte_mbuf +-DEPDIRS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += lib/librte_net lib/librte_malloc ++DEPDIRS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += lib/librte_net + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/drivers/net/nfp/Makefile +=================================================================== +--- dpdk.orig/drivers/net/nfp/Makefile ++++ dpdk/drivers/net/nfp/Makefile +@@ -53,6 +53,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += nfp + # this lib depends upon: + DEPDIRS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += lib/librte_eal lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += lib/librte_mempool lib/librte_mbuf +-DEPDIRS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += lib/librte_net lib/librte_malloc ++DEPDIRS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += lib/librte_net + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/drivers/net/szedata2/Makefile +=================================================================== +--- dpdk.orig/drivers/net/szedata2/Makefile ++++ dpdk/drivers/net/szedata2/Makefile +@@ -57,7 +57,6 @@ SYMLINK-y-include += + # this lib depends upon: + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += lib/librte_mbuf + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += lib/librte_ether +-DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += lib/librte_malloc + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += lib/librte_kvargs + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/mk/rte.lib.mk +=================================================================== +--- dpdk.orig/mk/rte.lib.mk ++++ dpdk/mk/rte.lib.mk +@@ -77,6 +77,13 @@ else + _CPU_LDFLAGS := $(CPU_LDFLAGS) + endif + ++# Translate DEPDIRS-y into LDLIBS ++# Ignore (sub)directory dependencies which do not provide an actual library ++_IGNORE_DIRS = lib/librte_eal/% lib/librte_net lib/librte_compat ++_DEPDIRS = $(filter-out $(_IGNORE_DIRS),$(DEPDIRS-y)) ++_LDDIRS = $(subst librte_ether,libethdev,$(_DEPDIRS)) ++LDLIBS += $(subst lib/lib,-l,$(_LDDIRS)) ++ + O_TO_A = $(AR) crDs $(LIB) $(OBJS-y) + O_TO_A_STR = $(subst ','\'',$(O_TO_A)) #'# fix syntax highlight + O_TO_A_DISP = $(if $(V),"$(O_TO_A_STR)"," AR $(@)") +@@ -86,8 +93,8 @@ O_TO_A_DO = @set -e; \ + $(O_TO_A) && \ + echo $(O_TO_A_CMD) > $(call exe2cmd,$(@)) + +-O_TO_S = $(LD) $(_CPU_LDFLAGS) $(EXTRA_LDFLAGS) -shared $(OBJS-y) $(LDLIBS) \ +- -Wl,-soname,$(LIB) -o $(LIB) ++O_TO_S = $(LD) -L$(RTE_OUTPUT)/lib $(_CPU_LDFLAGS) $(EXTRA_LDFLAGS) \ ++ -shared $(OBJS-y) $(LDLIBS) -Wl,-soname,$(LIB) -o $(LIB) + O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight + O_TO_S_DISP = $(if $(V),"$(O_TO_S_STR)"," LD $(@)") + O_TO_S_DO = @set -e; \ diff --git a/debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch b/debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch new file mode 100644 index 00000000..30ca0d50 --- /dev/null +++ b/debian/patches/ubuntu-backport-40-linking-fixes-stage-2-4.patch @@ -0,0 +1,556 @@ +Description: backport of dpdk 16.07 fix for library underlinking - stage 2/4 + +This is a merge of related upstream fixes: +- a3f34a98 log: deprecate history dump +- 3037e5e2 eal: remove useless includes of mempool and ring + +Forwarded: yes (in DPDK 16.07) +Author: Christian Ehrhardt +Last-Update: 2016-06-14 + +Index: dpdk/app/test-pmd/cmdline.c +=================================================================== +--- dpdk.orig/app/test-pmd/cmdline.c ++++ dpdk/app/test-pmd/cmdline.c +@@ -7191,8 +7191,6 @@ static void cmd_dump_parsed(void *parsed + rte_dump_physmem_layout(stdout); + else if (!strcmp(res->dump, "dump_memzone")) + rte_memzone_dump(stdout); +- else if (!strcmp(res->dump, "dump_log_history")) +- rte_log_dump_history(stdout); + else if (!strcmp(res->dump, "dump_struct_sizes")) + dump_struct_sizes(); + else if (!strcmp(res->dump, "dump_ring")) +@@ -7207,7 +7205,6 @@ cmdline_parse_token_string_t cmd_dump_du + TOKEN_STRING_INITIALIZER(struct cmd_dump_result, dump, + "dump_physmem#" + "dump_memzone#" +- "dump_log_history#" + "dump_struct_sizes#" + "dump_ring#" + "dump_mempool#" +Index: dpdk/app/test/autotest_data.py +=================================================================== +--- dpdk.orig/app/test/autotest_data.py ++++ dpdk/app/test/autotest_data.py +@@ -88,12 +88,6 @@ parallel_test_group_list = [ + "Report" : None, + }, + { +- "Name" : "Dump log history", +- "Command" : "dump_log_history", +- "Func" : dump_autotest, +- "Report" : None, +- }, +- { + "Name" : "Dump rings", + "Command" : "dump_ring", + "Func" : dump_autotest, +Index: dpdk/app/test/autotest_test_funcs.py +=================================================================== +--- dpdk.orig/app/test/autotest_test_funcs.py ++++ dpdk/app/test/autotest_test_funcs.py +@@ -151,12 +151,6 @@ def logs_autotest(child, test_name): + "TESTAPP2: this is a info level message", + "TESTAPP2: this is a warning level message", + "TESTAPP1: this is a debug level message", +- "TESTAPP1: this is a debug level message", +- "TESTAPP1: this is a info level message", +- "TESTAPP1: this is a warning level message", +- "TESTAPP2: this is a info level message", +- "TESTAPP2: this is a warning level message", +- "TESTAPP1: this is a debug level message", + ] + + for log_msg in log_list: +Index: dpdk/app/test/commands.c +=================================================================== +--- dpdk.orig/app/test/commands.c ++++ dpdk/app/test/commands.c +@@ -150,8 +150,6 @@ static void cmd_dump_parsed(void *parsed + rte_dump_physmem_layout(stdout); + else if (!strcmp(res->dump, "dump_memzone")) + rte_memzone_dump(stdout); +- else if (!strcmp(res->dump, "dump_log_history")) +- rte_log_dump_history(stdout); + else if (!strcmp(res->dump, "dump_struct_sizes")) + dump_struct_sizes(); + else if (!strcmp(res->dump, "dump_ring")) +@@ -164,7 +162,7 @@ static void cmd_dump_parsed(void *parsed + + cmdline_parse_token_string_t cmd_dump_dump = + TOKEN_STRING_INITIALIZER(struct cmd_dump_result, dump, +- "dump_physmem#dump_memzone#dump_log_history#" ++ "dump_physmem#dump_memzone#" + "dump_struct_sizes#dump_ring#dump_mempool#" + "dump_devargs"); + +Index: dpdk/app/test/test_logs.c +=================================================================== +--- dpdk.orig/app/test/test_logs.c ++++ dpdk/app/test/test_logs.c +@@ -85,8 +85,6 @@ test_logs(void) + RTE_LOG(DEBUG, TESTAPP1, "this is a debug level message\n"); + RTE_LOG(DEBUG, TESTAPP2, "debug level message (not displayed)\n"); + +- rte_log_dump_history(stdout); +- + return 0; + } + +Index: dpdk/doc/guides/prog_guide/mempool_lib.rst +=================================================================== +--- dpdk.orig/doc/guides/prog_guide/mempool_lib.rst ++++ dpdk/doc/guides/prog_guide/mempool_lib.rst +@@ -38,9 +38,7 @@ In the DPDK, it is identified by name an + It provides some other optional services such as a per-core object cache and + an alignment helper to ensure that objects are padded to spread them equally on all DRAM or DDR3 channels. + +-This library is used by the +-:ref:`Mbuf Library ` and the +-:ref:`Environment Abstraction Layer ` (for logging history). ++This library is used by the :ref:`Mbuf Library `. + + Cookies + ------- +Index: dpdk/doc/guides/rel_notes/deprecation.rst +=================================================================== +--- dpdk.orig/doc/guides/rel_notes/deprecation.rst ++++ dpdk/doc/guides/rel_notes/deprecation.rst +@@ -8,6 +8,9 @@ API and ABI deprecation notices are to b + Deprecation Notices + ------------------- + ++* The log history is deprecated. ++ It is voided in 16.07 and will be removed in release 16.11. ++ + * The ethdev hotplug API is going to be moved to EAL with a notification + mechanism added to crypto and ethdev libraries so that hotplug is now + available to both of them. This API will be stripped of the device arguments +Index: dpdk/lib/librte_eal/bsdapp/eal/Makefile +=================================================================== +--- dpdk.orig/lib/librte_eal/bsdapp/eal/Makefile ++++ dpdk/lib/librte_eal/bsdapp/eal/Makefile +@@ -40,8 +40,6 @@ VPATH += $(RTE_SDK)/lib/librte_eal/commo + CFLAGS += -I$(SRCDIR)/include + CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common + CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include +-CFLAGS += -I$(RTE_SDK)/lib/librte_ring +-CFLAGS += -I$(RTE_SDK)/lib/librte_mempool + CFLAGS += $(WERROR_FLAGS) -O3 + + LDLIBS += -lexecinfo +Index: dpdk/lib/librte_eal/bsdapp/eal/eal_debug.c +=================================================================== +--- dpdk.orig/lib/librte_eal/bsdapp/eal/eal_debug.c ++++ dpdk/lib/librte_eal/bsdapp/eal/eal_debug.c +@@ -77,9 +77,6 @@ void __rte_panic(const char *funcname, c + { + va_list ap; + +- /* disable history */ +- rte_log_set_history(0); +- + rte_log(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, "PANIC in %s():\n", funcname); + va_start(ap, format); + rte_vlog(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, format, ap); +@@ -98,9 +95,6 @@ rte_exit(int exit_code, const char *form + { + va_list ap; + +- /* disable history */ +- rte_log_set_history(0); +- + if (exit_code != 0) + RTE_LOG(CRIT, EAL, "Error - exiting with code: %d\n" + " Cause: ", exit_code); +Index: dpdk/lib/librte_eal/common/eal_common_log.c +=================================================================== +--- dpdk.orig/lib/librte_eal/common/eal_common_log.c ++++ dpdk/lib/librte_eal/common/eal_common_log.c +@@ -31,54 +31,16 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +-#include + #include + #include + #include +-#include + #include +-#include +-#include +-#include +-#include + + #include +-#include +-#include +-#include +-#include +-#include +-#include + #include +-#include +-#include +-#include +-#include +-#include +-#include +-#include + + #include "eal_private.h" + +-#define LOG_ELT_SIZE 2048 +- +-#define LOG_HISTORY_MP_NAME "log_history" +- +-STAILQ_HEAD(log_history_list, log_history); +- +-/** +- * The structure of a message log in the log history. +- */ +-struct log_history { +- STAILQ_ENTRY(log_history) next; +- unsigned size; +- char buf[0]; +-}; +- +-static struct rte_mempool *log_history_mp = NULL; +-static unsigned log_history_size = 0; +-static struct log_history_list log_history; +- + /* global log structure */ + struct rte_logs rte_logs = { + .type = ~0, +@@ -86,10 +48,7 @@ struct rte_logs rte_logs = { + .file = NULL, + }; + +-static rte_spinlock_t log_dump_lock = RTE_SPINLOCK_INITIALIZER; +-static rte_spinlock_t log_list_lock = RTE_SPINLOCK_INITIALIZER; + static FILE *default_log_stream; +-static int history_enabled = 1; + + /** + * This global structure stores some informations about the message +@@ -105,59 +64,16 @@ static struct log_cur_msg log_cur_msg[RT + /* default logs */ + + int +-rte_log_add_in_history(const char *buf, size_t size) ++rte_log_add_in_history(const char *buf __rte_unused, size_t size __rte_unused) + { +- struct log_history *hist_buf = NULL; +- static const unsigned hist_buf_size = LOG_ELT_SIZE - sizeof(*hist_buf); +- void *obj; +- +- if (history_enabled == 0) +- return 0; +- +- rte_spinlock_lock(&log_list_lock); +- +- /* get a buffer for adding in history */ +- if (log_history_size > RTE_LOG_HISTORY) { +- hist_buf = STAILQ_FIRST(&log_history); +- if (hist_buf) { +- STAILQ_REMOVE_HEAD(&log_history, next); +- log_history_size--; +- } +- } +- else { +- if (rte_mempool_mc_get(log_history_mp, &obj) < 0) +- obj = NULL; +- hist_buf = obj; +- } +- +- /* no buffer */ +- if (hist_buf == NULL) { +- rte_spinlock_unlock(&log_list_lock); +- return -ENOBUFS; +- } +- +- /* not enough room for msg, buffer go back in mempool */ +- if (size >= hist_buf_size) { +- rte_mempool_mp_put(log_history_mp, hist_buf); +- rte_spinlock_unlock(&log_list_lock); +- return -ENOBUFS; +- } +- +- /* add in history */ +- memcpy(hist_buf->buf, buf, size); +- hist_buf->buf[size] = hist_buf->buf[hist_buf_size-1] = '\0'; +- hist_buf->size = size; +- STAILQ_INSERT_TAIL(&log_history, hist_buf, next); +- log_history_size++; +- rte_spinlock_unlock(&log_list_lock); +- + return 0; + } + + void + rte_log_set_history(int enable) + { +- history_enabled = enable; ++ if (enable) ++ RTE_LOG(WARNING, EAL, "The log history is deprecated.\n"); + } + + /* Change the stream that will be used by logging system */ +@@ -224,44 +140,8 @@ int rte_log_cur_msg_logtype(void) + + /* Dump log history to file */ + void +-rte_log_dump_history(FILE *out) ++rte_log_dump_history(FILE *out __rte_unused) + { +- struct log_history_list tmp_log_history; +- struct log_history *hist_buf; +- unsigned i; +- +- /* only one dump at a time */ +- rte_spinlock_lock(&log_dump_lock); +- +- /* save list, and re-init to allow logging during dump */ +- rte_spinlock_lock(&log_list_lock); +- tmp_log_history = log_history; +- STAILQ_INIT(&log_history); +- log_history_size = 0; +- rte_spinlock_unlock(&log_list_lock); +- +- for (i=0; ibuf, hist_buf->size, 1, out) == 0) { +- rte_mempool_mp_put(log_history_mp, hist_buf); +- break; +- } +- +- /* put back message structure in pool */ +- rte_mempool_mp_put(log_history_mp, hist_buf); +- } +- fflush(out); +- +- rte_spinlock_unlock(&log_dump_lock); + } + + /* +@@ -308,29 +188,11 @@ rte_log(uint32_t level, uint32_t logtype + } + + /* +- * called by environment-specific log init function to initialize log +- * history ++ * called by environment-specific log init function + */ + int + rte_eal_common_log_init(FILE *default_log) + { +- STAILQ_INIT(&log_history); +- +- /* reserve RTE_LOG_HISTORY*2 elements, so we can dump and +- * keep logging during this time */ +- log_history_mp = rte_mempool_create(LOG_HISTORY_MP_NAME, RTE_LOG_HISTORY*2, +- LOG_ELT_SIZE, 0, 0, +- NULL, NULL, +- NULL, NULL, +- SOCKET_ID_ANY, 0); +- +- if ((log_history_mp == NULL) && +- ((log_history_mp = rte_mempool_lookup(LOG_HISTORY_MP_NAME)) == NULL)){ +- RTE_LOG(ERR, EAL, "%s(): cannot create log_history mempool\n", +- __func__); +- return -1; +- } +- + default_log_stream = default_log; + rte_openlog_stream(default_log); + return 0; +Index: dpdk/lib/librte_eal/common/eal_private.h +=================================================================== +--- dpdk.orig/lib/librte_eal/common/eal_private.h ++++ dpdk/lib/librte_eal/common/eal_private.h +@@ -49,9 +49,6 @@ int rte_eal_memzone_init(void); + /** + * Common log initialization function (private to eal). + * +- * Called by environment-specific log initialization function to initialize +- * log history. +- * + * @param default_log + * The default log stream to be used. + * @return +Index: dpdk/lib/librte_eal/common/include/rte_log.h +=================================================================== +--- dpdk.orig/lib/librte_eal/common/include/rte_log.h ++++ dpdk/lib/librte_eal/common/include/rte_log.h +@@ -42,6 +42,8 @@ + * This file provides a log API to RTE applications. + */ + ++#include "rte_common.h" /* for __rte_deprecated macro */ ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -179,22 +181,27 @@ int rte_log_cur_msg_loglevel(void); + int rte_log_cur_msg_logtype(void); + + /** ++ * @deprecated + * Enable or disable the history (enabled by default) + * + * @param enable + * true to enable, or 0 to disable history. + */ ++__rte_deprecated + void rte_log_set_history(int enable); + + /** ++ * @deprecated + * Dump the log history to a file + * + * @param f + * A pointer to a file for output + */ ++__rte_deprecated + void rte_log_dump_history(FILE *f); + + /** ++ * @deprecated + * Add a log message to the history. + * + * This function can be called from a user-defined log stream. It adds +@@ -209,6 +216,7 @@ void rte_log_dump_history(FILE *f); + * - 0: Success. + * - (-ENOBUFS) if there is no room to store the message. + */ ++__rte_deprecated + int rte_log_add_in_history(const char *buf, size_t size); + + /** +Index: dpdk/lib/librte_eal/linuxapp/eal/eal_debug.c +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_debug.c ++++ dpdk/lib/librte_eal/linuxapp/eal/eal_debug.c +@@ -77,9 +77,6 @@ void __rte_panic(const char *funcname, c + { + va_list ap; + +- /* disable history */ +- rte_log_set_history(0); +- + rte_log(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, "PANIC in %s():\n", funcname); + va_start(ap, format); + rte_vlog(RTE_LOG_CRIT, RTE_LOGTYPE_EAL, format, ap); +@@ -98,9 +95,6 @@ rte_exit(int exit_code, const char *form + { + va_list ap; + +- /* disable history */ +- rte_log_set_history(0); +- + if (exit_code != 0) + RTE_LOG(CRIT, EAL, "Error - exiting with code: %d\n" + " Cause: ", exit_code); +Index: dpdk/lib/librte_eal/linuxapp/eal/eal_log.c +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_log.c ++++ dpdk/lib/librte_eal/linuxapp/eal/eal_log.c +@@ -50,8 +50,7 @@ + #include "eal_private.h" + + /* +- * default log function, used once mempool (hence log history) is +- * available ++ * default log function + */ + static ssize_t + console_log_write(__attribute__((unused)) void *c, const char *buf, size_t size) +@@ -60,9 +59,6 @@ console_log_write(__attribute__((unused) + ssize_t ret; + uint32_t loglevel; + +- /* add this log in history */ +- rte_log_add_in_history(buf, size); +- + /* write on stdout */ + ret = fwrite(buf, 1, size, stdout); + fflush(stdout); +@@ -110,8 +106,7 @@ rte_eal_log_init(const char *id, int fac + /* early logs */ + + /* +- * early log function, used during boot when mempool (hence log +- * history) is not available ++ * early log function, used before rte_eal_log_init + */ + static ssize_t + early_log_write(__attribute__((unused)) void *c, const char *buf, size_t size) +Index: dpdk/lib/librte_eal/linuxapp/eal/Makefile +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/Makefile ++++ dpdk/lib/librte_eal/linuxapp/eal/Makefile +@@ -44,9 +44,12 @@ VPATH += $(RTE_SDK)/lib/librte_eal/commo + CFLAGS += -I$(SRCDIR)/include + CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common + CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include ++ifeq ($(CONFIG_RTE_LIBRTE_IVSHMEM),y) ++# workaround for circular dependency eal -> ivshmem -> ring/mempool -> eal + CFLAGS += -I$(RTE_SDK)/lib/librte_ring + CFLAGS += -I$(RTE_SDK)/lib/librte_mempool + CFLAGS += -I$(RTE_SDK)/lib/librte_ivshmem ++endif + CFLAGS += $(WERROR_FLAGS) -O3 + + LDLIBS += -ldl +Index: dpdk/lib/librte_eal/linuxapp/eal/eal_interrupts.c +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_interrupts.c ++++ dpdk/lib/librte_eal/linuxapp/eal/eal_interrupts.c +@@ -57,10 +57,8 @@ + #include + #include + #include +-#include + #include + #include +-#include + #include + #include + #include +Index: dpdk/lib/librte_eal/linuxapp/eal/eal_ivshmem.c +=================================================================== +--- dpdk.orig/lib/librte_eal/linuxapp/eal/eal_ivshmem.c ++++ dpdk/lib/librte_eal/linuxapp/eal/eal_ivshmem.c +@@ -49,7 +49,6 @@ + #include + #include + #include +-#include + #include + #include + #include +Index: dpdk/lib/librte_ivshmem/Makefile +=================================================================== +--- dpdk.orig/lib/librte_ivshmem/Makefile ++++ dpdk/lib/librte_ivshmem/Makefile +@@ -46,7 +46,9 @@ SRCS-$(CONFIG_RTE_LIBRTE_IVSHMEM) := rte + # install includes + SYMLINK-$(CONFIG_RTE_LIBRTE_IVSHMEM)-include := rte_ivshmem.h + +-# this lib needs eal ++# this lib needs EAL, ring and mempool ++DEPDIRS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += lib/librte_eal ++DEPDIRS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += lib/librte_ring + DEPDIRS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += lib/librte_mempool + + include $(RTE_SDK)/mk/rte.lib.mk diff --git a/debian/patches/ubuntu-backport-40-linking-fixes-stage-3-4.patch b/debian/patches/ubuntu-backport-40-linking-fixes-stage-3-4.patch new file mode 100644 index 00000000..161832e6 --- /dev/null +++ b/debian/patches/ubuntu-backport-40-linking-fixes-stage-3-4.patch @@ -0,0 +1,217 @@ +Description: backport of dpdk 16.07 fix for library underlinking - stage 3/4 + +This is a merge of related upstream fixes: +- cb8e39da mk: sort drivers in static application link list +- ea469893 mk: fix driver dependencies order for static application +- 4e04fd45 mk: remove library grouping during application linking +- 6248e442 mk: prevent overlinking in applications +- ce18c527 mk: sort libraries in level order when linking +- 95dc3c3c mk: reduce scope of whole-archive static linking + +Forwarded: yes (in DPDK 16.07) +Author: Christian Ehrhardt +Last-Update: 2016-06-14 + +Index: dpdk/mk/rte.app.mk +=================================================================== +--- dpdk.orig/mk/rte.app.mk ++++ dpdk/mk/rte.app.mk +@@ -50,6 +50,9 @@ ifeq ($(NO_LDSCRIPT),) + LDSCRIPT = $(RTE_LDSCRIPT) + endif + ++# Link only the libraries used in the application ++LDFLAGS += --as-needed ++ + # default path for libs + _LDLIBS-y += -L$(RTE_SDK_BIN)/lib + +@@ -57,11 +60,6 @@ _LDLIBS-y += -L$(RTE_SDK_BIN)/lib + # Order is important: from higher level to lower level + # + +-_LDLIBS-y += --whole-archive +- +-_LDLIBS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += -lrte_distributor +-_LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder +- + ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP),y) + _LDLIBS-$(CONFIG_RTE_LIBRTE_KNI) += -lrte_kni + _LDLIBS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += -lrte_ivshmem +@@ -70,51 +68,25 @@ endif + _LDLIBS-$(CONFIG_RTE_LIBRTE_PIPELINE) += -lrte_pipeline + _LDLIBS-$(CONFIG_RTE_LIBRTE_TABLE) += -lrte_table + _LDLIBS-$(CONFIG_RTE_LIBRTE_PORT) += -lrte_port +-_LDLIBS-$(CONFIG_RTE_LIBRTE_TIMER) += -lrte_timer +-_LDLIBS-$(CONFIG_RTE_LIBRTE_HASH) += -lrte_hash +-_LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += -lrte_jobstats +-_LDLIBS-$(CONFIG_RTE_LIBRTE_LPM) += -lrte_lpm +-_LDLIBS-$(CONFIG_RTE_LIBRTE_POWER) += -lrte_power +-_LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl ++ ++_LDLIBS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += -lrte_distributor ++_LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder ++_LDLIBS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += -lrte_ip_frag + _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lrte_meter + _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched +-_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost ++_LDLIBS-$(CONFIG_RTE_LIBRTE_LPM) += -lrte_lpm ++_LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl ++_LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += -lrte_jobstats ++_LDLIBS-$(CONFIG_RTE_LIBRTE_POWER) += -lrte_power + +-# The static libraries do not know their dependencies. +-# So linking with static library requires explicit dependencies. +-ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) +-_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm +-_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt +-_LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lm +-ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) +-_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lnuma +-endif +-ifeq ($(CONFIG_RTE_LIBRTE_VHOST_USER),n) +-_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lfuse +-endif +-_LDLIBS-$(CONFIG_RTE_PORT_PCAP) += -lpcap +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += -lpcap +-_LDLIBS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += -lz +-_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -libverbs +-_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -libverbs +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += -lsze2 +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lxenstore +-_LDLIBS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += -lgxio +-_LDLIBS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += -lm +-# QAT / AESNI GCM PMDs are dependent on libcrypto (from openssl) +-# for calculating HMAC precomputes +-ifeq ($(CONFIG_RTE_LIBRTE_PMD_QAT),y) +-_LDLIBS-y += -lcrypto +-else ifeq ($(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM),y) +-_LDLIBS-y += -lcrypto +-endif +-endif # !CONFIG_RTE_BUILD_SHARED_LIBS ++_LDLIBS-y += --whole-archive + +-_LDLIBS-y += --start-group ++_LDLIBS-$(CONFIG_RTE_LIBRTE_TIMER) += -lrte_timer ++_LDLIBS-$(CONFIG_RTE_LIBRTE_HASH) += -lrte_hash ++_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost + + _LDLIBS-$(CONFIG_RTE_LIBRTE_KVARGS) += -lrte_kvargs + _LDLIBS-$(CONFIG_RTE_LIBRTE_MBUF) += -lrte_mbuf +-_LDLIBS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += -lrte_ip_frag + _LDLIBS-$(CONFIG_RTE_LIBRTE_ETHER) += -lethdev + _LDLIBS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += -lrte_cryptodev + _LDLIBS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += -lrte_mempool +@@ -123,61 +95,65 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) + _LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline + _LDLIBS-$(CONFIG_RTE_LIBRTE_CFGFILE) += -lrte_cfgfile + _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += -lrte_pmd_bond +- +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lrte_pmd_xenvirt ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_XENVIRT) += -lrte_pmd_xenvirt -lxenstore + + ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) + # plugins (link only if static libraries) + +-_LDLIBS-$(CONFIG_RTE_LIBRTE_VMXNET3_PMD) += -lrte_pmd_vmxnet3_uio +-_LDLIBS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += -lrte_pmd_virtio ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += -lrte_pmd_af_packet + _LDLIBS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += -lrte_pmd_bnx2x + _LDLIBS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += -lrte_pmd_cxgbe ++_LDLIBS-$(CONFIG_RTE_LIBRTE_E1000_PMD) += -lrte_pmd_e1000 ++_LDLIBS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += -lrte_pmd_ena + _LDLIBS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += -lrte_pmd_enic +-_LDLIBS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += -lrte_pmd_i40e + _LDLIBS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += -lrte_pmd_fm10k ++_LDLIBS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += -lrte_pmd_i40e + _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe +-_LDLIBS-$(CONFIG_RTE_LIBRTE_E1000_PMD) += -lrte_pmd_e1000 +-_LDLIBS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += -lrte_pmd_ena +-_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -lrte_pmd_mlx4 +-_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -lrte_pmd_mlx5 +-_LDLIBS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += -lrte_pmd_nfp +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += -lrte_pmd_szedata2 +-_LDLIBS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += -lrte_pmd_mpipe +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_RING) += -lrte_pmd_ring +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += -lrte_pmd_pcap +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += -lrte_pmd_af_packet ++_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -lrte_pmd_mlx4 -libverbs ++_LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -lrte_pmd_mlx5 -libverbs ++_LDLIBS-$(CONFIG_RTE_LIBRTE_MPIPE_PMD) += -lrte_pmd_mpipe -lgxio ++_LDLIBS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += -lrte_pmd_nfp -lm + _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += -lrte_pmd_null ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += -lrte_pmd_pcap -lpcap ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_RING) += -lrte_pmd_ring ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += -lrte_pmd_szedata2 -lsze2 ++_LDLIBS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += -lrte_pmd_virtio ++ifeq ($(CONFIG_RTE_LIBRTE_VHOST),y) ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += -lrte_pmd_vhost ++endif # $(CONFIG_RTE_LIBRTE_VHOST) ++_LDLIBS-$(CONFIG_RTE_LIBRTE_VMXNET3_PMD) += -lrte_pmd_vmxnet3_uio + + ifeq ($(CONFIG_RTE_LIBRTE_CRYPTODEV),y) +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lrte_pmd_qat + _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB) += -lrte_pmd_aesni_mb +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM) += -lrte_pmd_aesni_gcm ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB) += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM) += -lrte_pmd_aesni_gcm ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM) += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB + _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += -lrte_pmd_null_crypto +- +-# AESNI MULTI BUFFER / GCM PMDs are dependent on the IPSec_MB library +-ifeq ($(CONFIG_RTE_LIBRTE_PMD_AESNI_MB),y) +-_LDLIBS-y += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB +-else ifeq ($(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM),y) +-_LDLIBS-y += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB +-endif +- +-# SNOW3G PMD is dependent on the LIBSSO library ++_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lrte_pmd_qat + _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G) += -lrte_pmd_snow3g + _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G) += -L$(LIBSSO_PATH)/build -lsso + endif # CONFIG_RTE_LIBRTE_CRYPTODEV + +-ifeq ($(CONFIG_RTE_LIBRTE_VHOST),y) +- +-_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += -lrte_pmd_vhost ++endif # !CONFIG_RTE_BUILD_SHARED_LIBS + +-endif # $(CONFIG_RTE_LIBRTE_VHOST) ++_LDLIBS-y += --no-whole-archive + +-endif # ! $(CONFIG_RTE_BUILD_SHARED_LIB) ++ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) ++# The static libraries do not know their dependencies. ++# So linking with static library requires explicit dependencies. ++_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm ++_LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt ++_LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lm ++ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) ++_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lnuma ++endif ++ifeq ($(CONFIG_RTE_LIBRTE_VHOST_USER),n) ++_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lfuse ++endif ++_LDLIBS-$(CONFIG_RTE_PORT_PCAP) += -lpcap ++endif # !CONFIG_RTE_BUILD_SHARED_LIBS + + _LDLIBS-y += $(EXECENV_LDLIBS) +-_LDLIBS-y += --end-group +-_LDLIBS-y += --no-whole-archive + + LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS) + +Index: dpdk/mk/exec-env/linuxapp/rte.vars.mk +=================================================================== +--- dpdk.orig/mk/exec-env/linuxapp/rte.vars.mk ++++ dpdk/mk/exec-env/linuxapp/rte.vars.mk +@@ -45,9 +45,6 @@ else + EXECENV_CFLAGS = -pthread + endif + +-# Workaround lack of DT_NEEDED entry +-EXECENV_LDFLAGS = --no-as-needed +- + EXECENV_LDLIBS = + EXECENV_ASFLAGS = + diff --git a/debian/patches/ubuntu-backport-40-linking-fixes-stage-4-4.patch b/debian/patches/ubuntu-backport-40-linking-fixes-stage-4-4.patch new file mode 100644 index 00000000..188ee2bd --- /dev/null +++ b/debian/patches/ubuntu-backport-40-linking-fixes-stage-4-4.patch @@ -0,0 +1,149 @@ +Description: backport of dpdk 16.07 fix for library underlinking - stage 4/4 + +This is a merge of related upstream fixes: +- 473b718f mk: fix vhost dependency to pthread +- 6cbf4f75 mk: fix missing internal dependencies + +Forwarded: yes (in DPDK 16.07) +Author: Christian Ehrhardt +Last-Update: 2016-06-14 + +Index: dpdk/drivers/net/vhost/Makefile +=================================================================== +--- dpdk.orig/drivers/net/vhost/Makefile ++++ dpdk/drivers/net/vhost/Makefile +@@ -36,6 +36,8 @@ include $(RTE_SDK)/mk/rte.vars.mk + # + LIB = librte_pmd_vhost.a + ++LDLIBS += -lpthread ++ + CFLAGS += -O3 + CFLAGS += $(WERROR_FLAGS) + +@@ -54,6 +56,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += r + SYMLINK-y-include += rte_eth_vhost.h + + # this lib depends upon: ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += lib/librte_mbuf + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += lib/librte_kvargs +Index: dpdk/drivers/crypto/null/Makefile +=================================================================== +--- dpdk.orig/drivers/crypto/null/Makefile ++++ dpdk/drivers/crypto/null/Makefile +@@ -55,5 +55,7 @@ SYMLINK-y-include += + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_mbuf + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_cryptodev ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_ring ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += lib/librte_kvargs + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/drivers/net/af_packet/Makefile +=================================================================== +--- dpdk.orig/drivers/net/af_packet/Makefile ++++ dpdk/drivers/net/af_packet/Makefile +@@ -51,6 +51,7 @@ CFLAGS += $(WERROR_FLAGS) + SRCS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += rte_eth_af_packet.c + + # this lib depends upon: ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += lib/librte_mbuf + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += lib/librte_kvargs +Index: dpdk/drivers/net/bonding/Makefile +=================================================================== +--- dpdk.orig/drivers/net/bonding/Makefile ++++ dpdk/drivers/net/bonding/Makefile +@@ -64,5 +64,7 @@ DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += lib/librte_kvargs + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += lib/librte_cmdline ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += lib/librte_mempool ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += lib/librte_ring + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/drivers/net/fm10k/Makefile +=================================================================== +--- dpdk.orig/drivers/net/fm10k/Makefile ++++ dpdk/drivers/net/fm10k/Makefile +@@ -99,5 +99,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_FM10K_INC_VECTO + DEPDIRS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += lib/librte_eal lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += lib/librte_mempool lib/librte_mbuf + DEPDIRS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += lib/librte_net ++DEPDIRS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += lib/librte_kvargs + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/drivers/net/null/Makefile +=================================================================== +--- dpdk.orig/drivers/net/null/Makefile ++++ dpdk/drivers/net/null/Makefile +@@ -54,6 +54,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += rt + SYMLINK-y-include += rte_eth_null.h + + # this lib depends upon: ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += lib/librte_mbuf + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += lib/librte_kvargs +Index: dpdk/drivers/net/pcap/Makefile +=================================================================== +--- dpdk.orig/drivers/net/pcap/Makefile ++++ dpdk/drivers/net/pcap/Makefile +@@ -56,6 +56,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += rt + SYMLINK-y-include += + + # this lib depends upon: ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += lib/librte_mbuf + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += lib/librte_kvargs +Index: dpdk/lib/librte_ip_frag/Makefile +=================================================================== +--- dpdk.orig/lib/librte_ip_frag/Makefile ++++ dpdk/lib/librte_ip_frag/Makefile +@@ -54,6 +54,7 @@ SYMLINK-$(CONFIG_RTE_LIBRTE_IP_FRAG)-inc + + + # this library depends on rte_ether ++DEPDIRS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += lib/librte_mempool lib/librte_ether + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/lib/librte_pipeline/Makefile +=================================================================== +--- dpdk.orig/lib/librte_pipeline/Makefile ++++ dpdk/lib/librte_pipeline/Makefile +@@ -52,6 +52,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_PIPELINE) := rt + SYMLINK-$(CONFIG_RTE_LIBRTE_PIPELINE)-include += rte_pipeline.h + + # this lib depends upon: ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) := lib/librte_table + DEPDIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += lib/librte_port + +Index: dpdk/lib/librte_port/Makefile +=================================================================== +--- dpdk.orig/lib/librte_port/Makefile ++++ dpdk/lib/librte_port/Makefile +@@ -75,5 +75,6 @@ DEPDIRS-$(CONFIG_RTE_LIBRTE_PORT) += lib + DEPDIRS-$(CONFIG_RTE_LIBRTE_PORT) += lib/librte_mempool + DEPDIRS-$(CONFIG_RTE_LIBRTE_PORT) += lib/librte_ether + DEPDIRS-$(CONFIG_RTE_LIBRTE_PORT) += lib/librte_ip_frag ++DEPDIRS-$(CONFIG_RTE_LIBRTE_PORT) += lib/librte_sched + + include $(RTE_SDK)/mk/rte.lib.mk +Index: dpdk/lib/librte_sched/Makefile +=================================================================== +--- dpdk.orig/lib/librte_sched/Makefile ++++ dpdk/lib/librte_sched/Makefile +@@ -59,6 +59,7 @@ SYMLINK-$(CONFIG_RTE_LIBRTE_SCHED)-inclu + SYMLINK-$(CONFIG_RTE_LIBRTE_SCHED)-include += rte_reciprocal.h + + # this lib depends upon: ++DEPDIRS-$(CONFIG_RTE_LIBRTE_SCHED) += lib/librte_eal + DEPDIRS-$(CONFIG_RTE_LIBRTE_SCHED) += lib/librte_mempool lib/librte_mbuf + DEPDIRS-$(CONFIG_RTE_LIBRTE_SCHED) += lib/librte_net lib/librte_timer + diff --git a/debian/patches/ubuntu-backport-41-fix-install-tar-1.29.patch b/debian/patches/ubuntu-backport-41-fix-install-tar-1.29.patch new file mode 100644 index 00000000..e485e528 --- /dev/null +++ b/debian/patches/ubuntu-backport-41-fix-install-tar-1.29.patch @@ -0,0 +1,25 @@ +Description: backport of dpdk 16.07 fix for tar >=1.29 + +This is a backport of: +- dd9ae4c7 mk: fix install with tar 1.29 + +Forwarded: yes (in DPDK 16.07) +Author: Christian Ehrhardt +Last-Update: 2016-06-14 + +Index: dpdk/mk/rte.sdkinstall.mk +=================================================================== +--- dpdk.orig/mk/rte.sdkinstall.mk ++++ dpdk/mk/rte.sdkinstall.mk +@@ -116,9 +116,9 @@ install-runtime: + $(Q)$(call rte_mkdir, $(DESTDIR)$(libdir)) + $(Q)cp -a $O/lib/* $(DESTDIR)$(libdir) + $(Q)$(call rte_mkdir, $(DESTDIR)$(bindir)) +- $(Q)tar -cf - -C $O app --exclude 'app/*.map' \ ++ $(Q)tar -cf - -C $O --exclude 'app/*.map' \ + --exclude 'app/cmdline*' --exclude app/test \ +- --exclude app/testacl --exclude app/testpipeline | \ ++ --exclude app/testacl --exclude app/testpipeline app | \ + tar -xf - -C $(DESTDIR)$(bindir) --strip-components=1 \ + --keep-newer-files --warning=no-ignore-newer + $(Q)$(call rte_mkdir, $(DESTDIR)$(datadir)) diff --git a/debian/patches/ubuntu-backport-42-increase-default-logging-level.patch b/debian/patches/ubuntu-backport-42-increase-default-logging-level.patch new file mode 100644 index 00000000..de641035 --- /dev/null +++ b/debian/patches/ubuntu-backport-42-increase-default-logging-level.patch @@ -0,0 +1,81 @@ +Index: dpdk/config/common_base +=================================================================== +--- dpdk.orig/config/common_base ++++ dpdk/config/common_base +@@ -88,7 +88,7 @@ CONFIG_RTE_MAX_NUMA_NODES=8 + CONFIG_RTE_MAX_MEMSEG=256 + CONFIG_RTE_MAX_MEMZONE=2560 + CONFIG_RTE_MAX_TAILQ=32 +-CONFIG_RTE_LOG_LEVEL=8 ++CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO + CONFIG_RTE_LOG_HISTORY=256 + CONFIG_RTE_LIBEAL_USE_HPET=n + CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n +Index: dpdk/doc/guides/faq/faq.rst +=================================================================== +--- dpdk.orig/doc/guides/faq/faq.rst ++++ dpdk/doc/guides/faq/faq.rst +@@ -88,9 +88,7 @@ the wrong socket, the application simply + On application startup, there is a lot of EAL information printed. Is there any way to reduce this? + --------------------------------------------------------------------------------------------------- + +-Yes, each EAL has a configuration file that is located in the /config directory. Within each configuration file, you will find CONFIG_RTE_LOG_LEVEL=8. +-You can change this to a lower value, such as 6 to reduce this printout of debug information. The following is a list of LOG levels that can be found in the rte_log.h file. +-You must remove, then rebuild, the EAL directory for the change to become effective as the configuration file creates the rte_config.h file in the EAL directory. ++Yes, the option ``--log-level=`` accepts one of these numbers: + + .. code-block:: c + +@@ -103,6 +101,9 @@ You must remove, then rebuild, the EAL d + #define RTE_LOG_INFO 7U /* Informational. */ + #define RTE_LOG_DEBUG 8U /* Debug-level messages. */ + ++It is also possible to change the maximum (and default level) at compile time ++with ``CONFIG_RTE_LOG_LEVEL``. ++ + + How can I tune my network application to achieve lower latency? + --------------------------------------------------------------- +Index: dpdk/lib/librte_eal/common/eal_common_log.c +=================================================================== +--- dpdk.orig/lib/librte_eal/common/eal_common_log.c ++++ dpdk/lib/librte_eal/common/eal_common_log.c +@@ -195,5 +195,10 @@ rte_eal_common_log_init(FILE *default_lo + { + default_log_stream = default_log; + rte_openlog_stream(default_log); ++ ++#if RTE_LOG_LEVEL >= RTE_LOG_DEBUG ++ RTE_LOG(NOTICE, EAL, "Debug logs available - lower performance\n"); ++#endif ++ + return 0; + } +Index: dpdk/lib/librte_eal/common/eal_common_options.c +=================================================================== +--- dpdk.orig/lib/librte_eal/common/eal_common_options.c ++++ dpdk/lib/librte_eal/common/eal_common_options.c +@@ -141,7 +141,11 @@ eal_reset_internal_config(struct interna + + internal_cfg->syslog_facility = LOG_DAEMON; + /* default value from build option */ ++#if RTE_LOG_LEVEL >= RTE_LOG_DEBUG ++ internal_cfg->log_level = RTE_LOG_INFO; ++#else + internal_cfg->log_level = RTE_LOG_LEVEL; ++#endif + + internal_cfg->xen_dom0_support = 0; + +Index: dpdk/scripts/test-build.sh +=================================================================== +--- dpdk.orig/scripts/test-build.sh ++++ dpdk/scripts/test-build.sh +@@ -138,6 +138,7 @@ config () #