From: Jason Gunthorpe <jgg@ziepe.ca> To: "Christian König" <ckoenig.leichtzumerken@gmail.com> Cc: David1.Zhou@amd.com, hch@infradead.org, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org, intel-gfx@lists.freedesktop.org Subject: Re: [PATCH 5/6] drm/amdgpu: add support for exporting VRAM using DMA-buf v2 Date: Wed, 11 Mar 2020 11:33:35 -0300 [thread overview] Message-ID: <20200311143335.GC31668@ziepe.ca> (raw) In-Reply-To: <20200311135158.3310-6-christian.koenig@amd.com> On Wed, Mar 11, 2020 at 02:51:57PM +0100, Christian König wrote: > +/** > + * amdgpu_vram_mgr_alloc_sgt - allocate and fill a sg table > + * > + * @adev: amdgpu device pointer > + * @mem: TTM memory object > + * @dev: the other device > + * @dir: dma direction > + * @sgt: resulting sg table > + * > + * Allocate and fill a sg table from a VRAM allocation. > + */ > +int amdgpu_vram_mgr_alloc_sgt(struct amdgpu_device *adev, > + struct ttm_mem_reg *mem, > + struct device *dev, > + enum dma_data_direction dir, > + struct sg_table **sgt) single ** pointer with an int return is odd, use ERR_PTR? > +{ > + struct drm_mm_node *node; > + struct scatterlist *sg; > + int num_entries = 0; > + unsigned int pages; > + int i, r; > + > + *sgt = kmalloc(sizeof(*sg), GFP_KERNEL); > + if (!*sgt) > + return -ENOMEM; > + > + for (pages = mem->num_pages, node = mem->mm_node; > + pages; pages -= node->size, ++node) > + ++num_entries; > + > + r = sg_alloc_table(*sgt, num_entries, GFP_KERNEL); > + if (r) > + goto error_free; > + > + for_each_sg((*sgt)->sgl, sg, num_entries, i) > + sg->length = 0; > + > + node = mem->mm_node; > + for_each_sg((*sgt)->sgl, sg, num_entries, i) { > + phys_addr_t phys = (node->start << PAGE_SHIFT) + > + adev->gmc.aper_base; > + size_t size = node->size << PAGE_SHIFT; > + dma_addr_t addr; > + > + ++node; > + addr = dma_map_resource(dev, phys, size, dir, > + DMA_ATTR_SKIP_CPU_SYNC); > + r = dma_mapping_error(dev, addr); > + if (r) > + goto error_unmap; > + > + sg_set_dma_addr(sg, addr, size, 0); Is it possible that phys will need to have contiguous pages joined here, or has 'node' already ensured contiguous pages? Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@ziepe.ca> To: "Christian König" <ckoenig.leichtzumerken@gmail.com> Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, hch@infradead.org, linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org Subject: Re: [PATCH 5/6] drm/amdgpu: add support for exporting VRAM using DMA-buf v2 Date: Wed, 11 Mar 2020 11:33:35 -0300 [thread overview] Message-ID: <20200311143335.GC31668@ziepe.ca> (raw) In-Reply-To: <20200311135158.3310-6-christian.koenig@amd.com> On Wed, Mar 11, 2020 at 02:51:57PM +0100, Christian König wrote: > +/** > + * amdgpu_vram_mgr_alloc_sgt - allocate and fill a sg table > + * > + * @adev: amdgpu device pointer > + * @mem: TTM memory object > + * @dev: the other device > + * @dir: dma direction > + * @sgt: resulting sg table > + * > + * Allocate and fill a sg table from a VRAM allocation. > + */ > +int amdgpu_vram_mgr_alloc_sgt(struct amdgpu_device *adev, > + struct ttm_mem_reg *mem, > + struct device *dev, > + enum dma_data_direction dir, > + struct sg_table **sgt) single ** pointer with an int return is odd, use ERR_PTR? > +{ > + struct drm_mm_node *node; > + struct scatterlist *sg; > + int num_entries = 0; > + unsigned int pages; > + int i, r; > + > + *sgt = kmalloc(sizeof(*sg), GFP_KERNEL); > + if (!*sgt) > + return -ENOMEM; > + > + for (pages = mem->num_pages, node = mem->mm_node; > + pages; pages -= node->size, ++node) > + ++num_entries; > + > + r = sg_alloc_table(*sgt, num_entries, GFP_KERNEL); > + if (r) > + goto error_free; > + > + for_each_sg((*sgt)->sgl, sg, num_entries, i) > + sg->length = 0; > + > + node = mem->mm_node; > + for_each_sg((*sgt)->sgl, sg, num_entries, i) { > + phys_addr_t phys = (node->start << PAGE_SHIFT) + > + adev->gmc.aper_base; > + size_t size = node->size << PAGE_SHIFT; > + dma_addr_t addr; > + > + ++node; > + addr = dma_map_resource(dev, phys, size, dir, > + DMA_ATTR_SKIP_CPU_SYNC); > + r = dma_mapping_error(dev, addr); > + if (r) > + goto error_unmap; > + > + sg_set_dma_addr(sg, addr, size, 0); Is it possible that phys will need to have contiguous pages joined here, or has 'node' already ensured contiguous pages? Jason _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-03-11 14:33 UTC|newest] Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-11 13:51 P2P for DMA-buf Christian König 2020-03-11 13:51 ` [Intel-gfx] " Christian König 2020-03-11 13:51 ` Christian König 2020-03-11 13:51 ` [PATCH 1/6] lib/scatterlist: add sg_set_dma_addr() function Christian König 2020-03-11 13:51 ` [Intel-gfx] " Christian König 2020-03-11 13:51 ` Christian König 2020-03-11 15:28 ` Christoph Hellwig 2020-03-11 15:28 ` [Intel-gfx] " Christoph Hellwig 2020-03-12 10:14 ` Christian König 2020-03-12 10:14 ` [Intel-gfx] " Christian König 2020-03-12 10:14 ` Christian König 2020-03-12 10:19 ` Christoph Hellwig 2020-03-12 10:19 ` [Intel-gfx] " Christoph Hellwig 2020-03-12 10:31 ` Christian König 2020-03-12 10:31 ` [Intel-gfx] " Christian König 2020-03-12 10:31 ` Christian König 2020-03-12 10:47 ` Christoph Hellwig 2020-03-12 10:47 ` [Intel-gfx] " Christoph Hellwig 2020-03-12 11:02 ` Christian König 2020-03-12 11:02 ` [Intel-gfx] " Christian König 2020-03-12 11:02 ` Christian König 2020-03-12 14:19 ` Jason Gunthorpe 2020-03-12 14:19 ` Jason Gunthorpe 2020-03-12 15:39 ` Christian König 2020-03-12 15:39 ` [Intel-gfx] " Christian König 2020-03-12 15:39 ` Christian König 2020-03-12 16:19 ` Jason Gunthorpe 2020-03-12 16:19 ` Jason Gunthorpe 2020-03-12 16:13 ` Logan Gunthorpe 2020-03-12 16:13 ` [Intel-gfx] " Logan Gunthorpe 2020-03-12 16:13 ` Logan Gunthorpe 2020-03-13 11:21 ` Christoph Hellwig 2020-03-13 11:21 ` [Intel-gfx] " Christoph Hellwig 2020-03-13 12:17 ` Jason Gunthorpe 2020-03-13 12:17 ` Jason Gunthorpe 2020-03-16 8:56 ` Christoph Hellwig 2020-03-16 8:56 ` [Intel-gfx] " Christoph Hellwig 2020-03-16 9:41 ` Christian König 2020-03-16 9:41 ` [Intel-gfx] " Christian König 2020-03-16 9:41 ` Christian König 2020-03-16 9:52 ` Christoph Hellwig 2020-03-16 9:52 ` [Intel-gfx] " Christoph Hellwig 2020-03-16 12:37 ` Jason Gunthorpe 2020-03-16 12:37 ` Jason Gunthorpe 2020-03-13 13:33 ` Christian König 2020-03-13 13:33 ` [Intel-gfx] " Christian König 2020-03-13 13:33 ` Christian König 2020-03-11 13:51 ` [PATCH 2/6] dma-buf: add peer2peer flag Christian König 2020-03-11 13:51 ` [Intel-gfx] " Christian König 2020-03-11 13:51 ` Christian König 2020-03-11 13:51 ` [PATCH 3/6] drm/amdgpu: note that we can handle peer2peer DMA-buf Christian König 2020-03-11 13:51 ` [Intel-gfx] " Christian König 2020-03-11 13:51 ` Christian König 2020-03-11 13:51 ` [PATCH 4/6] drm/amdgpu: add checks if DMA-buf P2P is supported Christian König 2020-03-11 13:51 ` [Intel-gfx] " Christian König 2020-03-11 13:51 ` Christian König 2020-03-11 14:04 ` Jason Gunthorpe 2020-03-11 14:04 ` Jason Gunthorpe 2020-03-11 14:33 ` Christian König 2020-03-11 14:33 ` [Intel-gfx] " Christian König 2020-03-11 14:33 ` Christian König 2020-03-11 14:38 ` Jason Gunthorpe 2020-03-11 14:38 ` Jason Gunthorpe 2020-03-11 14:43 ` Christian König 2020-03-11 14:43 ` [Intel-gfx] " Christian König 2020-03-11 14:43 ` Christian König 2020-03-11 14:48 ` Jason Gunthorpe 2020-03-11 14:48 ` Jason Gunthorpe 2020-03-11 13:51 ` [PATCH 5/6] drm/amdgpu: add support for exporting VRAM using DMA-buf v2 Christian König 2020-03-11 13:51 ` [Intel-gfx] " Christian König 2020-03-11 13:51 ` Christian König 2020-03-11 14:33 ` Jason Gunthorpe [this message] 2020-03-11 14:33 ` Jason Gunthorpe 2020-03-11 14:39 ` Jason Gunthorpe 2020-03-11 14:39 ` Jason Gunthorpe 2020-03-11 15:08 ` Alex Deucher 2020-03-11 15:08 ` [Intel-gfx] " Alex Deucher 2020-03-11 15:08 ` Alex Deucher 2020-03-11 13:51 ` [PATCH 6/6] drm/amdgpu: improve amdgpu_gem_info debugfs file Christian König 2020-03-11 13:51 ` [Intel-gfx] " Christian König 2020-03-11 13:51 ` Christian König 2020-03-11 18:09 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/6] lib/scatterlist: add sg_set_dma_addr() function Patchwork 2020-03-11 18:34 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200311143335.GC31668@ziepe.ca \ --to=jgg@ziepe.ca \ --cc=David1.Zhou@amd.com \ --cc=ckoenig.leichtzumerken@gmail.com \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=hch@infradead.org \ --cc=intel-gfx@lists.freedesktop.org \ --cc=linaro-mm-sig@lists.linaro.org \ --cc=linux-media@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.