Skip to content

Commit

Permalink
prov/efa: Call efa_fork_support_enable_if_requested earlier
Browse files Browse the repository at this point in the history
efa_hmem_info_initialize calls ibv_reg_mr to test for p2p
support.

On older kernels (without support for IBV_FORK_UNNEEDED),
efa_fork_support_enable_if_requested calls ibv_fork_init,
when fork support is requested.

If ibv_fork_init is called, it must be called before any
ibv_reg_mr calls. Otherwise, ibv_fork_init will return
EINVAL.

Therefore, efa_fork_support_enable_if_requested must be called
before efa_hmem_info_initialize.

Signed-off-by: Sai Sunku <sunkusa@amazon.com>
  • Loading branch information
sunkuamzn committed Feb 11, 2025
1 parent 1d50460 commit 66e38e5
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions prov/efa/src/efa_prov.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,23 @@ EFA_INI
*/
efa_env_initialize();

/*
* efa_fork_support_enable_if_requested must be called before
* efa_hmem_info_initialize.
*
* efa_hmem_info_initialize calls ibv_reg_mr to test for p2p support.
*
* On older kernels (without support for IBV_FORK_UNNEEDED),
* efa_fork_support_enable_if_requested calls ibv_fork_init,
* when fork support is requested.
*
* If ibv_fork_init is called, it must be called before any
* ibv_reg_mr calls. Otherwise, ibv_fork_init will return EINVAL.
*/
err = efa_fork_support_enable_if_requested();
if (err)
goto err_free;

err = efa_hmem_info_initialize();
if (err)
goto err_free;
Expand All @@ -213,11 +230,6 @@ EFA_INI
if (err)
goto err_free;

err = efa_fork_support_enable_if_requested();
if (err) {
goto err_free;
}

dlist_init(&g_efa_domain_list);

return &efa_prov;
Expand Down

0 comments on commit 66e38e5

Please sign in to comment.