Lines Matching refs:mr_rp

4476 	daplka_mr_resource_t	*mr_rp;
4484 mr_rp = (daplka_mr_resource_t *)arg1;
4485 rnum = DAPLKA_RS_RNUM(mr_rp);
4486 daplka_shared_mr_free(mr_rp);
4575 daplka_mr_resource_t *mr_rp;
4589 mr_rp = kmem_zalloc(sizeof (daplka_mr_resource_t), daplka_km_flags);
4590 if (mr_rp == NULL) {
4594 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*mr_rp))
4595 DAPLKA_RS_INIT(mr_rp, DAPL_TYPE_MR,
4598 mutex_init(&mr_rp->mr_lock, NULL, MUTEX_DRIVER, NULL);
4599 mr_rp->mr_hca = ia_rp->ia_hca;
4600 mr_rp->mr_hca_hdl = ia_rp->ia_hca_hdl;
4601 mr_rp->mr_next = NULL;
4602 mr_rp->mr_shared_mr = NULL;
4613 mr_rp->mr_pd_res = pd_rp;
4615 mr_rp->mr_attr.mr_vaddr = args.mr_vaddr;
4616 mr_rp->mr_attr.mr_len = args.mr_len;
4617 mr_rp->mr_attr.mr_as = curproc->p_as;
4618 mr_rp->mr_attr.mr_flags = args.mr_flags | IBT_MR_NOSLEEP;
4621 (void *)(uintptr_t)mr_rp->mr_attr.mr_vaddr,
4622 (longlong_t)mr_rp->mr_attr.mr_len,
4623 mr_rp->mr_attr.mr_flags);
4625 status = daplka_ibt_register_mr(mr_rp, ia_rp->ia_hca_hdl,
4626 mr_rp->mr_pd_res->pd_hdl, &mr_rp->mr_attr, &mr_rp->mr_hdl,
4627 &mr_rp->mr_desc);
4638 mr_cb_data_in.mr_arg1 = (void *)mr_rp;
4643 IBT_CI_NO_FLAGS, IBT_HDL_MR, (void *)mr_rp->mr_hdl,
4656 &mr_hkey, (void *)mr_rp);
4662 _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*mr_rp))
4664 args.mr_lkey = mr_rp->mr_desc.md_lkey;
4665 args.mr_rkey = mr_rp->mr_desc.md_rkey;
4683 if (free_rp != mr_rp) {
4692 DAPLKA_RS_UNREF(mr_rp);
4725 daplka_mr_resource_t *mr_rp = NULL;
4807 mr_rp = kmem_zalloc(sizeof (daplka_mr_resource_t), daplka_km_flags);
4808 if (mr_rp == NULL) {
4812 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*mr_rp))
4813 DAPLKA_RS_INIT(mr_rp, DAPL_TYPE_MR,
4816 mutex_init(&mr_rp->mr_lock, NULL, MUTEX_DRIVER, NULL);
4817 mr_rp->mr_hca = ia_rp->ia_hca;
4818 mr_rp->mr_hca_hdl = ia_rp->ia_hca_hdl;
4819 mr_rp->mr_next = NULL;
4820 mr_rp->mr_shared_mr = NULL;
4831 mr_rp->mr_pd_res = pd_rp;
4833 mr_rp->mr_attr.mr_vaddr = args.mrs_vaddr;
4834 mr_rp->mr_attr.mr_len = args.mrs_len;
4835 mr_rp->mr_attr.mr_flags = args.mrs_flags | IBT_MR_NOSLEEP;
4836 mr_rp->mr_attr.mr_as = curproc->p_as;
4840 (void *)(uintptr_t)mr_rp->mr_attr.mr_vaddr,
4841 (longlong_t)mr_rp->mr_attr.mr_len,
4842 mr_rp->mr_attr.mr_flags, mr_rp->mr_attr.mr_as,
4859 mem_sattr.mr_flags = mr_rp->mr_attr.mr_flags;
4863 status = daplka_ibt_register_shared_mr(mr_rp, ia_rp->ia_hca_hdl,
4864 smrp->smr_mr_list->mr_hdl, mr_rp->mr_pd_res->pd_hdl,
4865 &mem_sattr, &mr_rp->mr_hdl, &mr_rp->mr_desc);
4879 status = daplka_ibt_register_mr(mr_rp, ia_rp->ia_hca_hdl,
4880 mr_rp->mr_pd_res->pd_hdl, &mr_rp->mr_attr,
4881 &mr_rp->mr_hdl, &mr_rp->mr_desc);
4894 mr_cb_data_in.mr_arg1 = (void *)mr_rp;
4899 IBT_CI_NO_FLAGS, IBT_HDL_MR, (void *)mr_rp->mr_hdl,
4911 * we bump reference of mr_rp and enqueue it onto smrp.
4913 DAPLKA_RS_REF(mr_rp);
4914 mr_rp->mr_next = smrp->smr_mr_list;
4915 smrp->smr_mr_list = mr_rp;
4916 mr_rp->mr_shared_mr = smrp;
4920 &mr_hkey, (void *)mr_rp);
4926 _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*mr_rp))
4936 args.mrs_lkey = mr_rp->mr_desc.md_lkey;
4937 args.mrs_rkey = mr_rp->mr_desc.md_rkey;
4963 if (free_rp != mr_rp) {
4987 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*mr_rp))
4988 ASSERT(smrp->smr_mr_list == mr_rp);
4989 DAPLKA_RS_UNREF(mr_rp);
4991 ASSERT(mr_rp->mr_shared_mr == smrp);
4992 mr_rp->mr_shared_mr = NULL;
4993 ASSERT(mr_rp->mr_next == NULL);
5003 if (smrp->smr_mr_list != NULL && mr_rp != NULL) {
5007 * search and remove mr_rp from smr_mr_list
5009 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*mr_rp))
5012 if (*mpp == mr_rp) {
5014 DAPLKA_RS_UNREF(mr_rp);
5015 ASSERT(mr_rp->mr_shared_mr ==
5017 mr_rp->mr_shared_mr = NULL;
5018 mr_rp->mr_next = NULL;
5036 if (mr_rp != NULL) {
5037 DAPLKA_RS_UNREF(mr_rp);
5055 daplka_mr_resource_t *mr_rp;
5075 mr_rp = kmem_zalloc(sizeof (daplka_mr_resource_t), daplka_km_flags);
5076 if (mr_rp == NULL) {
5081 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*mr_rp))
5082 DAPLKA_RS_INIT(mr_rp, DAPL_TYPE_MR,
5085 mutex_init(&mr_rp->mr_lock, NULL, MUTEX_DRIVER, NULL);
5086 mr_rp->mr_hca = ia_rp->ia_hca;
5087 mr_rp->mr_hca_hdl = ia_rp->ia_hca_hdl;
5088 mr_rp->mr_next = NULL;
5089 mr_rp->mr_shared_mr = NULL;
5092 mr_rp->mr_pd_res = orig_mr_rp->mr_pd_res;
5093 mr_rp->mr_attr = orig_mr_rp->mr_attr;
5099 status = daplka_ibt_register_shared_mr(mr_rp, ia_rp->ia_hca_hdl,
5100 orig_mr_rp->mr_hdl, mr_rp->mr_pd_res->pd_hdl, &mem_sattr,
5101 &mr_rp->mr_hdl, &mr_rp->mr_desc);
5113 mr_cb_data_in.mr_arg1 = (void *)mr_rp;
5118 IBT_CI_NO_FLAGS, IBT_HDL_MR, (void *)mr_rp->mr_hdl,
5128 mr_rp->mr_attr.mr_len = orig_mr_rp->mr_attr.mr_len;
5129 mr_rp->mr_attr.mr_flags = mem_sattr.mr_flags;
5133 (void *)mr_rp);
5139 _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*mr_rp))
5141 args.mrl_lkey = mr_rp->mr_desc.md_lkey;
5142 args.mrl_rkey = mr_rp->mr_desc.md_rkey;
5163 if (free_rp != mr_rp) {
5175 if (mr_rp != NULL) {
5176 DAPLKA_RS_UNREF(mr_rp);
5183 * remove a mr resource from the shared mr object mr_rp->mr_shared_mr.
5189 daplka_shared_mr_free(daplka_mr_resource_t *mr_rp)
5200 mutex_enter(&mr_rp->mr_lock);
5201 smrp = mr_rp->mr_shared_mr;
5202 mr_rp->mr_shared_mr = NULL;
5203 mutex_exit(&mr_rp->mr_lock);
5219 * search and remove mr_rp from smr_mr_list.
5220 * also UNREF mr_rp because it is no longer
5225 if (*mpp == mr_rp) {
5227 DAPLKA_RS_UNREF(mr_rp);
5228 mr_rp->mr_next = NULL;
5237 * that we can find and remove mr_rp from smr_mr_list
5268 daplka_mr_resource_t *mr_rp;
5279 args.mrd_hkey, (void **)&mr_rp);
5280 if (retval != 0 || mr_rp == NULL) {
5284 ASSERT(DAPLKA_RS_TYPE(mr_rp) == DAPL_TYPE_MR);
5286 daplka_shared_mr_free(mr_rp);
5287 DAPLKA_RS_UNREF(mr_rp);
5300 daplka_mr_resource_t *mr_rp[DAPL_MR_PER_SYNC];
5333 mr_rp[i] = (daplka_mr_resource_t *)daplka_hash_lookup(
5335 if (mr_rp[i] == NULL) {
5337 DAPLKA_RS_UNREF(mr_rp[j]);
5342 ASSERT(DAPLKA_RS_TYPE(mr_rp[i]) == DAPL_TYPE_MR);
5343 mrs[i].ms_handle = mr_rp[i]->mr_hdl;
5355 DAPLKA_RS_UNREF(mr_rp[i]);
5367 daplka_mr_resource_t *mr_rp = (daplka_mr_resource_t *)gen_rp;
5370 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*mr_rp))
5371 ASSERT(DAPLKA_RS_REFCNT(mr_rp) == 0);
5372 ASSERT(mr_rp->mr_shared_mr == NULL);
5373 D3("mr_destroy: entering, mr_rp 0x%p, rnum %d\n",
5374 mr_rp, DAPLKA_RS_RNUM(mr_rp));
5379 if (mr_rp->mr_hdl) {
5380 status = daplka_ibt_deregister_mr(mr_rp, mr_rp->mr_hca_hdl,
5381 mr_rp->mr_hdl);
5386 mr_rp->mr_hdl = NULL;
5389 mr_rp->mr_attr.mr_vaddr = NULL;
5394 if (mr_rp->mr_pd_res != NULL) {
5395 DAPLKA_RS_UNREF(mr_rp->mr_pd_res);
5396 mr_rp->mr_pd_res = NULL;
5398 mutex_destroy(&mr_rp->mr_lock);
5399 DAPLKA_RS_FINI(mr_rp);
5400 kmem_free(mr_rp, sizeof (daplka_mr_resource_t));
5401 D3("mr_destroy: exiting, mr_rp 0x%p\n", mr_rp);
5412 daplka_mr_resource_t *mr_rp = (daplka_mr_resource_t *)obj;
5414 daplka_shared_mr_free(mr_rp);
5415 DAPLKA_RS_UNREF(mr_rp);
8486 daplka_ibt_register_mr(daplka_mr_resource_t *mr_rp, ibt_hca_hdl_t hca_hdl,
8496 hca_p = mr_rp->mr_hca;
8507 DAPLKA_RS_ACCT_INC(mr_rp, 1);
8513 DAPLKA_RS_ACCT_DEC(mr_rp, 1);
8520 daplka_ibt_register_shared_mr(daplka_mr_resource_t *mr_rp,
8531 hca_p = mr_rp->mr_hca;
8542 DAPLKA_RS_ACCT_INC(mr_rp, 1);
8549 DAPLKA_RS_ACCT_DEC(mr_rp, 1);
8556 daplka_ibt_deregister_mr(daplka_mr_resource_t *mr_rp, ibt_hca_hdl_t hca_hdl,
8562 hca_p = mr_rp->mr_hca;
8568 if (DAPLKA_RS_ACCT_CHARGED(mr_rp) > 0) {
8569 DAPLKA_RS_ACCT_DEC(mr_rp, 1);