/linux/drivers/infiniband/sw/rdmavt/ |
H A D | mr.c | 11 #include "mr.h" 15 * rvt_driver_mr_init - Init MR resources per driver 62 * rvt_mr_exit - clean up MR 70 rvt_pr_err(rdi, "DMA MR not null!\n"); in rvt_mr_exit() 75 static void rvt_deinit_mregion(struct rvt_mregion *mr) in rvt_deinit_mregion() argument 77 int i = mr->mapsz; in rvt_deinit_mregion() 79 mr->mapsz = 0; in rvt_deinit_mregion() 81 kfree(mr->map[--i]); in rvt_deinit_mregion() 82 percpu_ref_exit(&mr->refcount); in rvt_deinit_mregion() 87 struct rvt_mregion *mr = container_of(ref, struct rvt_mregion, in __rvt_mregion_complete() local [all …]
|
H A D | trace_mr.h | 15 #include "mr.h" 21 TP_PROTO(struct rvt_mregion *mr, u16 m, u16 n, void *v, size_t len), 22 TP_ARGS(mr, m, n, v, len), 24 RDI_DEV_ENTRY(ib_to_rvt(mr->pd->device)) 37 RDI_DEV_ASSIGN(ib_to_rvt(mr->pd->device)); 40 __entry->iova = mr->iova; 41 __entry->user_base = mr->user_base; 42 __entry->lkey = mr->lkey; 46 __entry->length = mr->length; 47 __entry->offset = mr->offset; [all …]
|
/linux/drivers/infiniband/sw/rxe/ |
H A D | rxe_mr.c | 14 * if this is the first key for an MR or MW 27 int mr_check_range(struct rxe_mr *mr, u64 iova, size_t length) in mr_check_range() argument 29 switch (mr->ibmr.type) { in mr_check_range() 35 if (iova < mr->ibmr.iova || in mr_check_range() 36 iova + length > mr->ibmr.iova + mr->ibmr.length) { in mr_check_range() 37 rxe_dbg_mr(mr, "iova/length out of range\n"); in mr_check_range() 43 rxe_dbg_mr(mr, "mr type not supported\n"); in mr_check_range() 48 void rxe_mr_init(int access, struct rxe_mr *mr) in rxe_mr_init() argument 50 u32 key = mr->elem.index << 8 | rxe_get_next_key(-1); in rxe_mr_init() 57 mr->lkey = mr->ibmr.lkey = key; in rxe_mr_init() [all …]
|
H A D | rxe_odp.c | 44 static int rxe_odp_do_pagefault_and_lock(struct rxe_mr *mr, u64 user_va, int bcnt, u32 flags) in rxe_odp_do_pagefault_and_lock() argument 46 struct ib_umem_odp *umem_odp = to_ib_umem_odp(mr->umem); in rxe_odp_do_pagefault_and_lock() 64 static int rxe_odp_init_pages(struct rxe_mr *mr) in rxe_odp_init_pages() argument 66 struct ib_umem_odp *umem_odp = to_ib_umem_odp(mr->umem); in rxe_odp_init_pages() 69 ret = rxe_odp_do_pagefault_and_lock(mr, mr->umem->address, in rxe_odp_init_pages() 70 mr->umem->length, in rxe_odp_init_pages() 80 u64 iova, int access_flags, struct rxe_mr *mr) in rxe_odp_mr_init_user() argument 88 rxe_mr_init(access_flags, mr); in rxe_odp_mr_init_user() 102 rxe_dbg_mr(mr, "Unable to create umem_odp err = %d\n", in rxe_odp_mr_init_user() 107 umem_odp->private = mr; in rxe_odp_mr_init_user() [all …]
|
H A D | rxe_mw.c | 51 struct rxe_mw *mw, struct rxe_mr *mr, int access) in rxe_check_bind_mw() argument 83 if (unlikely(!mr || wqe->wr.wr.mw.length == 0)) { in rxe_check_bind_mw() 85 "attempt to invalidate type 2 MW by binding with NULL or zero length MR\n"); in rxe_check_bind_mw() 90 /* remaining checks only apply to a nonzero MR */ in rxe_check_bind_mw() 91 if (!mr) in rxe_check_bind_mw() 94 if (unlikely(mr->access & IB_ZERO_BASED)) { in rxe_check_bind_mw() 95 rxe_dbg_mw(mw, "attempt to bind MW to zero based MR\n"); in rxe_check_bind_mw() 100 if (unlikely(!(mr->access & IB_ACCESS_MW_BIND))) { in rxe_check_bind_mw() 102 "attempt to bind an MW to an MR without bind access\n"); in rxe_check_bind_mw() 109 !(mr->access & IB_ACCESS_LOCAL_WRITE))) { in rxe_check_bind_mw() [all …]
|
H A D | rxe_resp.c | 426 /* resolve the packet rkey to qp->resp.mr or set qp->resp.mr to NULL 428 * or last packets use the stored value of mr. 433 struct rxe_mr *mr = NULL; in check_rkey() local 476 qp->resp.mr = NULL; in check_rkey() 493 mr = mw->mr; in check_rkey() 494 if (!mr) { in check_rkey() 495 rxe_dbg_qp(qp, "MW doesn't have an MR\n"); in check_rkey() 503 rxe_get(mr); in check_rkey() 507 mr = lookup_mr(qp->pd, access, rkey, RXE_LOOKUP_REMOTE); in check_rkey() 508 if (!mr) { in check_rkey() [all …]
|
/linux/net/sunrpc/xprtrdma/ |
H A D | frwr_ops.c | 49 struct rpcrdma_mr *mr) in frwr_cid_init() argument 51 struct rpc_rdma_cid *cid = &mr->mr_cid; in frwr_cid_init() 54 cid->ci_completion_id = mr->mr_ibmr->res.id; in frwr_cid_init() 57 static void frwr_mr_unmap(struct rpcrdma_mr *mr) in frwr_mr_unmap() argument 59 if (mr->mr_device) { in frwr_mr_unmap() 60 trace_xprtrdma_mr_unmap(mr); in frwr_mr_unmap() 61 ib_dma_unmap_sg(mr->mr_device, mr->mr_sg, mr->mr_nents, in frwr_mr_unmap() 62 mr->mr_dir); in frwr_mr_unmap() 63 mr->mr_device = NULL; in frwr_mr_unmap() 68 * frwr_mr_release - Destroy one MR [all …]
|
/linux/drivers/infiniband/hw/mlx5/ |
H A D | mr.c | 130 static int destroy_mkey(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) in destroy_mkey() argument 132 WARN_ON(xa_load(&dev->odp_mkeys, mlx5_base_mkey(mr->mmkey.key))); in destroy_mkey() 134 return mlx5_core_destroy_mkey(dev->mdev, mr->mmkey.key); in destroy_mkey() 142 mlx5_ib_warn(dev, "async reg mr failed. status %d\n", status); in create_mkey_warn() 305 /* Synchronously create a MR in the cache */ 723 struct mlx5_ib_mr *mr; in _mlx5_mr_cache_alloc() local 726 mr = kzalloc(sizeof(*mr), GFP_KERNEL); in _mlx5_mr_cache_alloc() 727 if (!mr) in _mlx5_mr_cache_alloc() 737 err = create_cache_mkey(ent, &mr->mmkey.key); in _mlx5_mr_cache_alloc() 742 kfree(mr); in _mlx5_mr_cache_alloc() [all …]
|
H A D | odp.c | 165 struct mlx5_ib_mr *mr, int flags) in populate_mtt() argument 167 struct ib_umem_odp *odp = to_ib_umem_odp(mr->umem); in populate_mtt() 201 struct mlx5_ib_mr *mr, int flags) in mlx5_odp_populate_xlt() argument 204 populate_klm(xlt, idx, nentries, mr, flags); in mlx5_odp_populate_xlt() 207 return populate_mtt(xlt, idx, nentries, mr, flags); in mlx5_odp_populate_xlt() 212 * This must be called after the mr has been removed from implicit_children. 213 * NOTE: The MR does not necessarily have to be 219 struct mlx5_ib_mr *mr = in free_implicit_child_mr_work() local 221 struct mlx5_ib_mr *imr = mr->parent; in free_implicit_child_mr_work() 223 struct ib_umem_odp *odp = to_ib_umem_odp(mr->umem); in free_implicit_child_mr_work() [all …]
|
/linux/drivers/infiniband/hw/vmw_pvrdma/ |
H A D | pvrdma_mr.c | 61 struct pvrdma_user_mr *mr; in pvrdma_get_dma_mr() local 71 "unsupported dma mr access flags %#x\n", acc); in pvrdma_get_dma_mr() 75 mr = kzalloc(sizeof(*mr), GFP_KERNEL); in pvrdma_get_dma_mr() 76 if (!mr) in pvrdma_get_dma_mr() 89 kfree(mr); in pvrdma_get_dma_mr() 93 mr->mmr.mr_handle = resp->mr_handle; in pvrdma_get_dma_mr() 94 mr->ibmr.lkey = resp->lkey; in pvrdma_get_dma_mr() 95 mr->ibmr.rkey = resp->rkey; in pvrdma_get_dma_mr() 97 return &mr->ibmr; in pvrdma_get_dma_mr() 116 struct pvrdma_user_mr *mr = NULL; in pvrdma_reg_user_mr() local [all …]
|
/linux/include/trace/events/ |
H A D | tsm_mr.h | 9 #include <linux/tsm-mr.h> 13 TP_PROTO(const struct tsm_measurement_register *mr), 15 TP_ARGS(mr), 18 __string(mr, mr->mr_name) 19 __string(hash, mr->mr_flags & TSM_MR_F_NOHASH ? 20 "data" : hash_algo_name[mr->mr_hash]) 21 __dynamic_array(u8, d, mr->mr_size) 25 __assign_str(mr); 27 memcpy(__get_dynamic_array(d), mr->mr_value, __get_dynamic_array_len(d)); 30 TP_printk("[%s] %s:%s", __get_str(mr), __get_str(hash), [all …]
|
/linux/drivers/infiniband/hw/mana/ |
H A D | mr.c | 33 static int mana_ib_gd_create_mr(struct mana_ib_dev *dev, struct mana_ib_mr *mr, in mana_ib_gd_create_mr() argument 68 ibdev_dbg(&dev->ib_dev, "Failed to create mr %d, %u", err, in mana_ib_gd_create_mr() 76 mr->ibmr.lkey = resp.lkey; in mana_ib_gd_create_mr() 77 mr->ibmr.rkey = resp.rkey; in mana_ib_gd_create_mr() 78 mr->mr_handle = resp.mr_handle; in mana_ib_gd_create_mr() 97 dev_err(gc->dev, "Failed to destroy MR: %d, 0x%x\n", err, in mana_ib_gd_destroy_mr() 115 struct mana_ib_mr *mr; in mana_ib_reg_user_mr() local 129 mr = kzalloc(sizeof(*mr), GFP_KERNEL); in mana_ib_reg_user_mr() 130 if (!mr) in mana_ib_reg_user_mr() 133 mr->umem = ib_umem_get(ibdev, start, length, access_flags); in mana_ib_reg_user_mr() [all …]
|
/linux/drivers/scsi/ |
H A D | mesh.c | 305 volatile struct mesh_regs __iomem *mr = ms->mesh; in mesh_dump_regs() local 311 ms, mr, md); in mesh_dump_regs() 314 (mr->count_hi << 8) + mr->count_lo, mr->sequence, in mesh_dump_regs() 315 (mr->bus_status1 << 8) + mr->bus_status0, mr->fifo_count, in mesh_dump_regs() 316 mr->exception, mr->error, mr->intr_mask, mr->interrupt, in mesh_dump_regs() 317 mr->sync_params); in mesh_dump_regs() 318 while(in_8(&mr->fifo_count)) in mesh_dump_regs() 319 printk(KERN_DEBUG " fifo data=%.2x\n",in_8(&mr->fifo)); in mesh_dump_regs() 339 static inline void mesh_flush_io(volatile struct mesh_regs __iomem *mr) in mesh_flush_io() argument 341 (void)in_8(&mr->mesh_id); in mesh_flush_io() [all …]
|
/linux/io_uring/ |
H A D | memmap.c | 91 void io_free_region(struct io_ring_ctx *ctx, struct io_mapped_region *mr) in io_free_region() argument 93 if (mr->pages) { in io_free_region() 94 long nr_refs = mr->nr_pages; in io_free_region() 96 if (mr->flags & IO_REGION_F_SINGLE_REF) in io_free_region() 99 if (mr->flags & IO_REGION_F_USER_PROVIDED) in io_free_region() 100 unpin_user_pages(mr->pages, nr_refs); in io_free_region() 102 release_pages(mr->pages, nr_refs); in io_free_region() 104 kvfree(mr->pages); in io_free_region() 106 if ((mr->flags & IO_REGION_F_VMAP) && mr->ptr) in io_free_region() 107 vunmap(mr->ptr); in io_free_region() [all …]
|
/linux/drivers/infiniband/hw/hns/ |
H A D | hns_roce_mr.c | 53 static int alloc_mr_key(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr) in alloc_mr_key() argument 60 /* Allocate a key for mr from mr_table */ in alloc_mr_key() 64 ibdev_err(ibdev, "failed to alloc id for MR key, id(%d)\n", id); in alloc_mr_key() 68 mr->key = hw_index_to_key(id); /* MR key */ in alloc_mr_key() 83 static void free_mr_key(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr) in free_mr_key() argument 85 unsigned long obj = key_to_hw_index(mr->key); in free_mr_key() 91 static int alloc_mr_pbl(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr, in alloc_mr_pbl() argument 95 bool is_fast = mr->type == MR_TYPE_FRMR; in alloc_mr_pbl() 99 mr->pbl_hop_num = is_fast ? 1 : hr_dev->caps.pbl_hop_num; in alloc_mr_pbl() 102 buf_attr.region[0].size = mr->size; in alloc_mr_pbl() [all …]
|
/linux/arch/powerpc/platforms/pseries/ |
H A D | hvCall.S | 64 mr r4,r3; \ 65 mr r3,r0; \ 77 mr r5,BUFREG; \ 160 mr r4,r5 161 mr r5,r6 162 mr r6,r7 163 mr r7,r8 164 mr r8,r9 165 mr r9,r10 187 mr r4,r5 [all …]
|
/linux/drivers/infiniband/core/ |
H A D | uverbs_std_types_mr.c | 95 struct ib_mr *mr; in UVERBS_HANDLER() local 127 mr = pd->device->ops.reg_dm_mr(pd, dm, &attr, attrs); in UVERBS_HANDLER() 128 if (IS_ERR(mr)) in UVERBS_HANDLER() 129 return PTR_ERR(mr); in UVERBS_HANDLER() 131 mr->device = pd->device; in UVERBS_HANDLER() 132 mr->pd = pd; in UVERBS_HANDLER() 133 mr->type = IB_MR_TYPE_DM; in UVERBS_HANDLER() 134 mr->dm = dm; in UVERBS_HANDLER() 135 mr->uobject = uobj; in UVERBS_HANDLER() 139 rdma_restrack_new(&mr->res, RDMA_RESTRACK_MR); in UVERBS_HANDLER() [all …]
|
H A D | mr_pool.c | 10 struct ib_mr *mr; in ib_mr_pool_get() local 14 mr = list_first_entry_or_null(list, struct ib_mr, qp_entry); in ib_mr_pool_get() 15 if (mr) { in ib_mr_pool_get() 16 list_del(&mr->qp_entry); in ib_mr_pool_get() 21 return mr; in ib_mr_pool_get() 25 void ib_mr_pool_put(struct ib_qp *qp, struct list_head *list, struct ib_mr *mr) in ib_mr_pool_put() argument 30 list_add(&mr->qp_entry, list); in ib_mr_pool_put() 39 struct ib_mr *mr; in ib_mr_pool_init() local 45 mr = ib_alloc_mr_integrity(qp->pd, max_num_sg, in ib_mr_pool_init() 48 mr = ib_alloc_mr(qp->pd, type, max_num_sg); in ib_mr_pool_init() [all …]
|
/linux/drivers/rtc/ |
H A D | rtc-at91sam9.c | 133 u32 offset, alarm, mr; in at91_rtc_settime() local 140 mr = rtt_readl(rtc, MR); in at91_rtc_settime() 143 rtt_writel(rtc, MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN)); in at91_rtc_settime() 164 mr &= ~AT91_RTT_ALMIEN; in at91_rtc_settime() 170 rtt_writel(rtc, MR, mr | AT91_RTT_RTTRST); in at91_rtc_settime() 192 if (rtt_readl(rtc, MR) & AT91_RTT_ALMIEN) in at91_rtc_readalarm() 205 u32 mr; in at91_rtc_setalarm() local 214 mr = rtt_readl(rtc, MR); in at91_rtc_setalarm() 215 rtt_writel(rtc, MR, mr & ~AT91_RTT_ALMIEN); in at91_rtc_setalarm() 226 rtt_writel(rtc, MR, mr | AT91_RTT_ALMIEN); in at91_rtc_setalarm() [all …]
|
/linux/include/linux/ |
H A D | tsm-mr.h | 10 * register (MR) 11 * @mr_name: name of the MR 12 * @mr_value: buffer containing the current value of the MR 13 * @mr_size: size of the MR - typically the digest size of @mr_hash 26 * * %TSM_MR_F_READABLE - the sysfs attribute corresponding to this MR is readable. 27 * * %TSM_MR_F_WRITABLE - the sysfs attribute corresponding to this MR is writable. 28 * The semantics is typically to extend the MR but could vary depending on the 29 * architecture and the MR. 30 * * %TSM_MR_F_LIVE - this MR's value may differ from the last value written, so 33 * * %TSM_MR_F_NOHASH - this MR does NOT have an associated hash algorithm. [all …]
|
/linux/net/rds/ |
H A D | rdma.c | 70 struct rds_mr *mr; in rds_mr_tree_walk() local 74 mr = rb_entry(parent, struct rds_mr, r_rb_node); in rds_mr_tree_walk() 76 if (key < mr->r_key) in rds_mr_tree_walk() 78 else if (key > mr->r_key) in rds_mr_tree_walk() 81 return mr; in rds_mr_tree_walk() 93 * Destroy the transport-specific part of a MR. 95 static void rds_destroy_mr(struct rds_mr *mr) in rds_destroy_mr() argument 97 struct rds_sock *rs = mr->r_sock; in rds_destroy_mr() 101 rdsdebug("RDS: destroy mr key is %x refcnt %u\n", in rds_destroy_mr() 102 mr->r_key, kref_read(&mr->r_kref)); in rds_destroy_mr() [all …]
|
/linux/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ |
H A D | gddr5.c | 75 ram->mr[0] &= ~0xf7f; in nvkm_gddr5_calc() 76 ram->mr[0] |= (WR & 0x0f) << 8; in nvkm_gddr5_calc() 77 ram->mr[0] |= (CL & 0x0f) << 3; in nvkm_gddr5_calc() 78 ram->mr[0] |= (WL & 0x07) << 0; in nvkm_gddr5_calc() 80 ram->mr[1] &= ~0x0bf; in nvkm_gddr5_calc() 81 ram->mr[1] |= (xd & 0x01) << 7; in nvkm_gddr5_calc() 82 ram->mr[1] |= (at[0] & 0x03) << 4; in nvkm_gddr5_calc() 83 ram->mr[1] |= (dt & 0x03) << 2; in nvkm_gddr5_calc() 84 ram->mr[1] |= (ds & 0x03) << 0; in nvkm_gddr5_calc() 89 ram->mr1_nuts = ram->mr[1]; in nvkm_gddr5_calc() [all …]
|
/linux/drivers/virt/coco/guest/ |
H A D | tsm-mr.c | 16 * @rwsem: protects the MR cache from concurrent access. 17 * @agrp: contains all MR attributes created by tsm_mr_create_attribute_group(). 18 * @tm: input to tsm_mr_create_attribute_group() containing MR definitions/ops. 19 * @in_sync: %true if MR cache is up-to-date. 20 * @mrs: array of &struct bin_attribute, one for each MR. 25 * Given tm->refresh() is potentially expensive, tm_digest_read() caches MR 30 * will be called only when a live MR is being read and the cache is stale 34 * semantics is arch and MR specific. Most (if not all) writable MRs support the 35 * extension semantics (i.e., tm->write() extends the input buffer into the MR). 50 const struct tsm_measurement_register *mr; in tm_digest_read() local [all …]
|
/linux/drivers/infiniband/ulp/iser/ |
H A D | iser_memory.c | 160 * The signature MR cannot be invalidated and reused without checking. in iser_unreg_mem_fastreg() 162 * SCSI-Response is received. And the signature MR is not checked if in iser_unreg_mem_fastreg() 164 * handling. That's why we must check the signature MR here before in iser_unreg_mem_fastreg() 236 static inline void iser_inv_rkey(struct ib_send_wr *inv_wr, struct ib_mr *mr, in iser_inv_rkey() argument 241 inv_wr->ex.invalidate_rkey = mr->rkey; in iser_inv_rkey() 255 struct ib_mr *mr = rsc->sig_mr; in iser_reg_sig_mr() local 256 struct ib_sig_attrs *sig_attrs = mr->sig_attrs; in iser_reg_sig_mr() 268 iser_inv_rkey(&tx_desc->inv_wr, mr, cqe, &wr->wr); in iser_reg_sig_mr() 270 ib_update_fast_reg_key(mr, ib_inc_rkey(mr->rkey)); in iser_reg_sig_mr() 272 ret = ib_map_mr_sg_pi(mr, mem->sg, mem->dma_nents, NULL, in iser_reg_sig_mr() [all …]
|
/linux/drivers/sh/intc/ |
H A D | handle.c | 44 struct intc_mask_reg *mr = desc->hw.mask_regs; in _intc_mask_data() local 48 while (mr && enum_id && *reg_idx < desc->hw.nr_mask_regs) { in _intc_mask_data() 49 mr = desc->hw.mask_regs + *reg_idx; in _intc_mask_data() 51 for (; *fld_idx < ARRAY_SIZE(mr->enum_ids); (*fld_idx)++) { in _intc_mask_data() 52 if (mr->enum_ids[*fld_idx] != enum_id) in _intc_mask_data() 55 if (mr->set_reg && mr->clr_reg) { in _intc_mask_data() 58 reg_e = mr->clr_reg; in _intc_mask_data() 59 reg_d = mr->set_reg; in _intc_mask_data() 62 if (mr->set_reg) { in _intc_mask_data() 64 reg_e = mr->set_reg; in _intc_mask_data() [all …]
|