Lines Matching refs:fmr
355 struct qib_fmr *fmr;
361 fmr = kmalloc(sizeof *fmr + m * sizeof fmr->mr.map[0], GFP_KERNEL);
362 if (!fmr)
367 fmr->mr.map[i] = kmalloc(sizeof *fmr->mr.map[0],
369 if (!fmr->mr.map[i])
372 fmr->mr.mapsz = m;
375 * ib_alloc_fmr() will initialize fmr->ibfmr except for lkey &
378 if (!qib_alloc_lkey(&to_idev(pd->device)->lk_table, &fmr->mr))
380 fmr->ibfmr.rkey = fmr->mr.lkey;
381 fmr->ibfmr.lkey = fmr->mr.lkey;
386 fmr->mr.pd = pd;
387 fmr->mr.user_base = 0;
388 fmr->mr.iova = 0;
389 fmr->mr.length = 0;
390 fmr->mr.offset = 0;
391 fmr->mr.access_flags = mr_access_flags;
392 fmr->mr.max_segs = fmr_attr->max_pages;
393 fmr->page_shift = fmr_attr->page_shift;
395 atomic_set(&fmr->mr.refcount, 0);
396 ret = &fmr->ibfmr;
401 kfree(fmr->mr.map[--i]);
402 kfree(fmr);
422 struct qib_fmr *fmr = to_ifmr(ibfmr);
429 if (atomic_read(&fmr->mr.refcount))
432 if (list_len > fmr->mr.max_segs) {
438 fmr->mr.user_base = iova;
439 fmr->mr.iova = iova;
440 ps = 1 << fmr->page_shift;
441 fmr->mr.length = list_len * ps;
445 fmr->mr.map[m]->segs[n].vaddr = (void *) page_list[i];
446 fmr->mr.map[m]->segs[n].length = ps;
467 struct qib_fmr *fmr;
471 list_for_each_entry(fmr, fmr_list, ibfmr.list) {
472 rkt = &to_idev(fmr->ibfmr.device)->lk_table;
474 fmr->mr.user_base = 0;
475 fmr->mr.iova = 0;
476 fmr->mr.length = 0;
490 struct qib_fmr *fmr = to_ifmr(ibfmr);
494 ret = qib_free_lkey(to_idev(ibfmr->device), &fmr->mr);
498 i = fmr->mr.mapsz;
500 kfree(fmr->mr.map[--i]);
501 kfree(fmr);