Home
last modified time | relevance | path

Searched full:umem (Results 1 – 25 of 39) sorted by relevance

12

/linux/net/xdp/
H A Dxdp_umem.c24 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 Dxsk_buff_pool.c59 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 in xp_create_and_assign_umem()
277 struct xdp_umem *umem = umem_xs->umem; xp_assign_dev_shared() local
360 xp_create_dma_map(struct device * dev,struct net_device * netdev,u32 nr_pages,struct xdp_umem * umem) xp_create_dma_map() argument
[all...]
H A Dxsk_diag.c50 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 Dxdp_umem.h11 void xdp_get_umem(struct xdp_umem *umem);
12 void xdp_put_umem(struct xdp_umem *umem, bool defer_cleanup);
H A Dxsk.c765 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()
1671 if (xs->umem) { in xsk_bind()
1698 /* Share the umem with another socket on another qid in xsk_bind()
1702 umem_xs->umem, in xsk_bind()
1730 /* If underlying shared umem was created without Tx 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_queue in xsk_bind()
1827 struct xdp_umem *umem; xsk_setsockopt() local
[all...]
/linux/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/
H A Dumem.c22 #include "umem.h"
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()
[all …]
/linux/tools/testing/selftests/bpf/
H A Dxsk.c72 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 Dxskxceiver.c13 * a unique UMEM. It validates in-order packet delivery and packet content
35 * Increase the UMEM frame headroom to a value which results in
38 * Set the 'len' field of tx descriptors to an invalid value (umem frame
62 * - Each thread creates one AF_XDP socket connected to a unique umem for each
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()
[all …]
H A Dxsk.h187 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 Dxskxceiver.h75 struct xsk_umem *umem; global() member
90 struct xsk_umem_info *umem; global() member
134 struct xsk_umem_info *umem; global() member
H A Dxdp_hw_metadata.c60 struct xsk_umem *umem; member
116 ret = xsk_umem__create(&xsk->umem, in open_xsk()
125 xsk->umem, in open_xsk()
132 /* First half of umem is for TX. This way address matches 1-to-1 in open_xsk()
141 /* Second half of umem is for RX. */ in open_xsk()
156 if (xsk->umem) in close_xsk()
157 xsk_umem__delete(xsk->umem); in close_xsk()
437 memcpy(data, rx_packet, len); /* don't share umem chunk for simplicity */ in ping_pong()
/linux/tools/testing/selftests/bpf/prog_tests/
H A Dtest_xsk.c72 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 Dxdp_metadata.c51 struct xsk_umem *umem; member
84 ret = xsk_umem__create(&xsk->umem, in open_xsk()
93 xsk->umem, in open_xsk()
100 /* First half of umem is for TX. This way address matches 1-to-1 in open_xsk()
109 /* Second half of umem is for RX. */ in open_xsk()
131 if (xsk->umem) in close_xsk()
132 xsk_umem__delete(xsk->umem); in close_xsk()
H A Dtest_xsk.h87 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,
/linux/Documentation/networking/
H A Daf_xdp.rst30 UMEM. RX and TX can share the same UMEM so that a packet does not have
36 The UMEM consists of a number of equally sized chunks. A descriptor in
38 is simply an offset within the entire UMEM region. The user space
39 allocates memory for this UMEM using whatever means it feels is most
42 UMEM also has two rings: the FILL ring and the COMPLETION ring. The
58 The UMEM can be shared between processes, if desired. If a process
59 wants to do this, it simply skips the registration of the UMEM and its
61 call and submits the XSK of the process it would like to share UMEM
64 this shared UMEM. Note that since the ring structures are
69 UMEM. It is the responsibility of a single process to handle the UMEM.
[all …]
/linux/include/rdma/
H A Dib_umem_odp.h14 struct ib_umem umem; member
22 * umem, allowing only a single thread to map/unmap pages. The mutex
31 * An implicit odp umem cannot be DMA mapped, has 0 length, and serves
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()
46 /* Returns the first page of an ODP umem. */
52 /* Returns the address of the page after the last one of an ODP umem. */
/linux/drivers/vdpa/vdpa_user/
H A Dvduse_dev.c108 struct vduse_umem *umem; member
1320 if (!dev->as[asid].umem) in vduse_dev_dereg_umem()
1327 if (dev->as[asid].umem->iova != iova || in vduse_dev_dereg_umem()
1332 unpin_user_pages_dirty_lock(dev->as[asid].umem->pages, in vduse_dev_dereg_umem()
1333 dev->as[asid].umem->npages, true); in vduse_dev_dereg_umem()
1334 atomic64_sub(dev->as[asid].umem->npages, &dev->as[asid].umem->mm->pinned_vm); in vduse_dev_dereg_umem()
1335 mmdrop(dev->as[asid].umem->mm); in vduse_dev_dereg_umem()
1336 vfree(dev->as[asid].umem->pages); in vduse_dev_dereg_umem()
1337 kfree(dev->as[asid].umem); in vduse_dev_dereg_umem()
1338 dev->as[asid].umem = NULL; in vduse_dev_dereg_umem()
[all …]
/linux/drivers/vhost/
H A Dvhost.c393 vq->umem = NULL; in vhost_vq_reset()
594 dev->umem = NULL; in vhost_dev_init()
1154 void vhost_dev_reset_owner(struct vhost_dev *dev, struct vhost_iotlb *umem) in vhost_dev_reset_owner() argument
1161 dev->umem = umem; in vhost_dev_reset_owner()
1166 dev->vqs[i]->umem = umem; in vhost_dev_reset_owner()
1221 vhost_iotlb_free(dev->umem); in vhost_dev_cleanup()
1222 dev->umem = NULL; in vhost_dev_cleanup()
1258 static bool vq_memory_access_ok(void __user *log_base, struct vhost_iotlb *umem, in vq_memory_access_ok() argument
1263 if (!umem) in vq_memory_access_ok()
1266 list_for_each_entry(map, &umem->list, link) { in vq_memory_access_ok()
[all …]
H A Dtest.c227 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/vdpa/mlx5/net/
H A Dmlx5_vnet.c120 /* umem resources are required for the virtqueue operation. They're use
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()
664 "Failed reading vdpa umem capabilities with err %d\n", err); in read_umem_params()
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()
[all …]
/linux/drivers/net/ethernet/mellanox/mlx5/core/en/
H A Dxdp.h63 /* No xdp_frame was created at all, the transmit happened from a UMEM
64 * page. The UMEM Completion Ring producer pointer has to be increased.
/linux/drivers/infiniband/hw/mlx5/
H A Dsrq.h31 struct ib_umem *umem; member
/linux/drivers/gpu/drm/nouveau/include/nvkm/core/
H A Dclient.h19 struct list_head umem; member
/linux/drivers/infiniband/hw/usnic/
H A Dusnic_ib.h70 struct usnic_uiom_reg *umem; member
/linux/drivers/gpu/drm/nouveau/nvkm/core/
H A Dclient.c123 INIT_LIST_HEAD(&client->umem); in nvkm_client_new()

12