rte_eth_devices[] is not shared between primary and secondary process, but a static array to each process. The backward pointer of device (priv->dev) must be reset when a secondary process attaches to a device.
Fixes: f8b9a3bad467 ("net/mlx5: install a socket to exchange a file descriptor") Cc: sta...@dpdk.org Signed-off-by: Yongseok Koh <ys...@mellanox.com> --- drivers/net/mlx5/mlx5.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 8f983061a..f606e3dd4 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -799,6 +799,12 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, } eth_dev->device = &pci_dev->device; eth_dev->dev_ops = &mlx5_dev_sec_ops; + /* + * rte_eth_devices[] is not shared but static to each + * process. The backward pointer should be reset. + */ + priv = eth_dev->data->dev_private; + priv->dev = eth_dev; err = mlx5_uar_init_secondary(eth_dev); if (err) goto error; -- 2.11.0