From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC][PATCH 0/2] dma-buf: add importer private data for reimporting Date: Fri, 31 May 2013 17:29:56 +0200 Message-ID: <20130531152956.GX15743@phenom.ffwll.local> References: <1369990487-23510-1-git-send-email-sw0312.kim@samsung.com> <51A879E0.3080106@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: Content-Disposition: inline In-Reply-To: <51A879E0.3080106@samsung.com> Sender: linux-media-owner@vger.kernel.org To: =?utf-8?B?6rmA7Iq57Jqw?= Cc: Daniel Vetter , 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 List-Id: dri-devel@lists.freedesktop.org On Fri, May 31, 2013 at 07:22:24PM +0900, =EA=B9=80=EC=8A=B9=EC=9A=B0 w= rote: > Hello Daniel, >=20 > Thanks for your comment. >=20 > 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 importe= r 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 sa= me > > drm fd and on a different all work as expected now. >=20 > Currently, prime works well for all case including self-importing, > importing, and reimporting as you describe. Just, importing dma-buf f= rom > other driver twice with different drm_fd, each import create its own = gem > 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 ca= n > find previous import in different prime_priv. Well, that's imo a bug with the other driver. If it doesn't export something really simple (e.g. contiguous memory which doesn't require a= ny mmio resources at all) it should have a cache of exported dma_buf fds s= o that it hands out the same dma_buf every time. Or it needs to be more clever in it's dma_buf_attachment_map functions = and lookup up a pre-existing iommu mapping. But dealing with this in the importer is just broken. > > Second, the dma_buf_attachment is _definitely_ the wrong place to d= o > > this. If you need iommu mapping caching, that should happen at a lo= wer > > level (i.e. in the map_attachment callback somewhere of the exporte= r, > > that's what the priv field in the attachment is for). Snatching awa= y > > the attachement from some random other import is certainly not the = way > > to go - attachements are _not_ refcounted! >=20 > Yes, attachments do not have refcount, so importer should handle and = drm > case in my patch, importer private data is gem object and it has, of > course, refcount. >=20 > And at current, exporter can not classify map_dma_buf requests of sam= e > importer to same buffer with different attachment because dma_buf_att= ach > always makes new attachments. To resolve this exporter should search = all > different attachment from same importer of dma-buf and it seems more > complex than importer private data to me. >=20 > If I misunderstood something, please let me know. Like I've said above, just fix this in the exporter. If an importer see= s two different dma_bufs it can very well presume that it those two indee= d point to different backing storage. This will be even more important if we attach fences two dma_bufs. If y= our broken exporter creates multiple dma_bufs each one of them will have th= eir own fences attached, leading to a complete disasters. Ok, strictly speaking if you keep the same reservation pointer for each dma_buf it'l= l work, but that's just a detail of how you solve this in the exporter. Cheers, Daniel --=20 Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch