| /kernel/linux/linux-6.6/drivers/infiniband/sw/rdmavt/ |
| 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 …]
|
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/infiniband/sw/rdmavt/ |
| D | mr.c | 53 #include "mr.h" 57 * rvt_driver_mr_init - Init MR resources per driver 104 *rvt_mr_exit: clean up MR 112 rvt_pr_err(rdi, "DMA MR not null!\n"); in rvt_mr_exit() 117 static void rvt_deinit_mregion(struct rvt_mregion *mr) in rvt_deinit_mregion() argument 119 int i = mr->mapsz; in rvt_deinit_mregion() 121 mr->mapsz = 0; in rvt_deinit_mregion() 123 kfree(mr->map[--i]); in rvt_deinit_mregion() 124 percpu_ref_exit(&mr->refcount); in rvt_deinit_mregion() 129 struct rvt_mregion *mr = container_of(ref, struct rvt_mregion, in __rvt_mregion_complete() local [all …]
|
| /kernel/linux/linux-6.6/drivers/infiniband/sw/rxe/ |
| 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 static 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 …]
|
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/vdpa/mlx5/core/ |
| D | mr.c | 34 static void populate_mtts(struct mlx5_vdpa_direct_mr *mr, __be64 *mtt) in populate_mtts() argument 37 int nsg = mr->nsg; in populate_mtts() 43 for_each_sg(mr->sg_head.sgl, sg, mr->nent, i) { in populate_mtts() 46 nsg--, dma_addr += BIT(mr->log_size), dma_len -= BIT(mr->log_size)) in populate_mtts() 51 static int create_direct_mr(struct mlx5_vdpa_dev *mvdev, struct mlx5_vdpa_direct_mr *mr) in create_direct_mr() argument 58 inlen = MLX5_ST_SZ_BYTES(create_mkey_in) + roundup(MLX5_ST_SZ_BYTES(mtt) * mr->nsg, 16); in create_direct_mr() 65 MLX5_SET(mkc, mkc, lw, !!(mr->perm & VHOST_MAP_WO)); in create_direct_mr() 66 MLX5_SET(mkc, mkc, lr, !!(mr->perm & VHOST_MAP_RO)); in create_direct_mr() 70 MLX5_SET64(mkc, mkc, start_addr, mr->offset); in create_direct_mr() 71 MLX5_SET64(mkc, mkc, len, mr->end - mr->start); in create_direct_mr() [all …]
|
| /kernel/linux/linux-6.6/drivers/vdpa/mlx5/core/ |
| D | mr.c | 35 static void populate_mtts(struct mlx5_vdpa_direct_mr *mr, __be64 *mtt) in populate_mtts() argument 38 int nsg = mr->nsg; in populate_mtts() 44 for_each_sg(mr->sg_head.sgl, sg, mr->nent, i) { in populate_mtts() 47 nsg--, dma_addr += BIT(mr->log_size), dma_len -= BIT(mr->log_size)) in populate_mtts() 52 static int create_direct_mr(struct mlx5_vdpa_dev *mvdev, struct mlx5_vdpa_direct_mr *mr) in create_direct_mr() argument 59 inlen = MLX5_ST_SZ_BYTES(create_mkey_in) + roundup(MLX5_ST_SZ_BYTES(mtt) * mr->nsg, 16); in create_direct_mr() 66 MLX5_SET(mkc, mkc, lw, !!(mr->perm & VHOST_MAP_WO)); in create_direct_mr() 67 MLX5_SET(mkc, mkc, lr, !!(mr->perm & VHOST_MAP_RO)); in create_direct_mr() 71 MLX5_SET64(mkc, mkc, start_addr, mr->offset); in create_direct_mr() 72 MLX5_SET64(mkc, mkc, len, mr->end - mr->start); in create_direct_mr() [all …]
|
| /kernel/linux/linux-5.10/drivers/infiniband/hw/mlx5/ |
| D | mr.c | 109 static void clean_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); 110 static void dereg_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr); 119 static int destroy_mkey(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) in destroy_mkey() argument 121 WARN_ON(xa_load(&dev->odp_mkeys, mlx5_base_mkey(mr->mmkey.key))); in destroy_mkey() 123 return mlx5_core_destroy_mkey(dev->mdev, &mr->mmkey); in destroy_mkey() 126 static inline bool mlx5_ib_pas_fits_in_mr(struct mlx5_ib_mr *mr, u64 start, in mlx5_ib_pas_fits_in_mr() argument 129 return ((u64)1 << mr->order) * MLX5_ADAPTER_PAGE_SIZE >= in mlx5_ib_pas_fits_in_mr() 135 struct mlx5_ib_mr *mr = in create_mkey_callback() local 137 struct mlx5_ib_dev *dev = mr->dev; in create_mkey_callback() 138 struct mlx5_cache_ent *ent = mr->cache_ent; in create_mkey_callback() [all …]
|
| /kernel/linux/linux-6.6/net/sunrpc/xprtrdma/ |
| 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_xprt *r_xprt, 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 …]
|
| /kernel/linux/linux-6.6/drivers/infiniband/hw/mlx5/ |
| D | mr.c | 127 static int destroy_mkey(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr) in destroy_mkey() argument 129 WARN_ON(xa_load(&dev->odp_mkeys, mlx5_base_mkey(mr->mmkey.key))); in destroy_mkey() 131 return mlx5_core_destroy_mkey(dev->mdev, mr->mmkey.key); in destroy_mkey() 139 mlx5_ib_warn(dev, "async reg mr failed. status %d\n", status); in create_mkey_warn() 360 /* Synchronously create a MR in the cache */ 758 struct mlx5_ib_mr *mr; in _mlx5_mr_cache_alloc() local 761 mr = kzalloc(sizeof(*mr), GFP_KERNEL); in _mlx5_mr_cache_alloc() 762 if (!mr) in _mlx5_mr_cache_alloc() 772 err = create_cache_mkey(ent, &mr->mmkey.key); in _mlx5_mr_cache_alloc() 777 kfree(mr); in _mlx5_mr_cache_alloc() [all …]
|
| /kernel/linux/linux-6.6/drivers/infiniband/hw/vmw_pvrdma/ |
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/infiniband/hw/vmw_pvrdma/ |
| 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 …]
|
| /kernel/linux/linux-5.10/net/sunrpc/xprtrdma/ |
| D | frwr_ops.c | 53 * frwr_release_mr - Destroy one MR 54 * @mr: MR allocated by frwr_mr_init 57 void frwr_release_mr(struct rpcrdma_mr *mr) in frwr_release_mr() argument 61 rc = ib_dereg_mr(mr->frwr.fr_mr); in frwr_release_mr() 63 trace_xprtrdma_frwr_dereg(mr, rc); in frwr_release_mr() 64 kfree(mr->mr_sg); in frwr_release_mr() 65 kfree(mr); in frwr_release_mr() 68 static void frwr_mr_recycle(struct rpcrdma_mr *mr) in frwr_mr_recycle() argument 70 struct rpcrdma_xprt *r_xprt = mr->mr_xprt; in frwr_mr_recycle() 72 trace_xprtrdma_mr_recycle(mr); in frwr_mr_recycle() [all …]
|
| /kernel/linux/linux-5.10/drivers/infiniband/hw/mlx4/ |
| D | mr.c | 60 struct mlx4_ib_mr *mr; in mlx4_ib_get_dma_mr() local 63 mr = kzalloc(sizeof(*mr), GFP_KERNEL); in mlx4_ib_get_dma_mr() 64 if (!mr) in mlx4_ib_get_dma_mr() 68 ~0ull, convert_access(acc), 0, 0, &mr->mmr); in mlx4_ib_get_dma_mr() 72 err = mlx4_mr_enable(to_mdev(pd->device)->dev, &mr->mmr); in mlx4_ib_get_dma_mr() 76 mr->ibmr.rkey = mr->ibmr.lkey = mr->mmr.key; in mlx4_ib_get_dma_mr() 77 mr->umem = NULL; in mlx4_ib_get_dma_mr() 79 return &mr->ibmr; in mlx4_ib_get_dma_mr() 82 (void) mlx4_mr_free(to_mdev(pd->device)->dev, &mr->mmr); in mlx4_ib_get_dma_mr() 85 kfree(mr); in mlx4_ib_get_dma_mr() [all …]
|
| /kernel/linux/linux-6.6/drivers/infiniband/hw/mlx4/ |
| D | mr.c | 60 struct mlx4_ib_mr *mr; in mlx4_ib_get_dma_mr() local 63 mr = kzalloc(sizeof(*mr), GFP_KERNEL); in mlx4_ib_get_dma_mr() 64 if (!mr) in mlx4_ib_get_dma_mr() 68 ~0ull, convert_access(acc), 0, 0, &mr->mmr); in mlx4_ib_get_dma_mr() 72 err = mlx4_mr_enable(to_mdev(pd->device)->dev, &mr->mmr); in mlx4_ib_get_dma_mr() 76 mr->ibmr.rkey = mr->ibmr.lkey = mr->mmr.key; in mlx4_ib_get_dma_mr() 77 mr->umem = NULL; in mlx4_ib_get_dma_mr() 79 return &mr->ibmr; in mlx4_ib_get_dma_mr() 82 (void) mlx4_mr_free(to_mdev(pd->device)->dev, &mr->mmr); in mlx4_ib_get_dma_mr() 85 kfree(mr); in mlx4_ib_get_dma_mr() [all …]
|
| /kernel/linux/linux-6.6/drivers/scsi/ |
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/scsi/ |
| 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 …]
|
| /kernel/linux/linux-5.10/arch/powerpc/platforms/pseries/ |
| D | hvCall.S | 62 mr r4,r3; \ 63 mr r3,r0; \ 75 mr r5,BUFREG; \ 147 mr r4,r5 148 mr r5,r6 149 mr r6,r7 150 mr r7,r8 151 mr r8,r9 152 mr r9,r10 172 mr r0,r4 [all …]
|
| /kernel/linux/linux-6.6/drivers/infiniband/hw/hns/ |
| D | hns_roce_mr.c | 51 static int alloc_mr_key(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr) in alloc_mr_key() argument 58 /* Allocate a key for mr from mr_table */ in alloc_mr_key() 62 ibdev_err(ibdev, "failed to alloc id for MR key, id(%d)\n", id); in alloc_mr_key() 66 mr->key = hw_index_to_key(id); /* MR key */ in alloc_mr_key() 81 static void free_mr_key(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr) in free_mr_key() argument 83 unsigned long obj = key_to_hw_index(mr->key); in free_mr_key() 89 static int alloc_mr_pbl(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr, in alloc_mr_pbl() argument 93 bool is_fast = mr->type == MR_TYPE_FRMR; in alloc_mr_pbl() 97 mr->pbl_hop_num = is_fast ? 1 : hr_dev->caps.pbl_hop_num; in alloc_mr_pbl() 100 buf_attr.region[0].size = mr->size; in alloc_mr_pbl() [all …]
|
| /kernel/linux/linux-5.10/drivers/infiniband/hw/hns/ |
| D | hns_roce_mr.c | 69 static int alloc_mr_key(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr, in alloc_mr_key() argument 76 /* Allocate a key for mr from mr_table */ in alloc_mr_key() 80 "failed to alloc bitmap for MR key, ret = %d.\n", in alloc_mr_key() 85 mr->iova = iova; /* MR va starting addr */ in alloc_mr_key() 86 mr->size = size; /* MR addr range */ in alloc_mr_key() 87 mr->pd = pd; /* MR num */ in alloc_mr_key() 88 mr->access = access; /* MR access permit */ in alloc_mr_key() 89 mr->enabled = 0; /* MR active status */ in alloc_mr_key() 90 mr->key = hw_index_to_key(obj); /* MR key */ in alloc_mr_key() 104 static void free_mr_key(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr) in free_mr_key() argument [all …]
|
| /kernel/linux/linux-6.6/drivers/infiniband/core/ |
| 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 …]
|
| /kernel/linux/linux-6.6/arch/powerpc/platforms/pseries/ |
| 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 …]
|
| /kernel/linux/linux-6.6/drivers/rtc/ |
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/rtc/ |
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ |
| 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 …]
|