From 7878d5e691d201b1dc5523c700c8aa20691bd1c0635732912af33ed39d350cab Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Thu, 6 Apr 2023 09:47:56 +0000 Subject: [PATCH] Accepting request 1077604 from home:dpitchumani:branches:openSUSE:Factory Description: - Update DPDK to LTS release version v22.11.1 (jsc#PED-1237) - More details can be found in http://doc.dpdk.org/guides/rel_notes/release_22_11.html Actions: - submit home:dpitchumani:branches:openSUSE:Factory:Head/dpdk => network/dpdk OBS-URL: https://build.opensuse.org/request/show/1077604 OBS-URL: https://build.opensuse.org/package/show/network/dpdk?expand=0&rev=143 --- ...et-kernel-version-from-kernel-source.patch | 38 ---------- 0001-fix-cpu-compatibility.patch | 69 +++++++++++++++++++ ...LE15-SP3-compatibility-patch-for-kni.patch | 14 ++-- dpdk-21.11.1.tar.xz | 3 - dpdk-22.11.1.tar.xz | 3 + dpdk.changes | 62 +++++++++++++++++ dpdk.spec | 26 ++++--- kni-fix-build-with-Linux-5.18.patch | 49 ------------- preamble | 1 + 9 files changed, 161 insertions(+), 104 deletions(-) delete mode 100644 0001-build-try-to-get-kernel-version-from-kernel-source.patch create mode 100644 0001-fix-cpu-compatibility.patch delete mode 100644 dpdk-21.11.1.tar.xz create mode 100644 dpdk-22.11.1.tar.xz delete mode 100644 kni-fix-build-with-Linux-5.18.patch diff --git a/0001-build-try-to-get-kernel-version-from-kernel-source.patch b/0001-build-try-to-get-kernel-version-from-kernel-source.patch deleted file mode 100644 index 3e52252..0000000 --- a/0001-build-try-to-get-kernel-version-from-kernel-source.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 4034cebe2d0c36d8762fb4c06ba216b17f308e22 Mon Sep 17 00:00:00 2001 -From: Ferdinand Thiessen -Date: Sat, 26 Feb 2022 22:14:14 +0100 -Subject: [PATCH] build: try to get kernel version from kernel source - -When building the kernel modules, try to get the kernel -version from the kernel sources first. This fixes the -kernel modules installation directory if the target kernel -version differs from the host kernel version, like for -CI build or when packaging for linux distributions. - -Signed-off-by: Ferdinand Thiessen ---- - kernel/linux/meson.build | 18 ++++++++++++------ - 1 file changed, 12 insertions(+), 6 deletions(-) - -diff --git a/kernel/linux/meson.build b/kernel/linux/meson.build ---- dpdk-stable-21.11.1/kernel/linux/meson.build 2022-04-26 12:21:45.000000000 +0200 -+++ mew/kernel/linux/meson.build 2022-04-27 18:17:06.676254482 +0200 -@@ -11,7 +11,17 @@ - - if not meson.is_cross_build() - # native build -- kernel_version = run_command('uname', '-r', check: true).stdout().strip() -+ kernel_version = '' -+ if kernel_source_dir != '' -+ # Try kernel makefile first -+ r = run_command('make', '-s', '-C', kernel_source_dir, 'kernelrelease', check: false) -+ if r.returncode() == 0 -+ kernel_version = r.stdout().strip() -+ endif -+ endif -+ if kernel_version == '' -+ kernel_version = run_command('uname', '-r').stdout().strip() -+ endif - kernel_install_dir = '/lib/modules/' + kernel_version + '/extra/dpdk' - if kernel_build_dir == '' - # use default path for native builds diff --git a/0001-fix-cpu-compatibility.patch b/0001-fix-cpu-compatibility.patch new file mode 100644 index 0000000..c4a99d0 --- /dev/null +++ b/0001-fix-cpu-compatibility.patch @@ -0,0 +1,69 @@ +From e2950fec9cd9c235a7847ed97b6914174857bf93 Mon Sep 17 00:00:00 2001 +From: "mvarlese@suse.de" +Date: Wed, 29 Apr 2020 12:24:16 +0200 +Subject: [PATCH] fix cpu compatibility + +Added 0001-fix-cpu-compatibility.patch to address issue with older CPUs (bsc#1125961, bsc#1099474) + +Updated 2023-02-26 for version 22.11 + +diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c +index 41bc07dde7..750180cb84 100644 +--- a/drivers/bus/vdev/vdev.c ++++ b/drivers/bus/vdev/vdev.c +@@ -51,7 +51,11 @@ static struct vdev_custom_scans vdev_custom_scans = + static rte_spinlock_t vdev_custom_scan_lock = RTE_SPINLOCK_INITIALIZER; + + /* register a driver */ +-void ++#if defined(__x86_64__) || defined(__i386__) ++void __attribute__((target ("sse2"))) ++#else ++ void ++#endif + rte_vdev_register(struct rte_vdev_driver *driver) + { + TAILQ_INSERT_TAIL(&vdev_driver_list, driver, next); +diff --git a/lib/eal/common/eal_common_bus.c b/lib/eal/common/eal_common_bus.c +index deb9fb8a12..cb7bec607f 100644 +--- a/lib/eal/common/eal_common_bus.c ++++ b/lib/eal/common/eal_common_bus.c +@@ -22,7 +22,11 @@ rte_bus_name(const struct rte_bus *bus) + return bus->name; + } + +-void ++#if defined(__x86_64__) || defined(__i386__) ++void __attribute__((target ("sse2"))) ++#else ++ void ++#endif + rte_bus_register(struct rte_bus *bus) + { + RTE_VERIFY(bus); +diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h +index 15765b408d..4291706faa 100644 +--- a/lib/eal/include/rte_common.h ++++ b/lib/eal/include/rte_common.h +@@ -179,8 +179,20 @@ typedef uint16_t unaligned_uint16_t; + * Lowest number is the first to run. + */ + #ifndef RTE_INIT_PRIO /* Allow to override from EAL */ ++#if defined(__x86_64__) || defined(__i386__) + #define RTE_INIT_PRIO(func, prio) \ +-static void __attribute__((constructor(RTE_PRIO(prio)), used)) func(void) ++static void \ ++ __attribute__((constructor(RTE_PRIO(prio)), used)) \ ++ __attribute__((target ("sse2"))) \ ++ __attribute__((target ("no-sse3"))) \ ++ __attribute__((target ("no-sse4"))) \ ++ func(void) ++#else ++#define RTE_INIT_PRIO(func, prio) \ ++static void \ ++ __attribute__((constructor(RTE_PRIO(prio)), used)) \ ++ func(void) ++#endif + #endif + + /** diff --git a/0002-SLE15-SP3-compatibility-patch-for-kni.patch b/0002-SLE15-SP3-compatibility-patch-for-kni.patch index ef5a81d..67ca541 100644 --- a/0002-SLE15-SP3-compatibility-patch-for-kni.patch +++ b/0002-SLE15-SP3-compatibility-patch-for-kni.patch @@ -3,11 +3,17 @@ From: =?UTF-8?q?Jaime=20Caama=C3=B1o=20Ruiz?= Date: Mon, 21 Sep 2020 14:50:13 +0200 Subject: [PATCH] SLE15 SP3 compatibility patch for kni -Updated 2022-02-25 for version 21.11 + Add patch to resolve build error reported in Staging:E project + where a kernel backport (jsc#SLE-13536) introduced backward + incompatible changes to the API that break kni module build + * 0001-SLE15-SP3-compatibility-patch-for-kni.patch -diff -Nur dpdk-21.11/kernel/linux/kni/compat.h new/kernel/linux/kni/compat.h ---- dpdk-21.11/kernel/linux/kni/compat.h 2021-11-26 18:58:21.000000000 +0100 -+++ new/kernel/linux/kni/compat.h 2022-02-25 18:08:52.638000134 +0100 +Updated 2023-02-26 for version 22.11 + +diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h +index 3a86d12bbc..66d1afd944 100644 +--- a/kernel/linux/kni/compat.h ++++ b/kernel/linux/kni/compat.h @@ -14,7 +14,10 @@ #define SLE_VERSION(a, b, c) KERNEL_VERSION(a, b, c) #endif diff --git a/dpdk-21.11.1.tar.xz b/dpdk-21.11.1.tar.xz deleted file mode 100644 index febbf12..0000000 --- a/dpdk-21.11.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e0d1c442087ead6759d129ce7d7e3b87b4a01cd71047c621ebc35bb637027658 -size 15115156 diff --git a/dpdk-22.11.1.tar.xz b/dpdk-22.11.1.tar.xz new file mode 100644 index 0000000..8a35255 --- /dev/null +++ b/dpdk-22.11.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de076465f7174a0d52714b9072e4837a726baac82d8fe7dc644cad5c8cf74d4c +size 15582084 diff --git a/dpdk.changes b/dpdk.changes index b541158..886ed69 100644 --- a/dpdk.changes +++ b/dpdk.changes @@ -1,3 +1,65 @@ +------------------------------------------------------------------- +Wed Apr 5 21:10:54 UTC 2023 - Duraisankar P + +-- Update to LTS release version v22.11.1 + Some of the new features are, + * Added initial LoongArch architecture support. + * Added support for multiple mbuf pools per ethdev Rx queue. + * Added support for congestion management in ethdev. + * Added protocol header based buffer split. + * Added proactive error handling mode for ethdev. + * Added ethdev Rx/Tx descriptor dump API. + * Added ethdev hairpin memory configuration options. + * Added new configuration flags for hairpin queues in rte_eth_hairpin_conf: + * Added strict queue to pre-configuration flow hints. + * Added configuration for asynchronous flow connection tracking. + * Added support for queue-based async query in flow API. + * Added new function rte_flow_async_action_handle_query() to query the action asynchronously. + * Extended metering and marking support in the flow API. + * Added flow offload action to route packets to kernel. + * Updated AF_XDP driver. + * Updated AMD Pensando ionic driver. + * Added GVE net PMD. + * Updated Intel iavf driver. + * Updated Intel ice driver. + * Added Intel idpf driver. + * Updated Marvell cnxk driver. + * Added Microsoft mana driver. + * Updated Netronome nfp driver. + * Added flow API support: + * Updated NVIDIA mlx5 driver. + * Updated NXP dpaa2 driver. + * Updated Wangxun ngbe driver. + * Added DMA vChannel unconfiguration for async vhost. + * Added non-blocking notify API to vhost library. + * Added support for MACsec in rte_security. + * Added new algorithms to cryptodev. + * Updated Intel QuickAssist Technology (QAT) crypto driver. + * Updated Marvell cnxk crypto driver. + * Updated aesni_mb crypto driver. + * Updated ipsec_mb crypto driver. + * Added UADK crypto driver. + * Added bbdev operation for FFT processing. + * Added Intel ACC200 bbdev driver. + * Added eventdev adapter instance get API. + * Added eventdev Tx adapter queue start/stop API. + * Added event crypto adapter vectorization support. + * Added NitroSketch in membership library. + * Added Intel uncore frequency control API to the power library. + * Added security performance test application. + * Updated IPsec sample application. + * Updated FIPS validation sample application. + * Rewrote pmdinfo script. + * More details can be found in + http://doc.dpdk.org/guides/rel_notes/release_22_11.html + * Removed the patches as fixed in upstream + 0001-build-try-to-get-kernel-version-from-kernel-source.patch + kni-fix-build-with-Linux-5.18.patch + * Added Patches: + 0001-fix-cpu-compatibility.patch + * Rebased patches: + 0002-SLE15-SP3-compatibility-patch-for-kni.patch + ------------------------------------------------------------------- Wed Feb 22 08:58:07 UTC 2023 - Bernhard Wiedemann diff --git a/dpdk.spec b/dpdk.spec index bc2568f..1f93870 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -1,7 +1,7 @@ # # spec file # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -28,7 +28,7 @@ %define aarch64_machine thunderx %define exclusive_arch aarch64 %endif -# http://doc.dpdk.org/guides-21.11/linux_gsg/build_dpdk.html#adjusting-build-options +# http://doc.dpdk.org/guides-22.11/linux_gsg/build_dpdk.html#adjusting-build-options %define platform generic %define machine auto %ifarch aarch64 @@ -36,7 +36,7 @@ %endif # This is in sync with /ABI_VERSION # TODO: automate this sync -%define maj 22 +%define maj 23 %define min 0 #%%define lname libdpdk-%%{maj}_%%{min} %define lname libdpdk-%{maj} @@ -46,7 +46,7 @@ %bcond_without tools # Name: dpdk%{name_tag} -Version: 21.11.1 +Version: 22.11.1 Release: 0 Summary: Set of libraries and drivers for fast packet processing License: BSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-only @@ -55,15 +55,14 @@ URL: https://www.dpdk.org/ Source: https://fast.dpdk.org/rel/dpdk-%{version}.tar.xz Source1: preamble # PATCH-FIX-OPENSUSE PATCH-FEATURE-UPSTREAM -Patch0: 0001-build-try-to-get-kernel-version-from-kernel-source.patch +Patch0: 0001-fix-cpu-compatibility.patch Patch1: 0002-SLE15-SP3-compatibility-patch-for-kni.patch -Patch2: kni-fix-build-with-Linux-5.18.patch BuildRequires: binutils BuildRequires: doxygen BuildRequires: fdupes BuildRequires: kernel-syms BuildRequires: libfdt-devel -BuildRequires: meson >= 0.49.2 +BuildRequires: meson >= 0.53.2 BuildRequires: modutils BuildRequires: patchelf BuildRequires: pesign-obs-integration @@ -164,7 +163,6 @@ as L2 and L3 forwarding. Summary: DPDK KNI kernel module %{summary_tag} Group: System/Kernel BuildRequires: %{kernel_module_package_buildreqs} -Conflicts: dpdk-any-kmp %suse_kernel_module_package -p %{_sourcedir}/preamble pae 64kb %description kmp @@ -189,7 +187,7 @@ sed -i "/performance-thread/d" examples/meson.build %define _vpath_builddir "build-%{_target_cpu}-$flavor" %ifarch x86_64 -export CFLAGS="%{optflags} -msse4" +export CFLAGS="%{optflags} -U_FORTIFY_SOURCE -msse4" %endif examples="all" for flavor in %{flavors_to_build}; do @@ -236,7 +234,15 @@ mv %{buildroot}/lib/modules %{buildroot}%{_prefix}/lib # Fix documentation mkdir -p %{buildroot}%docdir mv %{buildroot}%{_datadir}/doc/dpdk %{buildroot}%docdir -find %{buildroot}%docdir -name .doctrees | xargs rm -r # cleanup Sphinx leftovers + +# driver .so files often depend upon the bus drivers for their connect bus, +# e.g. ixgbe depends on librte_bus_pci. This means that the bus drivers need +# to be in the library path, so symlink the drivers from the main lib directory +# Fix broken symlink created by buildtools/symlink-drivers-solibs.sh +for f in %{buildroot}/%{pmddir}/*.so.*; do + bn=$(basename ${f}) + ln -s %{pmddir}/${bn} %{buildroot}%{_libdir}/${bn} +done %if ! %{with tools} # Remove tools if not needed diff --git a/kni-fix-build-with-Linux-5.18.patch b/kni-fix-build-with-Linux-5.18.patch deleted file mode 100644 index 0cfda4b..0000000 --- a/kni-fix-build-with-Linux-5.18.patch +++ /dev/null @@ -1,49 +0,0 @@ -From: Jiri Slaby -Date: Wed, 25 May 2022 12:04:10 +0200 -Subject: kni: fix build with Linux 5.18 -Patch-mainline: Submitted 2022/05/25, 20220525102641.20982-1-jslaby@suse.cz -References: kernel 5.18 - -Since commit 2655926aea9b (net: Remove netif_rx_any_context() and -netif_rx_ni().) in 5.18, netif_rx_ni() no longer exists as netif_rx() -can be called from any context. So define HAVE_NETIF_RX_NI for older -releases and call the appropriate function in kni_net. - -Cc: stable@dpdk.org -Signed-off-by: Jiri Slaby ---- - kernel/linux/kni/compat.h | 4 ++++ - kernel/linux/kni/kni_net.c | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h -index 664785674ff1..a81846a8a895 100644 ---- a/kernel/linux/kni/compat.h -+++ b/kernel/linux/kni/compat.h -@@ -141,3 +141,7 @@ - #if KERNEL_VERSION(5, 9, 0) > LINUX_VERSION_CODE - #define HAVE_TSK_IN_GUP - #endif -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0) -+#define HAVE_NETIF_RX_NI -+#endif -diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c -index 29e5b9e21f9e..a8b092b7567d 100644 ---- a/kernel/linux/kni/kni_net.c -+++ b/kernel/linux/kni/kni_net.c -@@ -441,7 +441,11 @@ kni_net_rx_normal(struct kni_dev *kni) - skb->ip_summed = CHECKSUM_UNNECESSARY; - - /* Call netif interface */ -+#ifdef HAVE_NETIF_RX_NI - netif_rx_ni(skb); -+#else -+ netif_rx(skb); -+#endif - - /* Update statistics */ - dev->stats.rx_bytes += len; --- -2.36.1 - diff --git a/preamble b/preamble index e568a07..815b8d5 100644 --- a/preamble +++ b/preamble @@ -1,3 +1,4 @@ Requires: kernel-%1 Enhances: kernel-%1 Supplements: packageand(kernel-%1:%{-n*}) +Conflicts: dpdk-any-kmp