Dominique Leuenberger 2023-04-14 11:12:12 +00:00 committed by Git OBS Bridge
commit a5d617715e
9 changed files with 161 additions and 104 deletions

View File

@ -1,38 +0,0 @@
From 4034cebe2d0c36d8762fb4c06ba216b17f308e22 Mon Sep 17 00:00:00 2001
From: Ferdinand Thiessen <rpm@fthiessen.de>
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 <rpm@fthiessen.de>
---
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

View File

@ -0,0 +1,69 @@
From e2950fec9cd9c235a7847ed97b6914174857bf93 Mon Sep 17 00:00:00 2001
From: "mvarlese@suse.de" <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
/**

View File

@ -3,11 +3,17 @@ From: =?UTF-8?q?Jaime=20Caama=C3=B1o=20Ruiz?= <jcaamano@suse.com>
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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e0d1c442087ead6759d129ce7d7e3b87b4a01cd71047c621ebc35bb637027658
size 15115156

BIN
dpdk-22.11.1.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,3 +1,65 @@
-------------------------------------------------------------------
Wed Apr 5 21:10:54 UTC 2023 - Duraisankar P <Duraisankar.pitchumani@suse.com>
-- 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 <bwiedemann@suse.com>

View File

@ -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 <src>/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

View File

@ -1,49 +0,0 @@
From: Jiri Slaby <jslaby@suse.cz>
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 <jslaby@suse.cz>
---
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

View File

@ -1,3 +1,4 @@
Requires: kernel-%1
Enhances: kernel-%1
Supplements: packageand(kernel-%1:%{-n*})
Conflicts: dpdk-any-kmp