patch 'net/mlx5: fix fast-path ops setup in secondary process' has been queued to stable release 24.11.5
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Thu Mar 19 23:02:32 CET 2026
Hi,
FYI, your patch has been queued to stable release 24.11.5
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/21/26. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/f4d1e48a25ec39a645a1f7faad7316a984138fdb
Thanks.
Luca Boccassi
---
>From f4d1e48a25ec39a645a1f7faad7316a984138fdb Mon Sep 17 00:00:00 2001
From: Long Li <longli at microsoft.com>
Date: Thu, 26 Feb 2026 17:59:26 -0800
Subject: [PATCH] net/mlx5: fix fast-path ops setup in secondary process
[ upstream commit 36a34a5cb7569f6fa672fe7fed33a9be06c43ec8 ]
On hotplug, the secondary process is not able to set rte_eth_fp_ops
because the primary process has not finished setting up the device
for datapath.
When the primary process re-attaches a VF during a hot-add event
(e.g. Accelerated Networking re-enabled on Azure), it sends
MLX5_MP_REQ_START_RXTX to the secondary process. The secondary
handler sets rx/tx burst functions and reinitializes UAR mappings,
but does not update the fast-path queue data pointers. The stale
rxq.data and txq.data in rte_eth_fp_ops cause a segfault when the
secondary resumes polling the re-added VF port.
Fix this by setting rte_eth_fp_ops rxq.data and txq.data to point
to the device's RX/TX queue arrays in the secondary process when
the primary requests to start datapath, before the memory barrier.
Also update rte_eth_fp_ops burst function pointers in the STOP_RXTX
handler. Without this, the secondary's rte_eth_fp_ops retains stale
burst function pointers after stop, since rte_eth_fp_ops is
process-local and eth_dev_fp_ops_reset() in rte_eth_dev_stop() only
affects the primary.
Without this fix, the secondary process crashes with SIGSEGV in
rte_eth_rx_burst() at qd = p->rxq.data[queue_id] when the VF is
hot-added back.
Fixes: 2aac5b5d119f ("net/mlx5: sync stop/start with secondary process")
Signed-off-by: Long Li <longli at microsoft.com>
---
drivers/net/mlx5/linux/mlx5_mp_os.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/mlx5/linux/mlx5_mp_os.c b/drivers/net/mlx5/linux/mlx5_mp_os.c
index f2e71c9bd4..ca7b1cfa97 100644
--- a/drivers/net/mlx5/linux/mlx5_mp_os.c
+++ b/drivers/net/mlx5/linux/mlx5_mp_os.c
@@ -189,6 +189,10 @@ struct rte_mp_msg mp_res;
}
}
close(mp_msg->fds[0]);
+ rte_eth_fp_ops[param->port_id].rx_pkt_burst = dev->rx_pkt_burst;
+ rte_eth_fp_ops[param->port_id].tx_pkt_burst = dev->tx_pkt_burst;
+ rte_eth_fp_ops[param->port_id].rxq.data = dev->data->rx_queues;
+ rte_eth_fp_ops[param->port_id].txq.data = dev->data->tx_queues;
rte_mb();
mp_init_msg(&priv->mp_id, &mp_res, param->type);
res->result = 0;
@@ -198,6 +202,8 @@ struct rte_mp_msg mp_res;
DRV_LOG(INFO, "port %u stopping datapath", dev->data->port_id);
dev->rx_pkt_burst = rte_eth_pkt_burst_dummy;
dev->tx_pkt_burst = rte_eth_pkt_burst_dummy;
+ rte_eth_fp_ops[param->port_id].rx_pkt_burst = rte_eth_pkt_burst_dummy;
+ rte_eth_fp_ops[param->port_id].tx_pkt_burst = rte_eth_pkt_burst_dummy;
rte_mb();
mp_init_msg(&priv->mp_id, &mp_res, param->type);
res->result = 0;
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-03-19 22:00:49.249563849 +0000
+++ 0040-net-mlx5-fix-fast-path-ops-setup-in-secondary-proces.patch 2026-03-19 22:00:47.810359366 +0000
@@ -1 +1 @@
-From 36a34a5cb7569f6fa672fe7fed33a9be06c43ec8 Mon Sep 17 00:00:00 2001
+From f4d1e48a25ec39a645a1f7faad7316a984138fdb Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 36a34a5cb7569f6fa672fe7fed33a9be06c43ec8 ]
+
@@ -33 +34,0 @@
-Cc: stable at dpdk.org
More information about the stable
mailing list