Lines Matching defs:e_fmr

773 	struct ehca_mr *e_fmr;
816 e_fmr = ehca_mr_new();
817 if (!e_fmr) {
821 e_fmr->flags |= EHCA_MR_FLAG_FMR;
830 ret = ehca_reg_mr(shca, e_fmr, NULL,
840 e_fmr->hwpage_size = hw_pgsize;
841 e_fmr->fmr_page_size = 1 << fmr_attr->page_shift;
842 e_fmr->fmr_max_pages = fmr_attr->max_pages;
843 e_fmr->fmr_max_maps = fmr_attr->max_maps;
844 e_fmr->fmr_map_cnt = 0;
845 return &e_fmr->ib.ib_fmr;
848 ehca_mr_delete(e_fmr);
863 struct ehca_mr *e_fmr = container_of(fmr, struct ehca_mr, ib.ib_fmr);
868 if (!(e_fmr->flags & EHCA_MR_FLAG_FMR)) {
869 ehca_err(fmr->device, "not a FMR, e_fmr=%p e_fmr->flags=%x",
870 e_fmr, e_fmr->flags);
874 ret = ehca_fmr_check_page_list(e_fmr, page_list, list_len);
877 if (iova % e_fmr->fmr_page_size) {
880 iova, e_fmr->fmr_page_size);
884 if (e_fmr->fmr_map_cnt >= e_fmr->fmr_max_maps) {
887 "e_fmr->fmr_map_cnt=%x e_fmr->fmr_max_maps=%x",
888 fmr, e_fmr->fmr_map_cnt, e_fmr->fmr_max_maps);
894 pginfo.hwpage_size = e_fmr->hwpage_size;
896 list_len * e_fmr->fmr_page_size / pginfo.hwpage_size;
899 (iova & (e_fmr->fmr_page_size-1)) / pginfo.hwpage_size;
900 pginfo.u.fmr.fmr_pgsize = e_fmr->fmr_page_size;
902 ret = ehca_rereg_mr(shca, e_fmr, (u64 *)iova,
903 list_len * e_fmr->fmr_page_size,
904 e_fmr->acl, e_pd, &pginfo, &tmp_lkey, &tmp_rkey);
909 e_fmr->fmr_map_cnt++;
910 e_fmr->ib.ib_fmr.lkey = tmp_lkey;
911 e_fmr->ib.ib_fmr.rkey = tmp_rkey;
929 struct ehca_mr *e_fmr;
938 e_fmr = container_of(ib_fmr, struct ehca_mr, ib.ib_fmr);
941 "prev_shca=%p e_fmr=%p",
942 shca, prev_shca, e_fmr);
946 if (!(e_fmr->flags & EHCA_MR_FLAG_FMR)) {
947 ehca_err(&shca->ib_device, "not a FMR, e_fmr=%p "
948 "e_fmr->flags=%x", e_fmr, e_fmr->flags);
958 e_fmr = container_of(ib_fmr, struct ehca_mr, ib.ib_fmr);
961 ret = ehca_unmap_one_fmr(shca, e_fmr);
965 "stop rest, e_fmr=%p num_fmr=%x "
966 "unmap_fmr_cnt=%x lkey=%x", e_fmr, num_fmr,
967 unmap_fmr_cnt, e_fmr->ib.ib_fmr.lkey);
987 struct ehca_mr *e_fmr = container_of(fmr, struct ehca_mr, ib.ib_fmr);
989 if (!(e_fmr->flags & EHCA_MR_FLAG_FMR)) {
990 ehca_err(fmr->device, "not a FMR, e_fmr=%p e_fmr->flags=%x",
991 e_fmr, e_fmr->flags);
996 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr);
998 ehca_err(fmr->device, "hipz_free_mr failed, h_ret=%lli e_fmr=%p "
1000 h_ret, e_fmr, shca->ipz_hca_handle.handle,
1001 e_fmr->ipz_mr_handle.handle, fmr->lkey);
1006 ehca_mr_delete(e_fmr);
1384 struct ehca_mr *e_fmr)
1389 container_of(e_fmr->ib.ib_fmr.pd, struct ehca_pd, ib_pd);
1396 if (e_fmr->fmr_max_pages <= MAX_RPAGES) {
1401 h_ret = hipz_h_reregister_pmr(shca->ipz_hca_handle, e_fmr, 0,
1405 e_fmr->start = NULL;
1406 e_fmr->size = 0;
1416 "(Rereg1), h_ret=%lli e_fmr=%p hca_hndl=%llx "
1418 h_ret, e_fmr, shca->ipz_hca_handle.handle,
1419 e_fmr->ipz_mr_handle.handle,
1420 e_fmr->ib.ib_fmr.lkey, hipzout.lkey);
1425 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr);
1428 "h_ret=%lli e_fmr=%p hca_hndl=%llx mr_hndl=%llx "
1430 h_ret, e_fmr, shca->ipz_hca_handle.handle,
1431 e_fmr->ipz_mr_handle.handle,
1432 e_fmr->ib.ib_fmr.lkey);
1437 save_fmr = *e_fmr;
1438 ehca_mr_deletenew(e_fmr);
1441 e_fmr->flags = save_fmr.flags;
1442 e_fmr->hwpage_size = save_fmr.hwpage_size;
1443 e_fmr->fmr_page_size = save_fmr.fmr_page_size;
1444 e_fmr->fmr_max_pages = save_fmr.fmr_max_pages;
1445 e_fmr->fmr_max_maps = save_fmr.fmr_max_maps;
1446 e_fmr->fmr_map_cnt = save_fmr.fmr_map_cnt;
1447 e_fmr->acl = save_fmr.acl;
1451 ret = ehca_reg_mr(shca, e_fmr, NULL,
1452 (e_fmr->fmr_max_pages * e_fmr->fmr_page_size),
1453 e_fmr->acl, e_pd, &pginfo, &tmp_lkey,
1456 u32 offset = (u64)(&e_fmr->flags) - (u64)e_fmr;
1457 memcpy(&e_fmr->flags, &(save_mr.flags),
1465 ret, tmp_lkey, tmp_rkey, e_fmr->fmr_max_pages);
1821 int ehca_fmr_check_page_list(struct ehca_mr *e_fmr,
1828 if ((list_len == 0) || (list_len > e_fmr->fmr_max_pages)) {
1830 "e_fmr->fmr_max_pages=%x fmr=%p",
1831 list_len, e_fmr->fmr_max_pages, e_fmr);
1838 if (*page % e_fmr->fmr_page_size) {
1840 "fmr_page_size=%x", i, *page, page, e_fmr,
1841 e_fmr->fmr_page_size);