| /linux/net/xdp/ |
| H A D | xdp_umem.c | 24 static void xdp_umem_unpin_pages(struct xdp_umem *umem) in xdp_umem_unpin_pages() argument 26 unpin_user_pages_dirty_lock(umem->pgs, umem->npgs, true); in xdp_umem_unpin_pages() 28 kvfree(umem->pgs); in xdp_umem_unpin_pages() 29 umem->pgs = NULL; in xdp_umem_unpin_pages() 32 static void xdp_umem_unaccount_pages(struct xdp_umem *umem) in xdp_umem_unaccount_pages() argument 34 if (umem->user) { in xdp_umem_unaccount_pages() 35 atomic_long_sub(umem->npgs, &umem->user->locked_vm); in xdp_umem_unaccount_pages() 36 free_uid(umem->user); in xdp_umem_unaccount_pages() 40 static void xdp_umem_addr_unmap(struct xdp_umem *umem) in xdp_umem_addr_unmap() argument 42 vunmap(umem->addrs); in xdp_umem_addr_unmap() [all …]
|
| H A D | xsk_buff_pool.c | 59 struct xdp_umem *umem, in xp_create_and_assign_umem() argument 62 bool unaligned = umem->flags & XDP_UMEM_UNALIGNED_CHUNK_FLAG; in xp_create_and_assign_umem() 67 entries = unaligned ? umem->chunks : 0; in xp_create_and_assign_umem() 72 pool->heads = kvzalloc_objs(*pool->heads, umem->chunks); in xp_create_and_assign_umem() 80 pool->chunk_mask = ~((u64)umem->chunk_size - 1); in xp_create_and_assign_umem() 81 pool->addrs_cnt = umem->size; in xp_create_and_assign_umem() 82 pool->heads_cnt = umem->chunks; in xp_create_and_assign_umem() 83 pool->free_heads_cnt = umem->chunks; in xp_create_and_assign_umem() 84 pool->headroom = umem->headroom; in xp_create_and_assign_umem() 85 pool->chunk_size = umem->chunk_size; in xp_create_and_assign_umem() [all …]
|
| H A D | xsk_diag.c | 50 struct xdp_umem *umem = xs->umem; in xsk_diag_put_umem() local 54 if (!umem) in xsk_diag_put_umem() 57 du.id = umem->id; in xsk_diag_put_umem() 58 du.size = umem->size; in xsk_diag_put_umem() 59 du.num_pages = umem->npgs; in xsk_diag_put_umem() 60 du.chunk_size = umem->chunk_size; in xsk_diag_put_umem() 61 du.headroom = umem->headroom; in xsk_diag_put_umem() 65 if (umem->zc) in xsk_diag_put_umem() 67 du.refs = refcount_read(&umem in xsk_diag_put_umem() [all...] |
| H A D | xdp_umem.h | 11 void xdp_get_umem(struct xdp_umem *umem); 12 void xdp_put_umem(struct xdp_umem *umem, bool defer_cleanup);
|
| H A D | xsk.c | 765 if (umem_shared && !(pool->umem->flags & XDP_UMEM_SG_FLAG)) { in xsk_tx_peek_release_desc_batch() 1089 page = pool->umem->pgs[addr >> PAGE_SHIFT]; in xsk_build_skb_zerocopy() 1671 if (xs->umem) { in xsk_bind() 1702 umem_xs->umem, in xsk_bind() 1746 xdp_get_umem(umem_xs->umem); in xsk_bind() 1747 WRITE_ONCE(xs->umem, umem_xs->umem); in xsk_bind() 1749 } else if (!xs->umem || !xsk_validate_queues(xs)) { in xsk_bind() 1754 xs->pool = xp_create_and_assign_umem(xs, xs->umem, in xsk_bind() 1775 xs->zc = xs->umem->zc; in xsk_bind() 1776 xs->sg = !!(xs->umem->flags & XDP_UMEM_SG_FLAG); in xsk_bind() [all …]
|
| /linux/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/ |
| H A D | umem.c | 40 struct nvkm_umem *umem; in nvkm_umem_search() local 46 list_for_each_entry(umem, &master->umem, head) { in nvkm_umem_search() 47 if (umem->object.object == handle) { in nvkm_umem_search() 48 memory = nvkm_memory_ref(umem->memory); in nvkm_umem_search() 55 umem = nvkm_umem(object); in nvkm_umem_search() 56 memory = nvkm_memory_ref(umem->memory); in nvkm_umem_search() 65 struct nvkm_umem *umem = nvkm_umem(object); in nvkm_umem_unmap() local 67 if (!umem->map) in nvkm_umem_unmap() 70 if (umem->io) { in nvkm_umem_unmap() 71 if (!IS_ERR(umem->bar)) { in nvkm_umem_unmap() [all …]
|
| /linux/tools/testing/selftests/bpf/ |
| H A D | xsk.c | 72 struct xsk_umem *umem; member 92 int xsk_umem__fd(const struct xsk_umem *umem) in xsk_umem__fd() argument 94 return umem ? umem->fd : -EINVAL; in xsk_umem__fd() 163 static int xsk_create_umem_rings(struct xsk_umem *umem, int fd, in xsk_create_umem_rings() argument 172 &umem->config.fill_size, in xsk_create_umem_rings() 173 sizeof(umem->config.fill_size)); in xsk_create_umem_rings() 178 &umem->config.comp_size, in xsk_create_umem_rings() 179 sizeof(umem->config.comp_size)); in xsk_create_umem_rings() 187 map = mmap(NULL, off.fr.desc + umem->config.fill_size * sizeof(__u64), in xsk_create_umem_rings() 193 fill->mask = umem->config.fill_size - 1; in xsk_create_umem_rings() [all …]
|
| H A D | xskxceiver.c | 125 struct xsk_umem_info *umem; in ifobj_zc_avail() local 134 umem = calloc(1, sizeof(struct xsk_umem_info)); in ifobj_zc_avail() 135 if (!umem) { in ifobj_zc_avail() 139 umem->frame_size = XSK_UMEM__DEFAULT_FRAME_SIZE; in ifobj_zc_avail() 140 ret = xsk_configure_umem(ifobject, umem, bufs, umem_sz); in ifobj_zc_avail() 150 ret = xsk_configure_socket(xsk, umem, ifobject, false); in ifobj_zc_avail() 157 munmap(umem->buffer, umem_sz); in ifobj_zc_avail() 158 xsk_umem__delete(umem->umem); in ifobj_zc_avail() 159 free(umem); in ifobj_zc_avail()
|
| H A D | xsk.h | 187 int xsk_umem__fd(const struct xsk_umem *umem); 219 int xsk_umem__create(struct xsk_umem **umem, 226 struct xsk_umem *umem, 232 __u32 queue_id, struct xsk_umem *umem, 239 /* Returns 0 for success and -EBUSY if the umem is still in use. */ 240 int xsk_umem__delete(struct xsk_umem *umem);
|
| H A D | xskxceiver.h | 75 struct xsk_umem *umem; global() member 90 struct xsk_umem_info *umem; global() member 134 struct xsk_umem_info *umem; global() member
|
| H A D | xdp_hw_metadata.c | 60 struct xsk_umem *umem; member 116 ret = xsk_umem__create(&xsk->umem, in open_xsk() 125 xsk->umem, in open_xsk() 156 if (xsk->umem) in close_xsk() 157 xsk_umem__delete(xsk->umem); in close_xsk()
|
| /linux/tools/testing/selftests/bpf/prog_tests/ |
| H A D | test_xsk.c | 72 static u64 umem_size(struct xsk_umem_info *umem) in umem_size() argument 74 return umem->num_frames * umem->frame_size; in umem_size() 77 int xsk_configure_umem(struct ifobject *ifobj, struct xsk_umem_info *umem, void *buffer, in xsk_configure_umem() argument 83 .frame_size = umem->frame_size, in xsk_configure_umem() 84 .frame_headroom = umem->frame_headroom, in xsk_configure_umem() 89 if (umem->fill_size) in xsk_configure_umem() 90 cfg.fill_size = umem->fill_size; in xsk_configure_umem() 92 if (umem->comp_size) in xsk_configure_umem() 93 cfg.comp_size = umem->comp_size; in xsk_configure_umem() 95 if (umem->unaligned_mode) in xsk_configure_umem() [all …]
|
| H A D | test_xsk.h | 87 struct xsk_umem_info *umem; member 104 struct xsk_umem *umem; member 159 int xsk_configure_umem(struct ifobject *ifobj, struct xsk_umem_info *umem, void *buffer, u64 size); 160 int xsk_configure_socket(struct xsk_socket_info *xsk, struct xsk_umem_info *umem,
|
| H A D | xdp_metadata.c | 51 struct xsk_umem *umem; member 84 ret = xsk_umem__create(&xsk->umem, in open_xsk() 93 xsk->umem, in open_xsk() 131 if (xsk->umem) in close_xsk() 132 xsk_umem__delete(xsk->umem); in close_xsk()
|
| /linux/drivers/infiniband/sw/rxe/ |
| H A D | rxe_odp.c | 46 struct ib_umem_odp *umem_odp = to_ib_umem_odp(mr->umem); in rxe_odp_do_pagefault_and_lock() 51 if (umem_odp->umem.writable && !(flags & RXE_PAGEFAULT_RDONLY)) in rxe_odp_do_pagefault_and_lock() 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() 104 mr->umem = &umem_odp->umem; in rxe_odp_mr_init_user() 112 mr->umem = NULL; in rxe_odp_mr_init_user() 161 struct ib_umem_odp *umem_odp = to_ib_umem_odp(mr->umem); in rxe_odp_map_range_and_lock() 194 struct ib_umem_odp *umem_odp = to_ib_umem_odp(mr->umem); in __rxe_odp_mr_copy() 230 struct ib_umem_odp *umem_odp = to_ib_umem_odp(mr->umem); in rxe_odp_mr_copy() [all …]
|
| H A D | rxe_mr.c | 196 struct ib_umem *umem; in rxe_mr_init_user() local 201 umem = ib_umem_get_va(&rxe->ib_dev, start, length, access); in rxe_mr_init_user() 202 if (IS_ERR(umem)) { in rxe_mr_init_user() 204 (int)PTR_ERR(umem)); in rxe_mr_init_user() 205 return PTR_ERR(umem); in rxe_mr_init_user() 208 err = alloc_mr_page_info(mr, ib_umem_num_pages(umem)); in rxe_mr_init_user() 212 err = rxe_mr_fill_pages_from_sgt(mr, &umem->sgt_append.sgt); in rxe_mr_init_user() 216 mr->umem = umem; in rxe_mr_init_user() 224 ib_umem_release(umem); in rxe_mr_init_user() 813 ib_umem_release(mr->umem); in rxe_mr_cleanup()
|
| /linux/include/rdma/ |
| H A D | ib_umem_odp.h | 14 struct ib_umem umem; member 41 static inline struct ib_umem_odp *to_ib_umem_odp(struct ib_umem *umem) in to_ib_umem_odp() argument 43 return container_of(umem, struct ib_umem_odp, umem); in to_ib_umem_odp()
|
| /linux/drivers/vdpa/vdpa_user/ |
| H A D | vduse_dev.c | 108 struct vduse_umem *umem; member 1336 if (!dev->as[asid].umem) in vduse_dev_dereg_umem() 1343 if (dev->as[asid].umem->iova != iova || in vduse_dev_dereg_umem() 1348 unpin_user_pages_dirty_lock(dev->as[asid].umem->pages, in vduse_dev_dereg_umem() 1349 dev->as[asid].umem->npages, true); in vduse_dev_dereg_umem() 1350 atomic64_sub(dev->as[asid].umem->npages, &dev->as[asid].umem->mm->pinned_vm); in vduse_dev_dereg_umem() 1351 mmdrop(dev->as[asid].umem->mm); in vduse_dev_dereg_umem() 1352 vfree(dev->as[asid].umem->pages); in vduse_dev_dereg_umem() 1353 kfree(dev->as[asid].umem); in vduse_dev_dereg_umem() 1354 dev->as[asid].umem = NULL; in vduse_dev_dereg_umem() [all …]
|
| /linux/include/net/ |
| H A D | xdp_sock_drv.h | 62 struct xdp_umem *umem = pool->umem; in xsk_pool_get_rx_frame_size() local 69 mbuf = pool->dev && (umem->flags & XDP_UMEM_SG_FLAG); in xsk_pool_get_rx_frame_size() 101 struct xdp_umem *umem = pool->umem; in xsk_pool_dma_map() local 103 return xp_dma_map(pool, dev, attrs, umem->pgs, umem->npgs); in xsk_pool_dma_map()
|
| H A D | xsk_buff_pool.h | 54 struct xdp_umem *umem; member 108 struct xdp_umem *umem,
|
| /linux/drivers/vhost/ |
| H A D | vhost.c | 404 vq->umem = NULL; in vhost_vq_reset() 606 dev->umem = NULL; in vhost_dev_init() 1166 void vhost_dev_reset_owner(struct vhost_dev *dev, struct vhost_iotlb *umem) in vhost_dev_reset_owner() argument 1173 dev->umem = umem; in vhost_dev_reset_owner() 1178 dev->vqs[i]->umem = umem; in vhost_dev_reset_owner() 1248 vhost_iotlb_free(dev->umem); in vhost_dev_cleanup() 1249 dev->umem = NULL; in vhost_dev_cleanup() 1285 static bool vq_memory_access_ok(void __user *log_base, struct vhost_iotlb *umem, in vq_memory_access_ok() argument 1290 if (!umem) in vq_memory_access_ok() 1293 list_for_each_entry(map, &umem->list, link) { in vq_memory_access_ok() [all …]
|
| H A D | test.c | 227 struct vhost_iotlb *umem; in vhost_test_reset_owner() local 233 umem = vhost_dev_reset_owner_prepare(); in vhost_test_reset_owner() 234 if (!umem) { in vhost_test_reset_owner() 241 vhost_dev_reset_owner(&n->dev, umem); in vhost_test_reset_owner()
|
| /linux/drivers/infiniband/hw/erdma/ |
| H A D | erdma_verbs.c | 596 rdma_umem_for_each_dma_block(mem->umem, &biter, mem->page_size) in erdma_fill_bottom_mtt() 835 mem->umem = ib_umem_get_va(&dev->ibdev, start, len, access); in get_mtt_entries() 836 if (IS_ERR(mem->umem)) { in get_mtt_entries() 837 ret = PTR_ERR(mem->umem); in get_mtt_entries() 838 mem->umem = NULL; in get_mtt_entries() 844 mem->page_size = ib_umem_find_best_pgsz(mem->umem, req_page_size, virt); in get_mtt_entries() 846 mem->mtt_nents = ib_umem_num_dma_blocks(mem->umem, mem->page_size); in get_mtt_entries() 860 if (mem->umem) { in get_mtt_entries() 861 ib_umem_release(mem->umem); in get_mtt_entries() 862 mem->umem = NULL; in get_mtt_entries() [all …]
|
| /linux/arch/powerpc/kexec/ |
| H A D | file_load_64.c | 726 struct crash_mem *umem = NULL; in setup_new_fdt_ppc64() local 735 ret = get_usable_memory_ranges(&umem); in setup_new_fdt_ppc64() 739 ret = update_usable_mem_fdt(fdt, umem); in setup_new_fdt_ppc64() 801 kfree(umem); in setup_new_fdt_ppc64()
|
| /linux/drivers/vdpa/mlx5/net/ |
| H A D | mlx5_vnet.c | 325 static int umem_frag_buf_alloc(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_umem *umem, int size) in umem_frag_buf_alloc() argument 327 struct mlx5_frag_buf *frag_buf = &umem->frag_buf; in umem_frag_buf_alloc() 711 static void umem_frag_buf_free(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_umem *umem) in umem_frag_buf_free() argument 713 mlx5_frag_buf_free(ndev->mvdev.mdev, &umem->frag_buf); in umem_frag_buf_free() 724 struct mlx5_vdpa_umem *umem; in create_umem() local 726 set_umem_size(ndev, mvq, num, &umem); in create_umem() 727 err = umem_frag_buf_alloc(ndev, umem, umem->size); in create_umem() 731 inlen = MLX5_ST_SZ_BYTES(create_umem_in) + MLX5_ST_SZ_BYTES(mtt) * umem->frag_buf.npages; in create_umem() 741 um = MLX5_ADDR_OF(create_umem_in, in, umem); in create_umem() 742 MLX5_SET(umem, um, log_page_size, umem->frag_buf.page_shift - MLX5_ADAPTER_PAGE_SHIFT); in create_umem() [all …]
|