Rebase to 23.11
Use -Denable_libs, update internal dependencies (vhost requires cryptodev and dmadev, net/iavf requires security). Filter generated manuals and package them in the -devel rpm. Note: - switched to https URIs, - mandb is hidden through the build to avoid a call to it in the buildroot, - documentation artefacts were not correctly removed from the buildroot, - net/mlx4 has been disabled since it is not supported anymore, - a leftover patch from 21.11 support is removed, Resolves: RHEL-19571 Signed-off-by: David Marchand <david.marchand@redhat.com>
This commit is contained in:
parent
54f868467a
commit
9e2f315c92
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,3 +13,4 @@
|
||||
/dpdk-21.11.1.tar.xz
|
||||
/dpdk-21.11.2.tar.xz
|
||||
/dpdk-22.11.tar.xz
|
||||
/dpdk-23.11.tar.xz
|
||||
|
@ -1,135 +0,0 @@
|
||||
From 3812e23f6b19d7e1e850094d1a5a04b7403d194f Mon Sep 17 00:00:00 2001
|
||||
From: David Marchand <david.marchand@redhat.com>
|
||||
Date: Tue, 13 Dec 2022 10:18:37 +0100
|
||||
Subject: [PATCH] net/i40e: revert link status check on device start
|
||||
|
||||
[ upstream commit a8ca8edf8c076c765c6d142ab4664a1f61414233 ]
|
||||
|
||||
The mentioned changes broke existing applications when the link status
|
||||
of i40e ports is down at the time the port is started.
|
||||
Revert those changes, the original issue will need a different fix.
|
||||
|
||||
Fixes: a4ba77367923 ("net/i40e: enable maximum frame size at port level")
|
||||
Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level")
|
||||
Fixes: 719469f13b11 ("net/i40e: fix jumbo frame Rx with X722")
|
||||
|
||||
Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2173794
|
||||
Signed-off-by: David Marchand <david.marchand@redhat.com>
|
||||
Acked-by: Simei Su <simei.su@intel.com>
|
||||
---
|
||||
drivers/net/i40e/i40e_ethdev.c | 50 +++++-----------------------------
|
||||
1 file changed, 7 insertions(+), 43 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
|
||||
index 7726a89d99..a982e42264 100644
|
||||
--- a/drivers/net/i40e/i40e_ethdev.c
|
||||
+++ b/drivers/net/i40e/i40e_ethdev.c
|
||||
@@ -387,7 +387,6 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,
|
||||
struct rte_ether_addr *mac_addr);
|
||||
|
||||
static int i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
|
||||
-static void i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size);
|
||||
|
||||
static int i40e_ethertype_filter_convert(
|
||||
const struct rte_eth_ethertype_filter *input,
|
||||
@@ -1711,6 +1710,11 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
|
||||
*/
|
||||
i40e_add_tx_flow_control_drop_filter(pf);
|
||||
|
||||
+ /* Set the max frame size to 0x2600 by default,
|
||||
+ * in case other drivers changed the default value.
|
||||
+ */
|
||||
+ i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL);
|
||||
+
|
||||
/* initialize RSS rule list */
|
||||
TAILQ_INIT(&pf->rss_config_list);
|
||||
|
||||
@@ -2328,7 +2332,6 @@ i40e_dev_start(struct rte_eth_dev *dev)
|
||||
uint32_t intr_vector = 0;
|
||||
struct i40e_vsi *vsi;
|
||||
uint16_t nb_rxq, nb_txq;
|
||||
- uint16_t max_frame_size;
|
||||
|
||||
hw->adapter_stopped = 0;
|
||||
|
||||
@@ -2467,9 +2470,6 @@ i40e_dev_start(struct rte_eth_dev *dev)
|
||||
"please call hierarchy_commit() "
|
||||
"before starting the port");
|
||||
|
||||
- max_frame_size = dev->data->mtu + I40E_ETH_OVERHEAD;
|
||||
- i40e_set_mac_max_frame(dev, max_frame_size);
|
||||
-
|
||||
return I40E_SUCCESS;
|
||||
|
||||
tx_err:
|
||||
@@ -2809,9 +2809,6 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev)
|
||||
return i40e_phy_conf_link(hw, abilities, speed, false);
|
||||
}
|
||||
|
||||
-#define CHECK_INTERVAL 100 /* 100ms */
|
||||
-#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */
|
||||
-
|
||||
static __rte_always_inline void
|
||||
update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link)
|
||||
{
|
||||
@@ -2878,6 +2875,8 @@ static __rte_always_inline void
|
||||
update_link_aq(struct i40e_hw *hw, struct rte_eth_link *link,
|
||||
bool enable_lse, int wait_to_complete)
|
||||
{
|
||||
+#define CHECK_INTERVAL 100 /* 100ms */
|
||||
+#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */
|
||||
uint32_t rep_cnt = MAX_REPEAT_TIME;
|
||||
struct i40e_link_status link_status;
|
||||
int status;
|
||||
@@ -6738,7 +6737,6 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev)
|
||||
if (!ret)
|
||||
rte_eth_dev_callback_process(dev,
|
||||
RTE_ETH_EVENT_INTR_LSC, NULL);
|
||||
-
|
||||
break;
|
||||
default:
|
||||
PMD_DRV_LOG(DEBUG, "Request %u is not supported yet",
|
||||
@@ -12123,40 +12121,6 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
|
||||
return ret;
|
||||
}
|
||||
|
||||
-static void
|
||||
-i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size)
|
||||
-{
|
||||
- struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
|
||||
- uint32_t rep_cnt = MAX_REPEAT_TIME;
|
||||
- struct rte_eth_link link;
|
||||
- enum i40e_status_code status;
|
||||
- bool can_be_set = true;
|
||||
-
|
||||
- /*
|
||||
- * I40E_MEDIA_TYPE_BASET link up can be ignored
|
||||
- * I40E_MEDIA_TYPE_BASET link down that hw->phy.media_type
|
||||
- * is I40E_MEDIA_TYPE_UNKNOWN
|
||||
- */
|
||||
- if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET &&
|
||||
- hw->phy.media_type != I40E_MEDIA_TYPE_UNKNOWN) {
|
||||
- do {
|
||||
- update_link_reg(hw, &link);
|
||||
- if (link.link_status)
|
||||
- break;
|
||||
- rte_delay_ms(CHECK_INTERVAL);
|
||||
- } while (--rep_cnt);
|
||||
- can_be_set = !!link.link_status;
|
||||
- }
|
||||
-
|
||||
- if (can_be_set) {
|
||||
- status = i40e_aq_set_mac_config(hw, size, TRUE, 0, false, NULL);
|
||||
- if (status != I40E_SUCCESS)
|
||||
- PMD_DRV_LOG(ERR, "Failed to set max frame size at port level");
|
||||
- } else {
|
||||
- PMD_DRV_LOG(ERR, "Set max frame size at port level not applicable on link down");
|
||||
- }
|
||||
-}
|
||||
-
|
||||
RTE_LOG_REGISTER_SUFFIX(i40e_logtype_init, init, NOTICE);
|
||||
RTE_LOG_REGISTER_SUFFIX(i40e_logtype_driver, driver, NOTICE);
|
||||
#ifdef RTE_ETHDEV_DEBUG_RX
|
||||
--
|
||||
2.39.2
|
||||
|
@ -1,34 +0,0 @@
|
||||
From 8010a15523e896ca2f2436432602210cab793f87 Mon Sep 17 00:00:00 2001
|
||||
From: David Marchand <david.marchand@redhat.com>
|
||||
Date: Mon, 25 Jul 2022 22:32:03 +0200
|
||||
Subject: [PATCH] vhost: fix virtqueue use after free on NUMA reallocation
|
||||
|
||||
[ upstream commit 0b2a2ca35037d6a5168f0832c11d9858b8ae946a ]
|
||||
|
||||
translate_ring_addresses (via numa_realloc) may change a virtio device and
|
||||
virtio queue.
|
||||
The virtqueue object must be refreshed before accessing the lock.
|
||||
|
||||
Fixes: 04c27cb673b9 ("vhost: fix unsafe vring addresses modifications")
|
||||
|
||||
Signed-off-by: David Marchand <david.marchand@redhat.com>
|
||||
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
|
||||
---
|
||||
lib/vhost/vhost_user.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/lib/vhost/vhost_user.c b/lib/vhost/vhost_user.c
|
||||
index df780fd7d6..2b45e35d4a 100644
|
||||
--- a/lib/vhost/vhost_user.c
|
||||
+++ b/lib/vhost/vhost_user.c
|
||||
@@ -2575,6 +2575,7 @@ vhost_user_iotlb_msg(struct virtio_net **pdev, struct VhostUserMsg *msg,
|
||||
if (is_vring_iotlb(dev, vq, imsg)) {
|
||||
rte_spinlock_lock(&vq->access_lock);
|
||||
*pdev = dev = translate_ring_addresses(dev, i);
|
||||
+ vq = dev->virtqueue[i];
|
||||
rte_spinlock_unlock(&vq->access_lock);
|
||||
}
|
||||
}
|
||||
--
|
||||
2.37.3
|
||||
|
86
README
86
README
@ -1,86 +0,0 @@
|
||||
The RH DPDK Configuration System
|
||||
================================
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
As we're aware, the DPDK configuration is an important thing to manage
|
||||
well. We have a number of concerns that must be addressed in any
|
||||
configuration management system.
|
||||
|
||||
1. We want to make sure that we have 'conscious' configurations made up
|
||||
for each platform, and for each DPDK-enabled package
|
||||
2. We want to make sure that when DPDK project adds a new configuration,
|
||||
we make a conscious decision about whether we enable that
|
||||
configuration.
|
||||
3. We need to make sure that we can accommodate the wacky new
|
||||
configuration management system coming down the pipe for
|
||||
DPDK (meson+ninja).
|
||||
|
||||
|
||||
Procedure (High level)
|
||||
----------------------
|
||||
|
||||
Taking some inspiration from the kernel config DPDK packages will use
|
||||
the following procedure:
|
||||
|
||||
1. We generate the DPDK configuration from source (as we do today with
|
||||
'make T=TEMPLATE config'). This creates a base configuration file.
|
||||
In this case TEMPLATE is the combination of $arch and $release that
|
||||
can vary for the package.
|
||||
2. We generate a sha256 sum from that file (based on a rules engine
|
||||
described later).
|
||||
3. We take a hand-built checked-in configuration (dpdk.TEMPLATE.config)
|
||||
which has a special tag inside containing the required base sha256
|
||||
sum and compare with the generated sha256 sum.
|
||||
4. If the comparison succeeds, we overwrite the generated config with
|
||||
the hand-built config. Proceed building as normal.
|
||||
5. If the comparison fails, we halt the build. Clearly a new
|
||||
configuration was introduced which was not considered and needs to be
|
||||
addressed.
|
||||
|
||||
It's important to note that if the default configuration changes, that
|
||||
will also cause the shasum to change. Even if the default for a
|
||||
parameter that we override changes, this will trip up this simplistic
|
||||
version.
|
||||
|
||||
|
||||
SHA Sum
|
||||
-------
|
||||
|
||||
To generate the sha256 sum:
|
||||
* remove all 'comment' and empty lines
|
||||
* sort the remaining lines
|
||||
* calculate the sha sum
|
||||
|
||||
This is expressed in bash as a one-liner:
|
||||
|
||||
egrep -v ^"$cmnt" $1 | egrep -v ^$ | sort -u | sha256sum | cut -d" " -f1
|
||||
|
||||
The new DPDK configuration will be generating into a header file
|
||||
(rte_config.h), and so some 'forward' consideration was given to making
|
||||
the comment line as configurable (instead of using straight '#') - hence the
|
||||
'$cmnt' variable.
|
||||
|
||||
The SHA sum will be identified in the 'new' header by the standard ascii
|
||||
tag format:
|
||||
|
||||
# -*- cfg-sha: [a-z0-9]+
|
||||
|
||||
Or in the case of a .c file:
|
||||
/* -*- cfg-sha: [a-z0-9]+ */
|
||||
|
||||
|
||||
Helper scripts
|
||||
--------------
|
||||
|
||||
Included are a set of scripts for DPDK configuration, which replaces
|
||||
the original setconf functions in the old spec file.
|
||||
|
||||
* set_config.sh - A script which copies the new DPDK configuration over the
|
||||
old one. This validates the sha sum.
|
||||
* gen_config_group.sh - A script which reads the .spec file for all of the
|
||||
architectures and generates starting configurations.
|
||||
Use this script to get a baseline configuration for
|
||||
modifying.
|
||||
* configlib.sh - A library for generating and reading SHA sums.
|
89
dpdk.spec
89
dpdk.spec
@ -8,8 +8,8 @@
|
||||
#% define date 20191128
|
||||
#% define shortcommit0 %(c=%{commit0}; echo ${c:0:7})
|
||||
|
||||
%define ver 22.11
|
||||
%define rel 4
|
||||
%define ver 23.11
|
||||
%define rel 1
|
||||
|
||||
%define srcname dpdk%(awk -F. '{ if (NF > 2) print "-stable" }' <<<%{version})
|
||||
|
||||
@ -23,16 +23,14 @@ Epoch: 2
|
||||
%endif
|
||||
URL: http://dpdk.org
|
||||
%if 0%{?commit0:1}
|
||||
Source: http://dpdk.org/browse/dpdk/snapshot/dpdk-%{commit0}.tar.xz
|
||||
Source: https://dpdk.org/browse/dpdk/snapshot/dpdk-%{commit0}.tar.xz
|
||||
%else
|
||||
Source: http://fast.dpdk.org/rel/dpdk-%{ver}.tar.xz
|
||||
Source: https://fast.dpdk.org/rel/dpdk-%{ver}.tar.xz
|
||||
%endif
|
||||
|
||||
# Only needed for creating snapshot tarballs, not used in build itself
|
||||
Source100: dpdk-snapshot.sh
|
||||
|
||||
Patch1: 0001-net-i40e-revert-link-status-check-on-device-start.patch
|
||||
|
||||
Summary: Set of libraries and drivers for fast packet processing
|
||||
|
||||
#
|
||||
@ -153,11 +151,11 @@ ENABLED_DRIVERS+=(
|
||||
bus/vmbus
|
||||
common/iavf
|
||||
common/mlx5
|
||||
common/nfp
|
||||
net/bnxt
|
||||
net/enic
|
||||
net/iavf
|
||||
net/ice
|
||||
net/mlx4
|
||||
net/mlx5
|
||||
net/netvsc
|
||||
net/nfp
|
||||
@ -177,48 +175,40 @@ for driver in "${ENABLED_DRIVERS[@]}"; do
|
||||
enable_drivers="${enable_drivers:+$enable_drivers,}"$driver
|
||||
done
|
||||
|
||||
# As of 22.11, following libraries can be disabled:
|
||||
# optional_libs = [
|
||||
# 'bitratestats',
|
||||
# 'cfgfile',
|
||||
# 'flow_classify',
|
||||
# 'gpudev',
|
||||
# 'gro',
|
||||
# 'gso',
|
||||
# 'kni',
|
||||
# 'jobstats',
|
||||
# 'latencystats',
|
||||
# 'metrics',
|
||||
# 'node',
|
||||
# 'pdump',
|
||||
# 'pipeline',
|
||||
# 'port',
|
||||
# 'power',
|
||||
# 'table',
|
||||
# 'vhost',
|
||||
# ]
|
||||
# If doing any updates, this must be aligned with:
|
||||
# https://access.redhat.com/articles/3538141
|
||||
DISABLED_LIBS=(
|
||||
cfgfile
|
||||
flow_classify
|
||||
gpudev
|
||||
kni
|
||||
jobstats
|
||||
node
|
||||
pipeline
|
||||
port
|
||||
power
|
||||
table
|
||||
ENABLED_LIBS=(
|
||||
bbdev
|
||||
bitratestats
|
||||
bpf
|
||||
cmdline
|
||||
cryptodev
|
||||
dmadev
|
||||
gro
|
||||
gso
|
||||
hash
|
||||
ip_frag
|
||||
latencystats
|
||||
member
|
||||
meter
|
||||
metrics
|
||||
pcapng
|
||||
pdump
|
||||
security
|
||||
stack
|
||||
vhost
|
||||
)
|
||||
|
||||
for lib in "${DISABLED_LIBS[@]}"; do
|
||||
disable_libs="${disable_libs:+$disable_libs,}"$lib
|
||||
for lib in "${ENABLED_LIBS[@]}"; do
|
||||
enable_libs="${enable_libs:+$enable_libs,}"$lib
|
||||
done
|
||||
|
||||
ln -s /usr/bin/true mandb
|
||||
export PATH=$(pwd):$PATH
|
||||
%meson --includedir=include/dpdk \
|
||||
--default-library=shared \
|
||||
-Ddisable_libs="$disable_libs" \
|
||||
-Ddeveloper_mode=disabled \
|
||||
-Denable_libs="$enable_libs" \
|
||||
-Ddrivers_install_subdir=dpdk-pmds \
|
||||
-Denable_apps="$enable_apps" \
|
||||
-Denable_docs=true \
|
||||
@ -235,10 +225,10 @@ for driver in "${ENABLED_DRIVERS[@]}"; do
|
||||
echo "!!! Could not find $driver in rte_build_config.h, please check dependencies. !!!"
|
||||
false
|
||||
done
|
||||
for lib in "${DISABLED_LIBS[@]}"; do
|
||||
for lib in "${ENABLED_LIBS[@]}"; do
|
||||
config_token="RTE_LIB_$(echo "$lib" | tr [a-z/] [A-Z_])"
|
||||
grep -Fqw "$config_token" */rte_build_config.h || continue
|
||||
echo "!!! Found $lib in rte_build_config.h. !!!"
|
||||
! grep -Fqw "$config_token" */rte_build_config.h || continue
|
||||
echo "!!! Could not find $lib in rte_build_config.h, please check dependencies. !!!"
|
||||
false
|
||||
done
|
||||
%meson_build
|
||||
@ -248,9 +238,10 @@ done
|
||||
|
||||
rm -f %{buildroot}%{_libdir}/*.a
|
||||
# Taken from debian/rules
|
||||
rm -f %{docdir}/html/.buildinfo
|
||||
rm -f %{docdir}/html/objects.inv
|
||||
rm -rf %{docdir}/html/.doctrees
|
||||
rm -f %{buildroot}%{docdir}/html/.buildinfo
|
||||
rm -f %{buildroot}%{docdir}/html/objects.inv
|
||||
rm -rf %{buildroot}%{docdir}/html/.doctrees
|
||||
find %{buildroot}%{_datadir}/man/ -type f -a ! -iname "*rte_*" -exec rm {} \;
|
||||
|
||||
%files
|
||||
# BSD
|
||||
@ -281,6 +272,7 @@ rm -rf %{docdir}/html/.doctrees
|
||||
%{pmddir}/*.so
|
||||
%{_libdir}/pkgconfig/libdpdk.pc
|
||||
%{_libdir}/pkgconfig/libdpdk-libs.pc
|
||||
%{_datadir}/man
|
||||
%if %{with examples}
|
||||
%files examples
|
||||
%{_bindir}/dpdk-*
|
||||
@ -293,6 +285,9 @@ rm -rf %{docdir}/html/.doctrees
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Dec 15 2023 David Marchand <david.marchand@redhat.com> - 23.11-1
|
||||
- Rebase to 23.11 (RHEL-19571)
|
||||
|
||||
* Tue Apr 11 2023 David Marchand <david.marchand@redhat.com> - 22.11-4
|
||||
- Fix MTU regression for net/i40e (#2182799)
|
||||
|
||||
|
2
sources
2
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (dpdk-22.11.tar.xz) = 69dff391bf619c6fa206d856fe85450629046554c7759707b20a862ac66ab40f2c22e485dc41160886be2cdfc0f779c16796235639817dadc3c0844ae9565f59
|
||||
SHA512 (dpdk-23.11.tar.xz) = e5177d658fca8df55090a92ea1a8932aac5847314fed7c686b8a36e709f34b14c05e68d6c4c433ff5371b67a39c4324b4eefab8c138f417468f57092bf269b4c
|
||||
SHA512 (pyelftools-0.27.tar.gz) = bb0a00e5500016e3d4f64be0a728e190f84b11a805f78d668b5a74716a30400e6794946f198ef4a3f3b8f64a63deb1b5a96180b09e56b7357b988b28e25fad0a
|
||||
|
Loading…
Reference in New Issue
Block a user