diff --git a/0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch b/0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch new file mode 100644 index 0000000..8b29814 --- /dev/null +++ b/0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch @@ -0,0 +1,28 @@ +From a81e0a0f73a834d2cd8e5fd3237fac85574ad778 Mon Sep 17 00:00:00 2001 +From: Nirmoy Das +Date: Mon, 11 Jul 2016 11:56:27 +0200 +Subject: [PATCH] PAGE_SIZE constant is not defined on ARM since multiple + values are possible, so DPDK needs to dynamically get the page size. + +--- + drivers/net/bnx2x/bnx2x.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c +index 67af5da..766d66b 100644 +--- a/drivers/net/bnx2x/bnx2x.c ++++ b/drivers/net/bnx2x/bnx2x.c +@@ -34,6 +34,10 @@ + #define BNX2X_PMD_VERSION_MINOR 0 + #define BNX2X_PMD_VERSION_PATCH 0 + ++#ifndef PAGE_SIZE ++#define PAGE_SIZE sysconf(_SC_PAGE_SIZE) ++#endif ++ + static inline const char * + bnx2x_pmd_version(void) + { +-- +2.9.0 + diff --git a/dpdk.changes b/dpdk.changes index c9d724b..595028d 100644 --- a/dpdk.changes +++ b/dpdk.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Mon Jul 11 18:20:57 CEST 2016 - ndas@suse.de + +- Added support for aarch64 compilation. + [+0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch] +- Disabled aarch64 dpdk-examples package for the time being as it + contains lots of Intel specific code. +- Added proper "Group" field for the subpackages . + ------------------------------------------------------------------- Thu Jun 23 09:56:05 UTC 2016 - mchandras@suse.de diff --git a/dpdk.spec b/dpdk.spec index 8e3dfd5..78bd84d 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -16,16 +16,26 @@ # -%define machine native %ifarch x86_64 +%define machine native %define target x86_64-%{machine}-linuxapp-gcc -%else if %ix86 +%endif +%ifarch %ix86 +%define machine native %define target i686-%{machine}-linuxapp-gcc %endif - -%bcond_without shared +%ifarch aarch64 +%define machine armv8a +%define target arm64-%{machine}-linuxapp-gcc +%endif +# Examples seems to contain lots of Intel specific code +# so disabling examples package for aarch64 till we find +# time to fix them all. - TODO +%ifnarch aarch64 # Add option to build without examples %bcond_without examples +%endif +%bcond_without shared # Add option to build without tools %bcond_without tools Name: dpdk @@ -45,59 +55,61 @@ Patch6: 0006-d639996-vhost-enable-log_shmfd-protocol-feature.patch #PATCH-FIX-UPSTREAM 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch Patch7: 0007-ixgbe-fix-VLAN-filter-missing-brackets.patch #PATCH-FIX-UPSTREAM 0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch -Patch8: 0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch +Patch8: 0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch #PATCH-FIX-UPSTREAM 0009-bonding-copy-entire-config-structure-in-mode-4.patch -Patch9: 0009-bonding-copy-entire-config-structure-in-mode-4.patch +Patch9: 0009-bonding-copy-entire-config-structure-in-mode-4.patch #PATCH-FIX-UPSTREAM 0010-bonding-fix-active-slaves-with-no-primary.patch Patch10: 0010-bonding-fix-active-slaves-with-no-primary.patch #PATCH-FIX-UPSTREAM 0011-bonding-do-not-ignore-multicast-in-mode-4.patch -Patch11: 0011-bonding-do-not-ignore-multicast-in-mode-4.patch +Patch11: 0011-bonding-do-not-ignore-multicast-in-mode-4.patch #PATCH-FIX-UPSTREAM 0012-bonding-do-not-activate-slave-twice.patch Patch12: 0012-bonding-do-not-activate-slave-twice.patch #PATCH-FIX-UPSTREAM 0013-bonding-fix-crash-when-no-slave-device.patch -Patch13: 0013-bonding-fix-crash-when-no-slave-device.patch +Patch13: 0013-bonding-fix-crash-when-no-slave-device.patch #PATCH-FIX-UPSTREAM 0014-bonding-fix-detach-of-bonded-device.patch -Patch14: 0014-bonding-fix-detach-of-bonded-device.patch +Patch14: 0014-bonding-fix-detach-of-bonded-device.patch #PATCH-FIX-UPSTREAM 0015-bonding-fix-detach-of-slave-devices.patch -Patch15: 0015-bonding-fix-detach-of-slave-devices.patch +Patch15: 0015-bonding-fix-detach-of-slave-devices.patch #PATCH-FIX-UPSTREAM 0016-eal-linux-support-built-in-kernel-modules.patch -Patch16: 0016-eal-linux-support-built-in-kernel-modules.patch +Patch16: 0016-eal-linux-support-built-in-kernel-modules.patch #PATCH-FIX-UPSTREAM 0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch -Patch17: 0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch +Patch17: 0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch #PATCH-FIX-UPSTREAM 0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch -Patch18: 0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch +Patch18: 0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch #PATCH-FIX-UPSTREAM 0019-i40e-base-fix-driver-load-failure.patch -Patch19: 0019-i40e-base-fix-driver-load-failure.patch +Patch19: 0019-i40e-base-fix-driver-load-failure.patch #PATCH-FIX-UPSTREAM 0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch -Patch20: 0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch +Patch20: 0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch #PATCH-FIX-UPSTREAM 0021-i40e-fix-inverted-check-for-no-refcount.patch -Patch21: 0021-i40e-fix-inverted-check-for-no-refcount.patch +Patch21: 0021-i40e-fix-inverted-check-for-no-refcount.patch #PATCH-FIX-UPSTREAM 0022-i40e-fix-overflow.patch -Patch22: 0022-i40e-fix-overflow.patch +Patch22: 0022-i40e-fix-overflow.patch #PATCH-FIX-UPSTREAM 0023-i40e-fix-VLAN-filtering.patch -Patch23: 0023-i40e-fix-VLAN-filtering.patch +Patch23: 0023-i40e-fix-VLAN-filtering.patch #PATCH-FIX-UPSTREAM 0024-mempool-fix-leak-when-creation-fails.patch -Patch24: 0024-mempool-fix-leak-when-creation-fails.patch +Patch24: 0024-mempool-fix-leak-when-creation-fails.patch #PATCH-FIX-UPSTREAM 0025-pcap-fix-captured-frame-length.patch -Patch25: 0025-pcap-fix-captured-frame-length.patch +Patch25: 0025-pcap-fix-captured-frame-length.patch #PATCH-FIX-UPSTREAM 0026-port-fix-crash-for-ethdev-writer-nodrop.patch -Patch26: 0026-port-fix-crash-for-ethdev-writer-nodrop.patch +Patch26: 0026-port-fix-crash-for-ethdev-writer-nodrop.patch #PATCH-FIX-UPSTREAM 0027-port-fix-crash-for-ring-writer-nodrop.patch -Patch27: 0027-port-fix-crash-for-ring-writer-nodrop.patch +Patch27: 0027-port-fix-crash-for-ring-writer-nodrop.patch #PATCH-FIX-UPSTREAM 0028-tools-fix-unbinding-failure-handling.patch -Patch28: 0028-tools-fix-unbinding-failure-handling.patch +Patch28: 0028-tools-fix-unbinding-failure-handling.patch #PATCH-FIX-UPSTREAM 0029-tools-support-Python-3-in-bind-script.patch -Patch29: 0029-tools-support-Python-3-in-bind-script.patch +Patch29: 0029-tools-support-Python-3-in-bind-script.patch #PATCH-FIX-UPSTREAM 0030-tools-support-binding-to-built-in-kernel-modules.patch -Patch30: 0030-tools-support-binding-to-built-in-kernel-modules.patch +Patch30: 0030-tools-support-binding-to-built-in-kernel-modules.patch #PATCH-FIX-UPSTREAM 0031-vhost-fix-leak-of-fds-and-mmaps.patch -Patch31: 0031-vhost-fix-leak-of-fds-and-mmaps.patch +Patch31: 0031-vhost-fix-leak-of-fds-and-mmaps.patch #PATCH-FIX-UPSTREAM 0032-virtio-fix-crash-in-statistics-functions.patch -Patch32: 0032-virtio-fix-crash-in-statistics-functions.patch +Patch32: 0032-virtio-fix-crash-in-statistics-functions.patch #PATCH-FIX-UPSTREAM 0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch -Patch33: 0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch +Patch33: 0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch #PATCH-FIX-UPSTREAM 0034-virtio-fix-restart.patch -Patch34: 0034-virtio-fix-restart.patch +Patch34: 0034-virtio-fix-restart.patch +#PATCH-FIX-OPENSUSE 0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi +Patch35: 0035-PAGE_SIZE-constant-is-not-defined-on-ARM-since-multi.patch # # Patches for build fixes @@ -121,18 +133,12 @@ Patch105: 0105-e1000-fix-missing-link-interrupt-check-brackets.patch Patch106: 0106-app-test-fix-missing-brackets.patch #PATCH-FIX-UPSTREAM: 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch Patch107: 0107-examples-ip_pipeline-use-unsigned-constants-for-left.patch - BuildRequires: doxygen BuildRequires: fdupes BuildRequires: libnuma-devel BuildRequires: libpcap-devel BuildRequires: zlib-devel -# -# The DPDK is designed to optimize througput of network traffic using, among -# other techniques, carefully crafted x86 assembly instructions. As such it -# currently (and likely never will) run on non-x86 platforms -# -ExclusiveArch: x86_64 %ix86 +ExclusiveArch: aarch64 x86_64 %ix86 %description The Data Plane Development Kit is a set of libraries and drivers for @@ -149,6 +155,7 @@ applications with the Data Plane Development Kit. %package doc Summary: Data Plane Development Kit API documentation +Group: System/Libraries BuildArch: noarch %description doc @@ -157,6 +164,7 @@ API programming documentation for the Data Plane Development Kit. %if %{with tools} %package tools Summary: Tools for setting up Data Plane Development Kit environment +Group: System/Libraries Requires: %{name} = %{version} Requires: findutils Requires: iproute @@ -170,6 +178,7 @@ This package contains tools for setting up Data Plane Development Kit environmen %if %{with examples} %package examples Summary: Data Plane Development Kit example applications +Group: System/Libraries BuildRequires: libvirt-devel %description examples @@ -187,9 +196,9 @@ as L2 and L3 forwarding. %patch1 -p1 -z .enic %patch2 -p1 -z .examples %patch3 -p1 -z .dtneeded -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 %patch7 -p1 %patch8 -p1 %patch9 -p1 @@ -218,6 +227,7 @@ as L2 and L3 forwarding. %patch32 -p1 %patch33 -p1 %patch34 -p1 +%patch35 -p1 # Build fixes %patch99 -p1 -z .rtetoolchain @@ -255,7 +265,7 @@ export EXTRA_CFLAGS="%{optflags} -Wformat -fPIC -Wno-error=array-bounds" make V=1 O=%{target} T=%{target} %{?_smp_mflags} config -setconf CONFIG_RTE_MACHINE '"default"' +setconf CONFIG_RTE_MACHINE '"%{machine}"' # Disable experimental features setconf CONFIG_RTE_NEXT_ABI n setconf CONFIG_RTE_LIBRTE_CRYPTODEV n @@ -385,7 +395,7 @@ rm -f %{buildroot}%{_bindir}/*.map %defattr(-,root,root) #BSD %docdir -%doc LICENSE.GPL LICENSE.LGPL +%doc LICENSE.GPL LICENSE.LGPL %files devel %defattr(-,root,root) @@ -395,9 +405,11 @@ rm -f %{buildroot}%{_bindir}/*.map %if %{with tools} %exclude %{sdkdir}/tools/ %endif + %if %{with examples} %exclude %{sdkdir}/examples/ %endif + %{_sysconfdir}/profile.d/dpdk-sdk-*.* %if ! %{with shared} %{_libdir}/*.a