On Tue, May 01, 2018 at 11:13:20PM -0700, Yongseok Koh wrote:
> 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>
Acked-by: Nelio Laranjeiro <nelio.laranje...@6wind.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
> 

-- 
Nélio Laranjeiro
6WIND

Reply via email to