From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?6rmA7Iq57Jqw?= Subject: Re: [RFC][PATCH 1/2] dma-buf: add importer private data to attachment Date: Mon, 10 Jun 2013 09:23:51 +0900 Message-ID: <51B51C97.9090006@samsung.com> References: <1369990487-23510-1-git-send-email-sw0312.kim@samsung.com> <1369990487-23510-2-git-send-email-sw0312.kim@samsung.com> <51AF3BD7.5070001@canonical.com> <51B14644.9070706@samsung.com> <51B1C2E8.2030709@canonical.com> Reply-To: sw0312.kim@samsung.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by gabe.freedesktop.org (Postfix) with ESMTP id 03C04E5C1F for ; Sun, 9 Jun 2013 17:23:37 -0700 (PDT) Received: from epcpsbgr4.samsung.com (u144.gpu120.samsung.co.kr [203.254.230.144]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MO5001ULIF4HSA0@mailout2.samsung.com> for dri-devel@lists.freedesktop.org; Mon, 10 Jun 2013 09:23:35 +0900 (KST) In-reply-to: <51B1C2E8.2030709@canonical.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Maarten Lankhorst Cc: daniel.vetter@ffwll.ch, Seung-Woo Kim , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, kyungmin.park@samsung.com, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org CgpPbiAyMDEz64WEIDA27JuUIDA37J28IDIwOjI0LCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToK PiBPcCAwNy0wNi0xMyAwNDozMiwg6rmA7Iq57JqwIHNjaHJlZWY6Cj4+IEhlbGxvIE1hYXJ0ZW4s Cj4+Cj4+IE9uIDIwMTPrhYQgMDbsm5QgMDXsnbwgMjI6MjMsIE1hYXJ0ZW4gTGFua2hvcnN0IHdy b3RlOgo+Pj4gT3AgMzEtMDUtMTMgMTA6NTQsIFNldW5nLVdvbyBLaW0gc2NocmVlZjoKPj4+PiBk bWEtYnVmIGF0dGFjaG1lbnQgaGFzIG9ubHkgZXhwb3J0ZXIgcHJpdmF0ZSBkYXRhLCBidXQgaW1w b3J0ZXIgcHJpdmF0ZSBkYXRhCj4+Pj4gY2FuIGJlIHVzZWZ1bCBmb3IgaW1wb3J0ZXIgZXNwZWNp YWxseSB0byByZS1pbXBvcnQgdGhlIHNhbWUgZG1hLWJ1Zi4KPj4+PiBUbyB1c2UgaW1wb3J0ZXIg cHJpdmF0ZSBkYXRhIGluIGF0dGFjaG1lbnQgb2YgdGhlIGRldmljZSwgdGhlIGZ1bmN0aW9uIHRv Cj4+Pj4gc2VhcmNoIGF0dGFjaG1lbnQgaW4gdGhlIGF0dGFjaG1lbnQgbGlzdCBvZiBkbWEtYnVm IGlzIGFsc28gYWRkZWQuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBTZXVuZy1Xb28gS2ltIDxz dzAzMTIua2ltQHNhbXN1bmcuY29tPgo+Pj4+IC0tLQo+Pj4+ICBkcml2ZXJzL2Jhc2UvZG1hLWJ1 Zi5jICB8ICAgMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICBpbmNsdWRl L2xpbnV4L2RtYS1idWYuaCB8ICAgIDQgKysrKwo+Pj4+ICAyIGZpbGVzIGNoYW5nZWQsIDM1IGlu c2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9iYXNlL2RtYS1idWYuYyBiL2RyaXZlcnMvYmFzZS9kbWEtYnVmLmMKPj4+PiBpbmRleCAwOGZl ODk3Li5hMWVhYWYyIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvYmFzZS9kbWEtYnVmLmMKPj4+ PiArKysgYi9kcml2ZXJzL2Jhc2UvZG1hLWJ1Zi5jCj4+Pj4gQEAgLTI1OSw2ICsyNTksMzcgQEAg ZXJyX2F0dGFjaDoKPj4+PiAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9hdHRhY2gpOwo+Pj4+ ICAKPj4+PiAgLyoqCj4+Pj4gKyAqIGRtYV9idWZfZ2V0X2F0dGFjaG1lbnQgLSBHZXQgYXR0YWNo bWVudCB3aXRoIHRoZSBkZXZpY2UgZnJvbSBkbWFfYnVmJ3MKPj4+PiArICogYXR0YWNobWVudHMg bGlzdAo+Pj4+ICsgKiBAZG1hYnVmOglbaW5dCWJ1ZmZlciB0byBmaW5kIGRldmljZSBmcm9tLgo+ Pj4+ICsgKiBAZGV2OglbaW5dCWRldmljZSB0byBiZSBmb3VuZC4KPj4+PiArICoKPj4+PiArICog UmV0dXJucyBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICogYXR0YWNoaW5nIHRoZSBkZXZpY2U7 IG1heSByZXR1cm4KPj4+PiArICogbmVnYXRpdmUgZXJyb3IgY29kZXMuCj4+Pj4gKyAqCj4+Pj4g KyAqLwo+Pj4+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2dldF9hdHRhY2ht ZW50KHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4+Pj4gKwkJCQkJCSAgc3RydWN0IGRldmljZSAq ZGV2KQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4+ Pj4gKwo+Pj4+ICsJaWYgKFdBUk5fT04oIWRtYWJ1ZiB8fCAhZGV2KSkKPj4+PiArCQlyZXR1cm4g RVJSX1BUUigtRUlOVkFMKTsKPj4+PiArCj4+Pj4gKwltdXRleF9sb2NrKCZkbWFidWYtPmxvY2sp Owo+Pj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShhdHRhY2gsICZkbWFidWYtPmF0dGFjaG1lbnRz LCBub2RlKSB7Cj4+Pj4gKwkJaWYgKGF0dGFjaC0+ZGV2ID09IGRldikgewo+Pj4+ICsJCQltdXRl eF91bmxvY2soJmRtYWJ1Zi0+bG9jayk7Cj4+Pj4gKwkJCXJldHVybiBhdHRhY2g7Cj4+Pj4gKwkJ fQo+Pj4+ICsJfQo+Pj4+ICsJbXV0ZXhfdW5sb2NrKCZkbWFidWYtPmxvY2spOwo+Pj4+ICsKPj4+ PiArCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+Pj4+ICt9Cj4+Pj4gK0VYUE9SVF9TWU1CT0xf R1BMKGRtYV9idWZfZ2V0X2F0dGFjaG1lbnQpOwo+Pj4gTkFLIGluIGFueSBmb3JtLi4KPj4+Cj4+ PiBTcG90IHRoZSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIGRtYV9idWZfZ2V0X2F0dGFjaG1lbnQg YW5kIGRtYV9idWZfYXR0YWNoLi4uLgo+PiBCb3RoIGRtYV9idWZfZ2V0X2F0dGFjaG1lbnQgYW5k IGRtYV9idWZfYXR0YWNoIGhhcyBtdXRldCB3aXRoCj4+IGRtYWJ1Zi0+bG9jaywgYW5kIGRtYV9i dWZfZ2V0X2F0dGFjaG1lbnQgaXMgdXNlZCBmb3IgZ2V0IGF0dGFjaG1lbnQgZnJvbQo+PiBzYW1l IGRldmljZSBiZWZvcmUgY2FsbGluZyBkbWFfYnVmX2F0dGFjaC4KPiAKPiBoaW50OiB3aGF0IGhh cHBlbnMgaWYgMiB0aHJlYWRzIGRvIHRoaXM6Cj4gCj4gaWYgKElTX0VSUihhdHRhY2ggPSBkbWFf YnVmX2dldF9hdHRhY2htZW50KGJ1ZiwgZGV2KSkpCj4gYXR0YWNoID0gZG1hX2J1Zl9hdHRhY2go YnVmLCBkZXYpOwo+IAo+IFRoZXJlIHJlYWxseSBpcyBubyBjb3JyZWN0IHVzZWNhc2UgZm9yIHRo aXMga2luZCBvZiB0aGluZywgc28gcGxlYXNlIGRvbid0IGRvIGl0LgoKT2ssIGRtYV9idWZfZ2V0 X2F0dGFjaG1lbnQgY2FuIG5vdCBwcmV2ZW50IGF0dGFjaG1lbnRzIGZyb20gb25lIGRldmljZS4K CkFueXdheSwgZG8geW91IHRoaW5rIHRoYXQgaW1wb3J0ZXIgc2lkZSBwcml2YXRlIGRhdGEsIG5v dCB0byBhbGxvdwpyZS1pbXBvcnQgb25lIGRtYS1idWYgdG8gYSBkZXZpY2UsIGhhcyBzb21lIGFk dmFudGFnZT8KSWYgdGhhdCwgSSdsbCBhZGQgc29tZSBjaGVja19hbmRfYXR0YWNoIGZ1bmN0aW9u LCBvdGhlcndpc2UsIEknbGwgZmluZApvdGhlciB3YXkuCgpUaGFua3MgYW5kIFJlZ2FyZHMsCi0g U2V1bmctV29vIEtpbQoKPiAKPj4gV2hpbGUsIGRtYV9idWZfZGV0YWNoIGNhbiByZW1vdmVzIGF0 dGFjaG1lbnQgYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlCj4+IHJlZiBjb3VudC4gU28gaW1wb3J0 ZXIgc2hvdWxkIGNoZWNrIHJlZiBjb3VudCBpbiBpdHMgaW1wb3J0ZXIgcHJpdmF0ZQo+PiBkYXRh IGJlZm9yZSBjYWxsaW5nIGRtYV9idWZfZGV0YWNoIGlmIHRoZSBpbXBvcnRlciB3YW50IHRvIHVz ZQo+PiBkbWFfYnVmX2dldF9hdHRhY2htZW50Lgo+Pgo+PiBBbmQgZG1hX2J1Zl9nZXRfYXR0YWNo bWVudCBpcyBmb3IgdGhlIGltcG9ydGVyLCBzbyBleHBvcnRlciBhdHRhY2ggYW5kCj4+IGRldGFj aCBjYWxsYmFjayBvcGVyYXRpb24gc2hvdWxkIG5vdCBjYWxsIGl0IGFzIGxpa2UgZXhwb3J0ZXIg ZGV0YWNoCj4+IGNhbGxiYWNrIG9wZXJhdGlvbiBzaG91bGQgbm90IGNhbGwgZG1hX2J1Zl9hdHRh Y2ggaWYgeW91IG1lYW4gdGhpcyBraW5kCj4+IG9mIHJhY2UuCj4+Cj4+IElmIHlvdSBoYXZlIG90 aGVyIGNvbnNpZGVyYXRpb25zIGhlcmUsIHBsZWFzZSBkZXNjcmliZSBtb3JlIHNwZWNpZmljYWxs eS4KPj4KPj4gVGhhbmtzIGFuZCBCZXN0IFJlZ2FyZHMsCj4+IC0gU2V1bmctV29vIEtpbQo+Pgo+ Pj4gfk1hYXJ0ZW4KPj4+Cj4+Pgo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCj4gCgotLSAKU2V1bmctV29vIEtpbQpTYW1zdW5nIFNvZnR3YXJl IFImRCBDZW50ZXIKLS0KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mailout2.samsung.com ([203.254.224.25]:48340 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752452Ab3FJAXh convert rfc822-to-8bit (ORCPT ); Sun, 9 Jun 2013 20:23:37 -0400 MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 8BIT Message-id: <51B51C97.9090006@samsung.com> Date: Mon, 10 Jun 2013 09:23:51 +0900 From: =?UTF-8?B?6rmA7Iq57Jqw?= Reply-to: sw0312.kim@samsung.com To: Maarten Lankhorst Cc: daniel.vetter@ffwll.ch, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, kyungmin.park@samsung.com, linux-media@vger.kernel.org, Seung-Woo Kim Subject: Re: [RFC][PATCH 1/2] dma-buf: add importer private data to attachment References: <1369990487-23510-1-git-send-email-sw0312.kim@samsung.com> <1369990487-23510-2-git-send-email-sw0312.kim@samsung.com> <51AF3BD7.5070001@canonical.com> <51B14644.9070706@samsung.com> <51B1C2E8.2030709@canonical.com> In-reply-to: <51B1C2E8.2030709@canonical.com> Sender: linux-media-owner@vger.kernel.org List-ID: On 2013년 06월 07일 20:24, Maarten Lankhorst wrote: > Op 07-06-13 04:32, 김승우 schreef: >> Hello Maarten, >> >> On 2013년 06월 05일 22:23, Maarten Lankhorst wrote: >>> Op 31-05-13 10:54, Seung-Woo Kim schreef: >>>> dma-buf attachment has only exporter private data, but importer private data >>>> can be useful for importer especially to re-import the same dma-buf. >>>> To use importer private data in attachment of the device, the function to >>>> search attachment in the attachment list of dma-buf is also added. >>>> >>>> Signed-off-by: Seung-Woo Kim >>>> --- >>>> drivers/base/dma-buf.c | 31 +++++++++++++++++++++++++++++++ >>>> include/linux/dma-buf.h | 4 ++++ >>>> 2 files changed, 35 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c >>>> index 08fe897..a1eaaf2 100644 >>>> --- a/drivers/base/dma-buf.c >>>> +++ b/drivers/base/dma-buf.c >>>> @@ -259,6 +259,37 @@ err_attach: >>>> EXPORT_SYMBOL_GPL(dma_buf_attach); >>>> >>>> /** >>>> + * dma_buf_get_attachment - Get attachment with the device from dma_buf's >>>> + * attachments list >>>> + * @dmabuf: [in] buffer to find device from. >>>> + * @dev: [in] device to be found. >>>> + * >>>> + * Returns struct dma_buf_attachment * attaching the device; may return >>>> + * negative error codes. >>>> + * >>>> + */ >>>> +struct dma_buf_attachment *dma_buf_get_attachment(struct dma_buf *dmabuf, >>>> + struct device *dev) >>>> +{ >>>> + struct dma_buf_attachment *attach; >>>> + >>>> + if (WARN_ON(!dmabuf || !dev)) >>>> + return ERR_PTR(-EINVAL); >>>> + >>>> + mutex_lock(&dmabuf->lock); >>>> + list_for_each_entry(attach, &dmabuf->attachments, node) { >>>> + if (attach->dev == dev) { >>>> + mutex_unlock(&dmabuf->lock); >>>> + return attach; >>>> + } >>>> + } >>>> + mutex_unlock(&dmabuf->lock); >>>> + >>>> + return ERR_PTR(-ENODEV); >>>> +} >>>> +EXPORT_SYMBOL_GPL(dma_buf_get_attachment); >>> NAK in any form.. >>> >>> Spot the race condition between dma_buf_get_attachment and dma_buf_attach.... >> Both dma_buf_get_attachment and dma_buf_attach has mutet with >> dmabuf->lock, and dma_buf_get_attachment is used for get attachment from >> same device before calling dma_buf_attach. > > hint: what happens if 2 threads do this: > > if (IS_ERR(attach = dma_buf_get_attachment(buf, dev))) > attach = dma_buf_attach(buf, dev); > > There really is no correct usecase for this kind of thing, so please don't do it. Ok, dma_buf_get_attachment can not prevent attachments from one device. Anyway, do you think that importer side private data, not to allow re-import one dma-buf to a device, has some advantage? If that, I'll add some check_and_attach function, otherwise, I'll find other way. Thanks and Regards, - Seung-Woo Kim > >> While, dma_buf_detach can removes attachment because it does not have >> ref count. So importer should check ref count in its importer private >> data before calling dma_buf_detach if the importer want to use >> dma_buf_get_attachment. >> >> And dma_buf_get_attachment is for the importer, so exporter attach and >> detach callback operation should not call it as like exporter detach >> callback operation should not call dma_buf_attach if you mean this kind >> of race. >> >> If you have other considerations here, please describe more specifically. >> >> Thanks and Best Regards, >> - Seung-Woo Kim >> >>> ~Maarten >>> >>> > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel > -- Seung-Woo Kim Samsung Software R&D Center --