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