Lines Matching defs:ibmr
200 struct rds_ib_mr *ibmr = NULL;
208 ibmr = llist_entry(ret, struct rds_ib_mr, llnode);
215 return ibmr;
220 struct rds_ib_mr *ibmr = trans_private;
221 struct rds_ib_device *rds_ibdev = ibmr->device;
223 if (ibmr->odp)
228 ib_dma_sync_sg_for_cpu(rds_ibdev->dev, ibmr->sg,
229 ibmr->sg_dma_len, DMA_BIDIRECTIONAL);
232 ib_dma_sync_sg_for_device(rds_ibdev->dev, ibmr->sg,
233 ibmr->sg_dma_len, DMA_BIDIRECTIONAL);
238 void __rds_ib_teardown_mr(struct rds_ib_mr *ibmr)
240 struct rds_ib_device *rds_ibdev = ibmr->device;
242 if (ibmr->sg_dma_len) {
244 ibmr->sg, ibmr->sg_len,
246 ibmr->sg_dma_len = 0;
250 if (ibmr->sg_len) {
253 for (i = 0; i < ibmr->sg_len; ++i) {
254 struct page *page = sg_page(&ibmr->sg[i]);
262 kfree(ibmr->sg);
264 ibmr->sg = NULL;
265 ibmr->sg_len = 0;
269 void rds_ib_teardown_mr(struct rds_ib_mr *ibmr)
271 unsigned int pinned = ibmr->sg_len;
273 __rds_ib_teardown_mr(ibmr);
275 struct rds_ib_mr_pool *pool = ibmr->pool;
298 struct rds_ib_mr *ibmr;
306 ibmr = llist_entry(node, struct rds_ib_mr, llnode);
307 list_add_tail(&ibmr->unmap_list, list);
323 struct rds_ib_mr *ibmr;
327 list_for_each_entry(ibmr, list, unmap_list) {
328 cur = &ibmr->llnode;
345 struct rds_ib_mr *ibmr;
360 ibmr = rds_ib_reuse_mr(pool);
361 if (ibmr) {
362 *ibmr_ret = ibmr;
372 ibmr = rds_ib_reuse_mr(pool);
373 if (ibmr) {
374 *ibmr_ret = ibmr;
384 ibmr = rds_ib_reuse_mr(pool);
385 if (ibmr) {
386 *ibmr_ret = ibmr;
442 struct rds_ib_mr *ibmr = NULL;
446 ibmr = rds_ib_reuse_mr(pool);
447 if (ibmr)
448 return ibmr;
469 rds_ib_flush_mr_pool(pool, 0, &ibmr);
470 if (ibmr)
471 return ibmr;
486 struct rds_ib_mr *ibmr = trans_private;
487 struct rds_ib_mr_pool *pool = ibmr->pool;
488 struct rds_ib_device *rds_ibdev = ibmr->device;
490 rdsdebug("RDS/IB: free_mr nents %u\n", ibmr->sg_len);
492 if (ibmr->odp) {
497 INIT_DELAYED_WORK(&ibmr->work, rds_ib_odp_mr_worker);
498 queue_delayed_work(rds_ib_mr_wq, &ibmr->work, 0);
503 rds_ib_free_frmr_list(ibmr);
505 atomic_add(ibmr->sg_len, &pool->free_pinned);
545 struct rds_ib_mr *ibmr = trans_private;
547 return ibmr->u.mr->lkey;
556 struct rds_ib_mr *ibmr = NULL;
592 ibmr = kzalloc(sizeof(*ibmr), GFP_KERNEL);
593 if (!ibmr) {
598 ibmr->u.mr = ib_mr;
599 ibmr->odp = 1;
608 return ibmr;
619 ibmr = rds_ib_reg_frmr(rds_ibdev, ic, sg, nents, key_ret);
620 if (IS_ERR(ibmr)) {
621 ret = PTR_ERR(ibmr);
624 return ibmr;
696 struct rds_ib_mr *ibmr;
698 ibmr = container_of(work, struct rds_ib_mr, work.work);
699 ib_dereg_mr(ibmr->u.mr);
700 kfree(ibmr);