Monday, March 25, 2019 9:16 PM, Yongseok Koh:
> Subject: [dpdk-dev] [PATCH v2 1/4] net/mlx5: fix memory event on
> secondary process
> 
> As the memory event is propagated to secondary processes, the event is
> processed redundantly. This should be processed once because the data
> structure used for MR and the event is global across the processes.
> 
> Fixes: 974f1e7ef146 ("net/mlx5: add new memory region support")
> Cc: sta...@dpdk.org
> 
> Signed-off-by: Yongseok Koh <ys...@mellanox.com>

Acked-by: Shahaf Shuler <shah...@mellanox.com>

> ---
>  drivers/net/mlx5/mlx5.c    | 5 +++--
>  drivers/net/mlx5/mlx5_mr.c | 2 ++
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index
> ae4b71695e..dd29eba955 100644
> --- a/drivers/net/mlx5/mlx5.c
> +++ b/drivers/net/mlx5/mlx5.c
> @@ -157,9 +157,10 @@ mlx5_prepare_shared_data(void)
>               if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
>                       LIST_INIT(&mlx5_shared_data-
> >mem_event_cb_list);
>                       rte_rwlock_init(&mlx5_shared_data-
> >mem_event_rwlock);
> +
>       rte_mem_event_callback_register("MLX5_MEM_EVENT_CB",
> +
>       mlx5_mr_mem_event_cb,
> +                                                     NULL);
>               }
> -
>       rte_mem_event_callback_register("MLX5_MEM_EVENT_CB",
> -                                             mlx5_mr_mem_event_cb,
> NULL);
>       }
>       rte_spinlock_unlock(&mlx5_shared_data_lock);
>  }
> diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c index
> 700d83d1bc..d336a77e40 100644
> --- a/drivers/net/mlx5/mlx5_mr.c
> +++ b/drivers/net/mlx5/mlx5_mr.c
> @@ -891,6 +891,8 @@ mlx5_mr_mem_event_cb(enum rte_mem_event
> event_type, const void *addr,
>       struct mlx5_priv *priv;
>       struct mlx5_dev_list *dev_list = &mlx5_shared_data-
> >mem_event_cb_list;
> 
> +     /* Must be called from the primary process. */
> +     assert(rte_eal_process_type() == RTE_PROC_PRIMARY);
>       switch (event_type) {
>       case RTE_MEM_EVENT_FREE:
>               rte_rwlock_write_lock(&mlx5_shared_data-
> >mem_event_rwlock);
> --
> 2.11.0

Reply via email to