mismatch of device attribute size restricts max_lmr_block_size to 32 bit value. Add check, if larger then limit to 4G-1 until DAT v2 spec changes.
Consumers will need check max_lmr_virtual_address for actual max registration block size until attribute interface changes. Signed-off-by: Arlin Davis <[email protected]> --- dapl/openib_cma/dapl_ib_util.c | 9 ++++++--- dapl/openib_scm/dapl_ib_util.c | 13 ++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dapl/openib_cma/dapl_ib_util.c b/dapl/openib_cma/dapl_ib_util.c index 1545d78..3b83ab8 100755 --- a/dapl/openib_cma/dapl_ib_util.c +++ b/dapl/openib_cma/dapl_ib_util.c @@ -553,7 +553,9 @@ DAT_RETURN dapls_ib_query_hca(IN DAPL_HCA * hca_ptr, ia_attr->max_evd_qlen = dev_attr.max_cqe; ia_attr->max_iov_segments_per_dto = dev_attr.max_sge; ia_attr->max_lmrs = dev_attr.max_mr; - ia_attr->max_lmr_block_size = dev_attr.max_mr_size; + /* 32bit attribute from 64bit, 4G-1 limit, DAT v2 needs fix */ + ia_attr->max_lmr_block_size = + (dev_attr.max_mr_size >> 32) ? ~0 : dev_attr.max_mr_size; ia_attr->max_rmrs = dev_attr.max_mw; ia_attr->max_lmr_virtual_address = dev_attr.max_mr_size; ia_attr->max_rmr_target_address = dev_attr.max_mr_size; @@ -583,10 +585,11 @@ DAT_RETURN dapls_ib_query_hca(IN DAPL_HCA * hca_ptr, #endif dapl_log(DAPL_DBG_TYPE_UTIL, "dapl_query_hca: (ver=%x) ep's %d ep_q %d" - " evd's %d evd_q %d\n", + " evd's %d evd_q %d mr %u\n", ia_attr->hardware_version_major, ia_attr->max_eps, ia_attr->max_dto_per_ep, - ia_attr->max_evds, ia_attr->max_evd_qlen); + ia_attr->max_evds, ia_attr->max_evd_qlen, + ia_attr->max_lmr_block_size); dapl_log(DAPL_DBG_TYPE_UTIL, "dapl_query_hca: msg %llu rdma %llu iov's %d" " lmr %d rmr %d rd_in,out %d,%d inline=%d\n", diff --git a/dapl/openib_scm/dapl_ib_util.c b/dapl/openib_scm/dapl_ib_util.c index 13c07c9..c95b0c2 100644 --- a/dapl/openib_scm/dapl_ib_util.c +++ b/dapl/openib_scm/dapl_ib_util.c @@ -546,7 +546,9 @@ DAT_RETURN dapls_ib_query_hca(IN DAPL_HCA * hca_ptr, ia_attr->max_evd_qlen = dev_attr.max_cqe; ia_attr->max_iov_segments_per_dto = dev_attr.max_sge; ia_attr->max_lmrs = dev_attr.max_mr; - ia_attr->max_lmr_block_size = dev_attr.max_mr_size; + /* 32bit attribute from 64bit, 4G-1 limit, DAT v2 needs fix */ + ia_attr->max_lmr_block_size = + (dev_attr.max_mr_size >> 32) ? ~0 : dev_attr.max_mr_size; ia_attr->max_rmrs = dev_attr.max_mw; ia_attr->max_lmr_virtual_address = dev_attr.max_mr_size; ia_attr->max_rmr_target_address = dev_attr.max_mr_size; @@ -574,7 +576,7 @@ DAT_RETURN dapls_ib_query_hca(IN DAPL_HCA * hca_ptr, hca_ptr->ib_trans.named_attr.value = dapl_ib_mtu_str(hca_ptr->ib_trans.mtu); - dapl_dbg_log(DAPL_DBG_TYPE_UTIL, + dapl_log(DAPL_DBG_TYPE_UTIL, " query_hca: (%x.%x) ep %d ep_q %d evd %d" " evd_q %d mtu %d\n", ia_attr->hardware_version_major, @@ -583,13 +585,14 @@ DAT_RETURN dapls_ib_query_hca(IN DAPL_HCA * hca_ptr, ia_attr->max_evds, ia_attr->max_evd_qlen, 128 << hca_ptr->ib_trans.mtu); - dapl_dbg_log(DAPL_DBG_TYPE_UTIL, + dapl_log(DAPL_DBG_TYPE_UTIL, " query_hca: msg %llu rdma %llu iov %d lmr %d rmr %d" - " ack_time %d\n", + " ack_time %d mr %u\n", ia_attr->max_message_size, ia_attr->max_rdma_size, ia_attr->max_iov_segments_per_dto, ia_attr->max_lmrs, ia_attr->max_rmrs, - hca_ptr->ib_trans.ack_timer); + hca_ptr->ib_trans.ack_timer, + ia_attr->max_lmr_block_size); } if (ep_attr != NULL) { -- 1.5.2.5 _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
