From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?6rmA7Iq57Jqw?= Subject: Re: [RFC][PATCH 0/2] dma-buf: add importer private data for reimporting Date: Fri, 31 May 2013 19:22:24 +0900 Message-ID: <51A879E0.3080106@samsung.com> References: <1369990487-23510-1-git-send-email-sw0312.kim@samsung.com> Reply-To: sw0312.kim@samsung.com Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-reply-to: Sender: linux-media-owner@vger.kernel.org To: Daniel Vetter Cc: dri-devel , "linux-media@vger.kernel.org" , "linaro-mm-sig@lists.linaro.org" , Sumit Semwal , Dave Airlie , Linux Kernel Mailing List , Inki Dae , Kyungmin Park , Seung-Woo Kim List-Id: dri-devel@lists.freedesktop.org Hello Daniel, Thanks for your comment. On 2013=EB=85=84 05=EC=9B=94 31=EC=9D=BC 18:14, Daniel Vetter wrote: > On Fri, May 31, 2013 at 10:54 AM, Seung-Woo Kim wrote: >> importer private data in dma-buf attachment can be used by importer = to >> reimport same dma-buf. >> >> Seung-Woo Kim (2): >> dma-buf: add importer private data to attachment >> drm/prime: find gem object from the reimported dma-buf >=20 > Self-import should already work (at least with the latest refcount > fixes merged). At least the tests to check both re-import on the same > drm fd and on a different all work as expected now. Currently, prime works well for all case including self-importing, importing, and reimporting as you describe. Just, importing dma-buf fro= m other driver twice with different drm_fd, each import create its own ge= m object even two import is done for same buffer because prime_priv is in struct drm_file. This means mapping to the device is done also twice. IMHO, these duplicated creations and maps are not necessary if drm can find previous import in different prime_priv. >=20 > Second, the dma_buf_attachment is _definitely_ the wrong place to do > this. If you need iommu mapping caching, that should happen at a lowe= r > level (i.e. in the map_attachment callback somewhere of the exporter, > that's what the priv field in the attachment is for). Snatching away > the attachement from some random other import is certainly not the wa= y > to go - attachements are _not_ refcounted! Yes, attachments do not have refcount, so importer should handle and dr= m case in my patch, importer private data is gem object and it has, of course, refcount. And at current, exporter can not classify map_dma_buf requests of same importer to same buffer with different attachment because dma_buf_attac= h always makes new attachments. To resolve this exporter should search al= l different attachment from same importer of dma-buf and it seems more complex than importer private data to me. If I misunderstood something, please let me know. Best Regards, - Seung-Woo Kim > -Daniel >=20 >> >> drivers/base/dma-buf.c | 31 +++++++++++++++++= +++++++++++ >> drivers/gpu/drm/drm_prime.c | 19 ++++++++++++---- >> drivers/gpu/drm/exynos/exynos_drm_dmabuf.c | 1 + >> drivers/gpu/drm/i915/i915_gem_dmabuf.c | 1 + >> drivers/gpu/drm/udl/udl_gem.c | 1 + >> include/linux/dma-buf.h | 4 +++ >> 6 files changed, 52 insertions(+), 5 deletions(-) >> >> -- >> 1.7.4.1 >> >=20 >=20 >=20 > -- > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch >=20 --=20 Seung-Woo Kim Samsung Software R&D Center --