Home
last modified time | relevance | path

Searched refs:sgt (Results 1 – 25 of 190) sorted by relevance

12345678

/Linux-v5.15/drivers/media/common/videobuf2/
Dvideobuf2-dma-contig.c49 static unsigned long vb2_dc_get_contiguous_size(struct sg_table *sgt) in vb2_dc_get_contiguous_size() argument
52 dma_addr_t expected = sg_dma_address(sgt->sgl); in vb2_dc_get_contiguous_size()
56 for_each_sgtable_dma_sg(sgt, s, i) { in vb2_dc_get_contiguous_size()
100 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_prepare() local
102 if (!sgt) in vb2_dc_prepare()
105 dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir); in vb2_dc_prepare()
111 struct sg_table *sgt = buf->dma_sgt; in vb2_dc_finish() local
113 if (!sgt) in vb2_dc_finish()
116 dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir); in vb2_dc_finish()
215 struct sg_table sgt; member
[all …]
Dvideobuf2-dma-sg.c104 struct sg_table *sgt; in vb2_dma_sg_alloc() local
145 sgt = &buf->sg_table; in vb2_dma_sg_alloc()
150 if (dma_map_sgtable(buf->dev, sgt, buf->dma_dir, in vb2_dma_sg_alloc()
181 struct sg_table *sgt = &buf->sg_table; in vb2_dma_sg_put() local
187 dma_unmap_sgtable(buf->dev, sgt, buf->dma_dir, in vb2_dma_sg_put()
203 struct sg_table *sgt = buf->dma_sgt; in vb2_dma_sg_prepare() local
205 dma_sync_sgtable_for_device(buf->dev, sgt, buf->dma_dir); in vb2_dma_sg_prepare()
211 struct sg_table *sgt = buf->dma_sgt; in vb2_dma_sg_finish() local
213 dma_sync_sgtable_for_cpu(buf->dev, sgt, buf->dma_dir); in vb2_dma_sg_finish()
221 struct sg_table *sgt; in vb2_dma_sg_get_userptr() local
[all …]
Dvideobuf2-vmalloc.c206 struct sg_table sgt; member
216 struct sg_table *sgt; in vb2_vmalloc_dmabuf_ops_attach() local
226 sgt = &attach->sgt; in vb2_vmalloc_dmabuf_ops_attach()
227 ret = sg_alloc_table(sgt, num_pages, GFP_KERNEL); in vb2_vmalloc_dmabuf_ops_attach()
232 for_each_sgtable_sg(sgt, sg, i) { in vb2_vmalloc_dmabuf_ops_attach()
236 sg_free_table(sgt); in vb2_vmalloc_dmabuf_ops_attach()
253 struct sg_table *sgt; in vb2_vmalloc_dmabuf_ops_detach() local
258 sgt = &attach->sgt; in vb2_vmalloc_dmabuf_ops_detach()
262 dma_unmap_sgtable(db_attach->dev, sgt, attach->dma_dir, 0); in vb2_vmalloc_dmabuf_ops_detach()
263 sg_free_table(sgt); in vb2_vmalloc_dmabuf_ops_detach()
[all …]
/Linux-v5.15/drivers/gpu/drm/tegra/
Dgem.c31 static int sg_alloc_table_from_sg(struct sg_table *sgt, struct scatterlist *sg, in sg_alloc_table_from_sg() argument
38 err = sg_alloc_table(sgt, nents, gfp_mask); in sg_alloc_table_from_sg()
42 dst = sgt->sgl; in sg_alloc_table_from_sg()
57 struct sg_table *sgt; in tegra_bo_pin() local
81 sgt = kzalloc(sizeof(*sgt), GFP_KERNEL); in tegra_bo_pin()
82 if (!sgt) in tegra_bo_pin()
90 err = sg_alloc_table_from_pages(sgt, obj->pages, obj->num_pages, in tegra_bo_pin()
94 } else if (obj->sgt) { in tegra_bo_pin()
101 err = sg_alloc_table_from_sg(sgt, obj->sgt->sgl, in tegra_bo_pin()
102 obj->sgt->orig_nents, GFP_KERNEL); in tegra_bo_pin()
[all …]
Dplane.c77 copy->sgt[i] = NULL; in tegra_plane_atomic_duplicate_state()
148 struct sg_table *sgt; in tegra_dc_pin() local
163 sgt = host1x_bo_pin(dc->dev, &bo->base, phys); in tegra_dc_pin()
164 if (IS_ERR(sgt)) { in tegra_dc_pin()
165 err = PTR_ERR(sgt); in tegra_dc_pin()
169 if (sgt) { in tegra_dc_pin()
170 err = dma_map_sgtable(dc->dev, sgt, DMA_TO_DEVICE, 0); in tegra_dc_pin()
180 if (sgt->nents > 1) { in tegra_dc_pin()
185 state->iova[i] = sg_dma_address(sgt->sgl); in tegra_dc_pin()
186 state->sgt[i] = sgt; in tegra_dc_pin()
[all …]
/Linux-v5.15/drivers/gpu/drm/armada/
Darmada_gem.c66 if (dobj->sgt) in armada_gem_free_object()
68 dobj->sgt, DMA_TO_DEVICE); in armada_gem_free_object()
391 struct sg_table *sgt; in armada_gem_prime_map_dma_buf() local
394 sgt = kmalloc(sizeof(*sgt), GFP_KERNEL); in armada_gem_prime_map_dma_buf()
395 if (!sgt) in armada_gem_prime_map_dma_buf()
403 if (sg_alloc_table(sgt, count, GFP_KERNEL)) in armada_gem_prime_map_dma_buf()
408 for_each_sgtable_sg(sgt, sg, i) { in armada_gem_prime_map_dma_buf()
418 if (dma_map_sgtable(attach->dev, sgt, dir, 0)) in armada_gem_prime_map_dma_buf()
422 if (sg_alloc_table(sgt, 1, GFP_KERNEL)) in armada_gem_prime_map_dma_buf()
425 sg_set_page(sgt->sgl, dobj->page, dobj->obj.size, 0); in armada_gem_prime_map_dma_buf()
[all …]
/Linux-v5.15/drivers/gpu/drm/i915/
Di915_mm.c36 struct sgt_iter sgt; member
56 return (r->sgt.dma + r->sgt.curr + r->iobase) >> PAGE_SHIFT; in sgt_pfn()
58 return r->sgt.pfn + (r->sgt.curr >> PAGE_SHIFT); in sgt_pfn()
65 if (GEM_WARN_ON(!r->sgt.sgp)) in remap_sg()
73 r->sgt.curr += PAGE_SIZE; in remap_sg()
74 if (r->sgt.curr >= r->sgt.max) in remap_sg()
75 r->sgt = __sgt_iter(__sg_next(r->sgt.sgp), use_dma(r->iobase)); in remap_sg()
132 .sgt = __sgt_iter(sgl, use_dma(iobase)), in remap_io_sg()
/Linux-v5.15/drivers/hwtracing/intel_th/
Dmsu-sink.c51 static int msu_sink_alloc_window(void *data, struct sg_table **sgt, size_t size) in msu_sink_alloc_window() argument
64 ret = sg_alloc_table(*sgt, nents, GFP_KERNEL); in msu_sink_alloc_window()
68 priv->sgts[priv->nr_sgts++] = *sgt; in msu_sink_alloc_window()
70 for_each_sg((*sgt)->sgl, sg_ptr, nents, i) { in msu_sink_alloc_window()
81 static void msu_sink_free_window(void *data, struct sg_table *sgt) in msu_sink_free_window() argument
87 for_each_sg(sgt->sgl, sg_ptr, sgt->nents, i) { in msu_sink_free_window()
92 sg_free_table(sgt); in msu_sink_free_window()
96 static int msu_sink_ready(void *data, struct sg_table *sgt, size_t bytes) in msu_sink_ready() argument
100 intel_th_msc_window_unlock(priv->dev, sgt); in msu_sink_ready()
/Linux-v5.15/drivers/xen/
Dgntdev-dmabuf.c51 struct sg_table *sgt; member
70 struct sg_table *sgt; member
203 struct sg_table *sgt; in dmabuf_pages_to_sgt() local
206 sgt = kmalloc(sizeof(*sgt), GFP_KERNEL); in dmabuf_pages_to_sgt()
207 if (!sgt) { in dmabuf_pages_to_sgt()
212 ret = sg_alloc_table_from_pages(sgt, pages, nr_pages, 0, in dmabuf_pages_to_sgt()
218 return sgt; in dmabuf_pages_to_sgt()
221 kfree(sgt); in dmabuf_pages_to_sgt()
246 struct sg_table *sgt = gntdev_dmabuf_attach->sgt; in dmabuf_exp_ops_detach() local
248 if (sgt) { in dmabuf_exp_ops_detach()
[all …]
/Linux-v5.15/kernel/dma/
Dmapping.c259 int dma_map_sgtable(struct device *dev, struct sg_table *sgt, in dma_map_sgtable() argument
264 nents = __dma_map_sg_attrs(dev, sgt->sgl, sgt->orig_nents, dir, attrs); in dma_map_sgtable()
267 sgt->nents = nents; in dma_map_sgtable()
392 int dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt, in dma_get_sgtable_attrs() argument
399 return dma_direct_get_sgtable(dev, sgt, cpu_addr, dma_addr, in dma_get_sgtable_attrs()
403 return ops->get_sgtable(dev, sgt, cpu_addr, dma_addr, size, attrs); in dma_get_sgtable_attrs()
610 struct sg_table *sgt; in alloc_single_sgt() local
613 sgt = kmalloc(sizeof(*sgt), gfp); in alloc_single_sgt()
614 if (!sgt) in alloc_single_sgt()
616 if (sg_alloc_table(sgt, 1, gfp)) in alloc_single_sgt()
[all …]
/Linux-v5.15/drivers/infiniband/core/
Dumem_dmabuf.c14 struct sg_table *sgt; in ib_umem_dmabuf_map_pages() local
23 if (umem_dmabuf->sgt) in ib_umem_dmabuf_map_pages()
26 sgt = dma_buf_map_attachment(umem_dmabuf->attach, DMA_BIDIRECTIONAL); in ib_umem_dmabuf_map_pages()
27 if (IS_ERR(sgt)) in ib_umem_dmabuf_map_pages()
28 return PTR_ERR(sgt); in ib_umem_dmabuf_map_pages()
35 for_each_sgtable_dma_sg(sgt, sg, i) { in ib_umem_dmabuf_map_pages()
58 umem_dmabuf->umem.sgt_append.sgt.sgl = umem_dmabuf->first_sg; in ib_umem_dmabuf_map_pages()
59 umem_dmabuf->umem.sgt_append.sgt.nents = nmap; in ib_umem_dmabuf_map_pages()
60 umem_dmabuf->sgt = sgt; in ib_umem_dmabuf_map_pages()
80 if (!umem_dmabuf->sgt) in ib_umem_dmabuf_unmap_pages()
[all …]
/Linux-v5.15/include/linux/
Dscatterlist.h43 struct sg_table sgt; /* The scatter list table */ member
157 #define for_each_sgtable_sg(sgt, sg, i) \ argument
158 for_each_sg((sgt)->sgl, sg, (sgt)->orig_nents, i)
165 #define for_each_sgtable_dma_sg(sgt, sg, i) \ argument
166 for_each_sg((sgt)->sgl, sg, (sgt)->nents, i)
291 void sg_free_append_table(struct sg_append_table *sgt);
295 int sg_alloc_append_table_from_pages(struct sg_append_table *sgt,
300 int sg_alloc_table_from_pages_segment(struct sg_table *sgt, struct page **pages,
325 static inline int sg_alloc_table_from_pages(struct sg_table *sgt, in sg_alloc_table_from_pages() argument
331 return sg_alloc_table_from_pages_segment(sgt, pages, n_pages, offset, in sg_alloc_table_from_pages()
[all …]
Ddma-mapping.h113 int dma_map_sgtable(struct device *dev, struct sg_table *sgt,
135 int dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt,
152 struct sg_table *sgt, enum dma_data_direction dir);
154 struct sg_table *sgt);
157 size_t size, struct sg_table *sgt);
180 static inline int dma_map_sgtable(struct device *dev, struct sg_table *sgt, in dma_map_sgtable() argument
234 struct sg_table *sgt, void *cpu_addr, dma_addr_t dma_addr, in dma_get_sgtable_attrs() argument
284 struct sg_table *sgt, enum dma_data_direction dir) in dma_free_noncontiguous() argument
288 struct sg_table *sgt) in dma_vmap_noncontiguous() argument
296 struct vm_area_struct *vma, size_t size, struct sg_table *sgt) in dma_mmap_noncontiguous() argument
[all …]
/Linux-v5.15/drivers/staging/media/tegra-vde/
Ddmabuf-cache.c24 struct sg_table *sgt; member
38 dma_buf_unmap_attachment(entry->a, entry->sgt, entry->dma_dir); in tegra_vde_release_entry()
69 struct sg_table *sgt; in tegra_vde_dmabuf_cache_map() local
90 *addrp = sg_dma_address(entry->sgt->sgl); in tegra_vde_dmabuf_cache_map()
102 sgt = dma_buf_map_attachment(attachment, dma_dir); in tegra_vde_dmabuf_cache_map()
103 if (IS_ERR(sgt)) { in tegra_vde_dmabuf_cache_map()
105 err = PTR_ERR(sgt); in tegra_vde_dmabuf_cache_map()
109 if (!vde->domain && sgt->nents > 1) { in tegra_vde_dmabuf_cache_map()
122 err = tegra_vde_iommu_map(vde, sgt, &iova, dmabuf->size); in tegra_vde_dmabuf_cache_map()
128 *addrp = sg_dma_address(sgt->sgl); in tegra_vde_dmabuf_cache_map()
[all …]
/Linux-v5.15/net/ceph/
Dcrypto.c161 static int setup_sgtable(struct sg_table *sgt, struct scatterlist *prealloc_sg, in setup_sgtable() argument
173 memset(sgt, 0, sizeof(*sgt)); in setup_sgtable()
183 ret = sg_alloc_table(sgt, chunk_cnt, GFP_NOFS); in setup_sgtable()
189 sgt->sgl = prealloc_sg; in setup_sgtable()
190 sgt->nents = sgt->orig_nents = 1; in setup_sgtable()
193 for_each_sg(sgt->sgl, sg, sgt->orig_nents, i) { in setup_sgtable()
213 static void teardown_sgtable(struct sg_table *sgt) in teardown_sgtable() argument
215 if (sgt->orig_nents > 1) in teardown_sgtable()
216 sg_free_table(sgt); in teardown_sgtable()
223 struct sg_table sgt; in ceph_aes_crypt() local
[all …]
/Linux-v5.15/drivers/gpu/drm/mediatek/
Dmtk_drm_gem.c183 struct sg_table *sgt; in mtk_gem_prime_get_sg_table() local
186 sgt = kzalloc(sizeof(*sgt), GFP_KERNEL); in mtk_gem_prime_get_sg_table()
187 if (!sgt) in mtk_gem_prime_get_sg_table()
190 ret = dma_get_sgtable_attrs(priv->dma_dev, sgt, mtk_gem->cookie, in mtk_gem_prime_get_sg_table()
195 kfree(sgt); in mtk_gem_prime_get_sg_table()
199 return sgt; in mtk_gem_prime_get_sg_table()
226 struct sg_table *sgt = NULL; in mtk_drm_gem_prime_vmap() local
232 sgt = mtk_gem_prime_get_sg_table(obj); in mtk_drm_gem_prime_vmap()
233 if (IS_ERR(sgt)) in mtk_drm_gem_prime_vmap()
234 return PTR_ERR(sgt); in mtk_drm_gem_prime_vmap()
[all …]
/Linux-v5.15/drivers/gpu/drm/
Ddrm_prime.c617 struct sg_table *sgt; in drm_gem_map_dma_buf() local
626 sgt = obj->funcs->get_sg_table(obj); in drm_gem_map_dma_buf()
627 if (IS_ERR(sgt)) in drm_gem_map_dma_buf()
628 return sgt; in drm_gem_map_dma_buf()
630 ret = dma_map_sgtable(attach->dev, sgt, dir, in drm_gem_map_dma_buf()
633 sg_free_table(sgt); in drm_gem_map_dma_buf()
634 kfree(sgt); in drm_gem_map_dma_buf()
635 sgt = ERR_PTR(ret); in drm_gem_map_dma_buf()
638 return sgt; in drm_gem_map_dma_buf()
651 struct sg_table *sgt, in drm_gem_unmap_dma_buf() argument
[all …]
Ddrm_gem_shmem_helper.c129 drm_prime_gem_destroy(obj, shmem->sgt); in drm_gem_shmem_free_object()
131 if (shmem->sgt) { in drm_gem_shmem_free_object()
132 dma_unmap_sgtable(obj->dev->dev, shmem->sgt, in drm_gem_shmem_free_object()
134 sg_free_table(shmem->sgt); in drm_gem_shmem_free_object()
135 kfree(shmem->sgt); in drm_gem_shmem_free_object()
446 dma_unmap_sgtable(obj->dev->dev, shmem->sgt, DMA_BIDIRECTIONAL, 0); in drm_gem_shmem_purge_locked()
447 sg_free_table(shmem->sgt); in drm_gem_shmem_purge_locked()
448 kfree(shmem->sgt); in drm_gem_shmem_purge_locked()
449 shmem->sgt = NULL; in drm_gem_shmem_purge_locked()
690 struct sg_table *sgt; in drm_gem_shmem_get_pages_sgt() local
[all …]
Ddrm_gem_cma_helper.c211 drm_prime_gem_destroy(gem_obj, cma_obj->sgt); in drm_gem_cma_free_object()
400 struct sg_table *sgt; in drm_gem_cma_get_sg_table() local
403 sgt = kzalloc(sizeof(*sgt), GFP_KERNEL); in drm_gem_cma_get_sg_table()
404 if (!sgt) in drm_gem_cma_get_sg_table()
407 ret = dma_get_sgtable(obj->dev->dev, sgt, cma_obj->vaddr, in drm_gem_cma_get_sg_table()
412 return sgt; in drm_gem_cma_get_sg_table()
415 kfree(sgt); in drm_gem_cma_get_sg_table()
440 struct sg_table *sgt) in drm_gem_cma_prime_import_sg_table() argument
445 if (drm_prime_get_contiguous_size(sgt) < attach->dmabuf->size) in drm_gem_cma_prime_import_sg_table()
453 cma_obj->paddr = sg_dma_address(sgt->sgl); in drm_gem_cma_prime_import_sg_table()
[all …]
/Linux-v5.15/drivers/gpu/drm/lima/
Dlima_gem.c28 struct sg_table sgt; in lima_heap_alloc() local
66 ret = sg_alloc_table_from_pages(&sgt, pages, i, 0, in lima_heap_alloc()
71 if (bo->base.sgt) { in lima_heap_alloc()
72 dma_unmap_sgtable(dev, bo->base.sgt, DMA_BIDIRECTIONAL, 0); in lima_heap_alloc()
73 sg_free_table(bo->base.sgt); in lima_heap_alloc()
75 bo->base.sgt = kmalloc(sizeof(*bo->base.sgt), GFP_KERNEL); in lima_heap_alloc()
76 if (!bo->base.sgt) { in lima_heap_alloc()
77 sg_free_table(&sgt); in lima_heap_alloc()
82 ret = dma_map_sgtable(dev, &sgt, DMA_BIDIRECTIONAL, 0); in lima_heap_alloc()
84 sg_free_table(&sgt); in lima_heap_alloc()
[all …]
/Linux-v5.15/drivers/gpu/drm/rockchip/
Drockchip_drm_gem.c40 ret = iommu_map_sgtable(private->domain, rk_obj->dma_addr, rk_obj->sgt, in rockchip_gem_iommu_map()
89 rk_obj->sgt = drm_prime_pages_to_sg(rk_obj->base.dev, in rockchip_gem_get_pages()
91 if (IS_ERR(rk_obj->sgt)) { in rockchip_gem_get_pages()
92 ret = PTR_ERR(rk_obj->sgt); in rockchip_gem_get_pages()
103 for_each_sgtable_sg(rk_obj->sgt, s, i) in rockchip_gem_get_pages()
106 dma_sync_sgtable_for_device(drm->dev, rk_obj->sgt, DMA_TO_DEVICE); in rockchip_gem_get_pages()
117 sg_free_table(rk_obj->sgt); in rockchip_gem_put_pages()
118 kfree(rk_obj->sgt); in rockchip_gem_put_pages()
364 dma_unmap_sgtable(drm->dev, rk_obj->sgt, in rockchip_gem_free_object()
367 drm_prime_gem_destroy(obj, rk_obj->sgt); in rockchip_gem_free_object()
[all …]
/Linux-v5.15/drivers/gpu/drm/amd/amdgpu/
Damdgpu_dma_buf.c160 struct sg_table *sgt; in amdgpu_dma_buf_map() local
185 sgt = drm_prime_pages_to_sg(obj->dev, in amdgpu_dma_buf_map()
188 if (IS_ERR(sgt)) in amdgpu_dma_buf_map()
189 return sgt; in amdgpu_dma_buf_map()
191 if (dma_map_sgtable(attach->dev, sgt, dir, in amdgpu_dma_buf_map()
199 dir, &sgt); in amdgpu_dma_buf_map()
207 return sgt; in amdgpu_dma_buf_map()
210 sg_free_table(sgt); in amdgpu_dma_buf_map()
211 kfree(sgt); in amdgpu_dma_buf_map()
225 struct sg_table *sgt, in amdgpu_dma_buf_unmap() argument
[all …]
/Linux-v5.15/drivers/gpu/drm/etnaviv/
Detnaviv_gem.c23 struct sg_table *sgt = etnaviv_obj->sgt; in etnaviv_gem_scatter_map() local
30 dma_map_sgtable(dev->dev, sgt, DMA_BIDIRECTIONAL, 0); in etnaviv_gem_scatter_map()
36 struct sg_table *sgt = etnaviv_obj->sgt; in etnaviv_gem_scatterlist_unmap() local
54 dma_unmap_sgtable(dev->dev, sgt, DMA_BIDIRECTIONAL, 0); in etnaviv_gem_scatterlist_unmap()
75 if (etnaviv_obj->sgt) { in put_pages()
77 sg_free_table(etnaviv_obj->sgt); in put_pages()
78 kfree(etnaviv_obj->sgt); in put_pages()
79 etnaviv_obj->sgt = NULL; in put_pages()
101 if (!etnaviv_obj->sgt) { in etnaviv_gem_get_pages()
104 struct sg_table *sgt; in etnaviv_gem_get_pages() local
[all …]
/Linux-v5.15/drivers/gpu/host1x/
Djob.c141 struct sg_table *sgt; in pin_job() local
175 sgt = host1x_bo_pin(dev, reloc->target.bo, phys); in pin_job()
176 if (IS_ERR(sgt)) { in pin_job()
177 err = PTR_ERR(sgt); in pin_job()
181 if (sgt) { in pin_job()
204 err = dma_map_sgtable(dev, sgt, dir, 0); in pin_job()
210 phys_addr = sg_dma_address(sgt->sgl); in pin_job()
215 job->unpins[job->num_unpins].sgt = sgt; in pin_job()
256 sgt = host1x_bo_pin(host->dev, g->bo, phys); in pin_job()
257 if (IS_ERR(sgt)) { in pin_job()
[all …]
/Linux-v5.15/drivers/fpga/
Dfpga-mgr.c87 struct sg_table *sgt) in fpga_mgr_write_sg() argument
90 return mgr->mops->write_sg(mgr, sgt); in fpga_mgr_write_sg()
168 struct sg_table *sgt) in fpga_mgr_write_init_sg() argument
182 sg_miter_start(&miter, sgt->sgl, sgt->nents, SG_MITER_FROM_SG); in fpga_mgr_write_init_sg()
197 len = sg_copy_to_buffer(sgt->sgl, sgt->nents, buf, in fpga_mgr_write_init_sg()
225 struct sg_table *sgt) in fpga_mgr_buf_load_sg() argument
229 ret = fpga_mgr_write_init_sg(mgr, info, sgt); in fpga_mgr_buf_load_sg()
236 ret = fpga_mgr_write_sg(mgr, sgt); in fpga_mgr_buf_load_sg()
240 sg_miter_start(&miter, sgt->sgl, sgt->nents, SG_MITER_FROM_SG); in fpga_mgr_buf_load_sg()
301 struct sg_table sgt; in fpga_mgr_buf_load() local
[all …]

12345678