Home
last modified time | relevance | path

Searched refs:umem_odp (Results 1 – 5 of 5) sorted by relevance

/linux-6.6.21/drivers/infiniband/core/
Dumem_odp.c50 static inline int ib_init_umem_odp(struct ib_umem_odp *umem_odp, in ib_init_umem_odp() argument
55 umem_odp->umem.is_odp = 1; in ib_init_umem_odp()
56 mutex_init(&umem_odp->umem_mutex); in ib_init_umem_odp()
58 if (!umem_odp->is_implicit_odp) { in ib_init_umem_odp()
59 size_t page_size = 1UL << umem_odp->page_shift; in ib_init_umem_odp()
64 start = ALIGN_DOWN(umem_odp->umem.address, page_size); in ib_init_umem_odp()
65 if (check_add_overflow(umem_odp->umem.address, in ib_init_umem_odp()
66 (unsigned long)umem_odp->umem.length, in ib_init_umem_odp()
73 ndmas = (end - start) >> umem_odp->page_shift; in ib_init_umem_odp()
78 umem_odp->pfn_list = kvcalloc( in ib_init_umem_odp()
[all …]
DMakefile44 ib_uverbs-$(CONFIG_INFINIBAND_ON_DEMAND_PAGING) += umem_odp.o
/linux-6.6.21/include/rdma/
Dib_umem_odp.h53 static inline unsigned long ib_umem_start(struct ib_umem_odp *umem_odp) in ib_umem_start() argument
55 return umem_odp->notifier.interval_tree.start; in ib_umem_start()
59 static inline unsigned long ib_umem_end(struct ib_umem_odp *umem_odp) in ib_umem_end() argument
61 return umem_odp->notifier.interval_tree.last + 1; in ib_umem_end()
64 static inline size_t ib_umem_odp_num_pages(struct ib_umem_odp *umem_odp) in ib_umem_odp_num_pages() argument
66 return (ib_umem_end(umem_odp) - ib_umem_start(umem_odp)) >> in ib_umem_odp_num_pages()
67 umem_odp->page_shift; in ib_umem_odp_num_pages()
94 void ib_umem_odp_release(struct ib_umem_odp *umem_odp);
96 int ib_umem_odp_map_dma_and_lock(struct ib_umem_odp *umem_odp, u64 start_offset,
99 void ib_umem_odp_unmap_dma_pages(struct ib_umem_odp *umem_odp, u64 start_offset,
[all …]
/linux-6.6.21/drivers/infiniband/hw/mlx5/
Dodp.c230 struct ib_umem_odp *umem_odp = in mlx5_ib_invalidate_range() local
244 mutex_lock(&umem_odp->umem_mutex); in mlx5_ib_invalidate_range()
250 if (!umem_odp->npages) in mlx5_ib_invalidate_range()
252 mr = umem_odp->private; in mlx5_ib_invalidate_range()
254 start = max_t(u64, ib_umem_start(umem_odp), range->start); in mlx5_ib_invalidate_range()
255 end = min_t(u64, ib_umem_end(umem_odp), range->end); in mlx5_ib_invalidate_range()
263 for (addr = start; addr < end; addr += BIT(umem_odp->page_shift)) { in mlx5_ib_invalidate_range()
264 idx = (addr - ib_umem_start(umem_odp)) >> umem_odp->page_shift; in mlx5_ib_invalidate_range()
271 if (umem_odp->dma_list[idx] & in mlx5_ib_invalidate_range()
306 ib_umem_odp_unmap_dma_pages(umem_odp, start, end); in mlx5_ib_invalidate_range()
[all …]
/linux-6.6.21/Documentation/driver-api/
Dinfiniband.rst43 .. kernel-doc:: drivers/infiniband/core/umem_odp.c