net/mlx5: register memory callback only when probing
authorDavid Marchand <david.marchand@6wind.com>
Wed, 30 May 2018 14:42:53 +0000 (16:42 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 30 May 2018 19:16:43 +0000 (21:16 +0200)
The callback should be invoked only for memory that has been registered
in a device, hence, no need to track cleanup events if no device is
present.

Bugzilla ID: 56
Fixes: 974f1e7ef146 ("net/mlx5: add new memory region support")

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/mlx5/mlx5.c

index 3ef02e2..c933e27 100644 (file)
@@ -137,6 +137,8 @@ mlx5_prepare_shared_data(void)
                        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_spinlock_unlock(&mlx5_shared_data_lock);
 }
@@ -1473,8 +1475,6 @@ rte_mlx5_pmd_init(void)
        }
        mlx5_glue->fork_init();
        rte_pci_register(&mlx5_driver);
-       rte_mem_event_callback_register("MLX5_MEM_EVENT_CB",
-                                       mlx5_mr_mem_event_cb, NULL);
 }
 
 RTE_PMD_EXPORT_NAME(net_mlx5, __COUNTER__);