diff --git a/src/uct/ib/base/ib_md.h b/src/uct/ib/base/ib_md.h index c98f3aff443..7734eb7a810 100644 --- a/src/uct/ib/base/ib_md.h +++ b/src/uct/ib/base/ib_md.h @@ -73,6 +73,8 @@ enum { #endif UCT_IB_MEM_FLAG_GVA = UCS_BIT(5), /**< The memory handle is a GVA region */ + UCT_IB_MEM_DIRECT_NIC = UCS_BIT(6), /**< The memory handle was + registered using Direct NIC */ }; enum { diff --git a/src/uct/ib/mlx5/dv/ib_mlx5dv_md.c b/src/uct/ib/mlx5/dv/ib_mlx5dv_md.c index 08a7a9e28f5..7925c4b6308 100644 --- a/src/uct/ib/mlx5/dv/ib_mlx5dv_md.c +++ b/src/uct/ib/mlx5/dv/ib_mlx5dv_md.c @@ -856,6 +856,7 @@ uct_ib_mlx5_devx_reg_mr(uct_ib_mlx5_md_t *md, uct_ib_mlx5_devx_mem_t *memh, length, params, access_flags); if (memh->mrs[mr_type].super.ib != NULL) { + memh->super.flags |= UCT_IB_MEM_DIRECT_NIC; goto out; } @@ -2946,6 +2947,7 @@ uct_ib_mlx5_devx_mkey_pack(uct_md_h uct_md, uct_mem_h uct_memh, ((memh->super.flags & UCT_IB_MEM_ACCESS_REMOTE_ATOMIC) || uct_ib_mlx5_devx_memh_has_ro(md, memh)) && !(memh->super.flags & UCT_IB_MEM_IMPORTED) && + !(memh->super.flags & UCT_IB_MEM_DIRECT_NIC) && md->super.config.enable_indirect_atomic && ucs_test_all_flags(md->flags, UCT_IB_MLX5_MD_FLAG_KSM |