From mboxrd@z Thu Jan 1 00:00:00 1970 From: Seung-Woo Kim Subject: Re: [Linaro-mm-sig] [PATCH] dma-buf: add meta data attachment Date: Tue, 25 Mar 2014 18:21:34 +0900 Message-ID: <53314A9E.908@samsung.com> References: <1395378261-17408-1-git-send-email-binw@marvell.com> <477F20668A386D41ADCC57781B1F70430F53F33F7D@SC-VEXCH1.marvell.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 mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by gabe.freedesktop.org (Postfix) with ESMTP id 112056E0A9 for ; Tue, 25 Mar 2014 02:21:51 -0700 (PDT) Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N2Z00K27JBRDB10@mailout4.samsung.com> for dri-devel@lists.freedesktop.org; Tue, 25 Mar 2014 18:21:27 +0900 (KST) In-reply-to: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Seung-Woo Kim , dri-devel , Linaro MM SIG , Bin Wang , "linux-media@vger.kernel.org" List-Id: dri-devel@lists.freedesktop.org SGkgYWxsLAoKT24gMjAxNOuFhCAwM+yblCAyNOydvCAxNjozNSwgRGFuaWVsIFZldHRlciB3cm90 ZToKPiBIaSBhbGwsCj4gCj4gQWRkaW5nIHBpbGVzIG1vcmUgcGVvcGxlLgo+IAo+IEZvciB0aGUg Zmlyc3QgY2FzZSBvZiBjYWNoaW5nIHRoZSBpb21tdSBtYXBwaW5nIHRoZXJlJ3MgZGlmZmVyZW50 Cj4gYW5zd2VycywgZGVwZW5pbmcgdXBvbiB0aGUgZXhhY3QgY2FzZToKPiAKPiAxKSBZb3UgbmVl ZCB0byBmaXggeW91ciB1c2Vyc3BhY2UgdG8gbm90IGNvbnN0YW50bHkgcmUtZXN0YWJsaXNoIHRo ZSBzaGFyaW5nLgo+IAo+IDIpIFdlIG5lZWQgdG8gYWRkIHN0cmVhbWluZyBkbWEgc3VwcG9ydCBm b3IgcmVhbCB0byBkbWEtYnVmcyBzbyB0aGF0Cj4gdGhlIG1hcHBpbmcgY2FuIGJlIGtlcHQgd2hp bGUgd2UgdHJhbnNmZXIgb3duZXJzaGlwIGFyb3VuZC4gVGh1cyBmYXIKPiBubyBvbmUgcmVhbGx5 IG5lZWRlZCB0aGlzIHRob3VnaCBzaW5jZSB1c3VhbGx5IHlvdSBkb24ndCBhY3R1YWxseSBkbwo+ IGNwdSBhY2Nlc3MuCj4gCj4gMykgWW91IG5lZWQgb3Bwb3J0dW5pc3RpYyBjYWNoaW5nIG9mIGlt cG9ydGVkL2V4cG9ydGVkIGJ1ZmZlciBvYmplY3RzCj4gYW5kIHRoZWlyIG1hcHBpbmdzLiBGb3Ig dGhpcyB5b3UgbmVlZCBhKSBzdWJzeXN0ZW0gaW1wb3J0L2V4cG9ydAo+IHN1cHBvcnQgd2hpY2gg Z3VhcmFudGVlcyB5b3UgdG8gaGFuZCBvdXQgdGhlIHNhbWUgZG1hLWJ1Zi9uYXRpdmUKPiBvYmpl Y3QgYWdhaW4gdXBvbiByZS1leHBvcnQgb3IgcmUtaW1wb3J0IChkcm0gaGFzIGl0KSBiKSBzb21l Cj4gb3Bwb3J0dW5pc3RpYyBjYWNoaW5nIG9mIGJ1ZmZlciBvYmplY3RzIChwcmV0dHkgbXVjaCBh cmUgcmVhbCBncHUgZHJtCj4gZHJpdmVycyBoYXZlIGl0KS4gTm8gbmVlZCBvZiBhbnkgbWV0YWRh dGEgc2NoZW1lLCBhbmQgZ2l2ZW4gaG93IG11Y2gKPiBmdW4gSSd2ZSBoYWQgaW1wbGVtZW50ZWQg dGhpcyBmb3IgZHJtIEkgZG9uJ3QgeW91IGNhbiBtYWtlIHlvdXIKPiBtZXRhZGF0YSBzY2hlbWUg d29yayBpbiBhIHNhbmUgb3IgY29ycmVjdCB3YXkgd3J0IGxpZmV0aW1lcy4KPiAKPiBGb3IgY2Fj aGluZyB0aGUgaW9tbXUgbWFwcGluZyBpZiB0aGUgaW9tbXUgaXMgdGhlIHNhbWUgZm9yIG11bHRp cGxlIGRldmljZXM6Cj4gCj4gMSkgV2UgbmVlZCBzb21lIHdheSB0byBmaWd1cmUgb3V0IHdoaWNo IGlvbW11IHNlcnZlcyB3aGljaCBkZXZpY2VzLgo+IAo+IDIpIFRoZSBleHBvcnRlciBuZWVkcyB0 byBjb25zdWx0IHRoaXMgYW5kIG1pZ2h0IGp1c3QgaGFuZCBvdXQgdGhlIHNhbWUKPiBzZyBtYXBw aW5nIG91dCBhZ2FpbiBpZiBpdCB3YW50cyB0by4KPiAKPiBObyBuZWVkIGZvciBpbXBvcnRlcnMg dG8gZG8gZmFuY3kgc3R1ZmYsIG9yIGF0dGFjaCBhbnkKPiBpbXBvcnRlci12aXNpYmxlIG1ldGFk YXRhIHRvIGRtYS1idWZzLiBPZiBjb3Vyc2UgZHVwbGljYXRpbmcgdGhpcyBjb2RlCj4gYWxsIG92 ZXIgdGhlIHBsYWNlIGlzIGEgYnV0IHVuY29vbCwgc28gSSBleHBlY3QgdGhhdCBldmVudHVhbGx5 IHdlJ2xsCj4gaGF2ZSBhIGdlbmVyaWMgZXhwb3J0ZXIgaW1wbGVtZW50YXRpb24sIGF0IGxlYXN0 IGZvciBub24tc3dhcHBhYmxlCj4gYnVmZmVycy4gZHJtL2dlbSBpcyBhIGJpdCBzcGVjaWFsIGhl cmUgLi4uCj4gCj4gSW4gZ2VuZXJhbCBJIGRvbid0IGxpa2UgdGhlIGlkZWEgb2YgYXJiaXRyYXJ5 IG1ldGFkYXRhIGF0IGFsbCwgc291bmRzCj4gcHJvbmUgdG8gYWJ1c2Ugd2l0aCBjcmF6eSBsaWZl dGltZS9yZWZjb3VudGluZyBydWxlcyBmb3IgdGhlIG9iamVjdHMKPiBpbnZvbHZlZC4gQWxzbyBJ IHRoaW5rIGZvciBhIGxvdCBvZiB5b3VyIGV4YW1wbGVzIChsaWtlIGRlYnVnZ2luZykgaXQKPiB3 b3VsZCBiZSBtdWNoIGJldHRlciBpZiB3ZSBoYXZlIGEgc3RhbmRhcmRpemVkIHBpZWNlIG9mIG1l dGFkYXRhIHNvCj4gdGhhdCBhbGwgZHJpdmVycy9wbGF0Zm9ybXMgY2FuIHVzZSB0aGUgc2FtZSB0 b29saW5nLgo+IAo+IEFuZCBpdCBmZWVscyBsaWtlIEknbSB3cml0aW5nIHN1Y2ggYSBtYWlsIGV2 ZXJ5IGZldyBtb250aHMgLi4uCgpJIHBvc3RlZCBjb25jZXB0IGFib3V0IGltcG9ydGVyIHByaXYg b2YgZG1hLWJ1ZiwgYW5kIGl0IHNlZW1zIHRoYXQgdGhpcwpwYXRjaCBpcyBwYXJ0bHkgZnJvbSBz aW1pbGFyIHJlcXVpcmVtZW50IC0gaW9tbXUgbWFwL3VubWFwLgoKQW5kIGF0IHRoYXQgdGltZSwg RGFuaWVsIGFncmVlZCBhdCBsZWFzdCB0aGUgaXNzdWUsIHRoYXQgdW5uZWNlc3NhcnkKbWFwL3Vu bWFwIGNhbiByZXBlYXRlZGx5IGNhbGxlZCwgaXMgYWxzbyBpbiB0aGUgZHJtIGdlbS4KaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwvMjAxMy1KdW5lLzAzOTQ2 OS5odG1sCgpTbyBJIGFncmVlIGFib3V0IHRoZSBuZWNlc3Nhcnkgb2Ygc29tZSBkYXRhIG9mIGRt YS1idWYgZm9yIGdlbmVyYWwKaW1wb3J0ZXIgZXZlbiB0aG91Z2ggdGhlIGRhdGEgY2FuIGJlIHNo YXJlZCBiZXR3ZWVuIGRpZmZlcmVudCBzdWJzeXN0ZW1zLgoKPiAKPiBDaGVlcnMsIERhbmllbAo+ IAo+IE9uIE1vbiwgTWFyIDI0LCAyMDE0IGF0IDc6MjAgQU0sIEJpbiBXYW5nIDxiaW53QG1hcnZl bGwuY29tPiB3cm90ZToKPj4gSGkgU3VtaXQsCj4+Cj4+IE9uIDAzLzIxLzIwMTQgMDc6MjYgUE0s IFN1bWl0IFNlbXdhbCB3cm90ZToKPj4+IEhpIEJpbiBXYW5nLAo+Pj4KPj4+IE9uIDIxIE1hcmNo IDIwMTQgMTA6MzQsIEJpbiBXYW5nIDxiaW53QG1hcnZlbGwuY29tPiB3cm90ZToKPj4+PiB3ZSBm b3VuZCB0aGVyZSdkIGJlIHZhcmllZCBzcGVjaWZpYyBkYXRhIGNvbm5lY3RlZCB0byBhIGRtYWJ1 ZiwgbGlrZQo+Pj4+IHRoZSBpb21tdSBtYXBwaW5nIG9mIGJ1ZmZlciwgdGhlIGRtYSBkZXNjcmlw dG9ycyAodGhhdCBjYW4gYmUgc2hhcmVkCj4+Pj4gYmV0d2VlbiBzZXZlcmFsIGNvbXBvbmVudHMp LiBUaG91Z2ggdGhlc2UgaW5mbyBtaWdodCBiZSBhYmxlIHRvIGJlCj4+Pj4gZ2VuZXJhdGVkIGV2 ZXJ5IHRpbWUgYmVmb3JlIGRtYSBvcGVyYXRpb25zLCBmb3IgcGVyZm9ybWFuY2Ugc2FrZSwKPj4+ PiBpdCdzIGJldHRlciB0byBiZSBrZXB0IGJlZm9yZSByZWFsbHkgaW52YWxpZC4KPj4+IFRoYW5r cyBmb3IgeW91ciBwYXRjaCEKPj4+IEkgdGhpbmsgd2UnZCBuZWVkIHRvIGhhdmUgbW9yZSBzcGVj aWZpYyBkZXRhaWxzIG9uIHdoYXQgZG9lcyAnbWV0YQo+Pj4gZGF0YScgbWVhbiBoZXJlOyBtb3Jl IHNwZWNpZmljIGNvbW1lbnRzIGlubGluZS4KPj4+PiBDaGFuZ2UtSWQ6IEk4OWQ0M2RjM2ZlMWVl M2RhOTFjNDIwNzRkYTVkZjcxYjk2OGU2ZDNjCj4+Pj4gU2lnbmVkLW9mZi1ieTogQmluIFdhbmcg PGJpbndAbWFydmVsbC5jb20+Cj4+Pj4gLS0tCj4+Pj4gICBkcml2ZXJzL2Jhc2UvZG1hLWJ1Zi5j ICB8ICAxMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK Pj4+PiAgIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5oIHwgICAyMiArKysrKysrKysrCj4+Pj4gICAy IGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQo+Pj4+Cj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9kbWEtYnVmLmMgYi9kcml2ZXJzL2Jhc2UvZG1h LWJ1Zi5jCj4+Pj4gaW5kZXggMDhmZTg5Ny4uNWM4MmU2MCAxMDA2NDQKPj4+PiAtLS0gYS9kcml2 ZXJzL2Jhc2UvZG1hLWJ1Zi5jCj4+Pj4gKysrIGIvZHJpdmVycy9iYXNlL2RtYS1idWYuYwo+Pj4+ IEBAIC01MCw2ICs1MCw3IEBAIHN0YXRpYyBpbnQgZG1hX2J1Zl9yZWxlYXNlKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+Pj4+Cj4+Pj4gICAgICAgICAgQlVHX09OKGRt YWJ1Zi0+dm1hcHBpbmdfY291bnRlcik7Cj4+Pj4KPj4+PiArICAgICAgIGRtYV9idWZfbWV0YV9y ZWxlYXNlKGRtYWJ1Zik7Cj4+Pj4gICAgICAgICAgZG1hYnVmLT5vcHMtPnJlbGVhc2UoZG1hYnVm KTsKPj4+Pgo+Pj4+ICAgICAgICAgIG11dGV4X2xvY2soJmRiX2xpc3QubG9jayk7Cj4+Pj4gQEAg LTEzOCw2ICsxMzksNyBAQCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnRfbmFtZWQodm9p ZCAqcHJpdiwgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzICpvcHMsCj4+Pj4KPj4+PiAgICAgICAg ICBtdXRleF9pbml0KCZkbWFidWYtPmxvY2spOwo+Pj4+ICAgICAgICAgIElOSVRfTElTVF9IRUFE KCZkbWFidWYtPmF0dGFjaG1lbnRzKTsKPj4+PiArICAgICAgIElOSVRfTElTVF9IRUFEKCZkbWFi dWYtPm1ldGFzKTsKPj4+Pgo+Pj4gSSBhbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0 aW9uc2hpcCBvZiAnbWV0YSBkYXRhJyB3aXRoCj4+PiAnZG1hLWJ1ZicsIG9yICdhdHRhY2htZW50 cycgLSBkbyB5b3UgbWVhbiB0byBoYXZlIGEgbGlzdCBvZiBzb21lCj4+PiBtZXRhLWRhdGEgdGhh dCBpcyB1bnJlbGF0ZWQgdG8gdGhlIGF0dGFjaG1lbnRzIHRvIHRoZSBkbWEtYnVmPyBJIHRoaW5r Cj4+PiBpdCdkIGhlbHAgdG8gZXhwbGFpbiB3aGV0aGVyIG1ldGEtZGF0YSBpcyBzcGVjaWZpYyB0 byBlYWNoIGRtYS1idWYsCj4+PiBhbmQgdGhlcmUncyBhIGxpc3Qgb2YgdGhlbSwgb3IgdGhpcyBt ZXRhLWRhdGEgaXMgcmVsYXRlZCB0byBlYWNoCj4+PiBpbXBvcnRlciBkZXZpY2UgYXR0YWNobWVu dD8KPj4+IElmIGl0J3MgcmVsYXRlZCB0byBlYWNoIGltcG9ydGVyLCBpdCBzaG91bGQgcmVhbGx5 IGJlIGFkZGVkIGFzIHBhcnQgb2YKPj4+IHRoZSBkbWFfYnVmX2F0dGFjaG1lbnQsIGFuZCBub3Qg c2VwYXJhdGVseS4KClRoaXMgaXMgYmFzaWMgY29uY2VwdCBvZiBteSBSRkMgcGF0Y2guCmh0dHA6 Ly93d3cua2VybmVsaHViLm9yZy8/cD0yJm1zZz0yNjgwNTYKCkJlc3QgUmVnYXJkcywKLSBTZXVu Zy1Xb28gS2ltCgo+PiBUaGUgIm1ldGEtZGF0YSIgaGVyZSBjYW4gYmUgYW55IGtpbmQgb2YgZGF0 YSByZWxhdGVkIHRvIHRoZSBkbWFidWYsICwgaXQncyBzcGVjaWZpYwo+PiBmb3IgZWFjaCBkbWFi dWYuCj4+Cj4+IEZvciBleGFtcGxlLCB3ZSBoYXZlIGlvbW11IGZvciBhIFZQVSBkZXZpY2UsIFZQ VSBkcml2ZXIgaGFzCj4+IHRvIG1hcCB0aGUgZG1hYnVmIHRvIGdldCBhbiBJT1ZBIGFkZHJlc3Mg YmVmb3JlIGl0IGNhbiBhY2Nlc3MgdGhlIGJ1ZmZlci4gVGhpcwo+PiBkbWFidWYgd291bGQgYmUg cmV1c2VkIG1hbnkgdGltZXMgZHVyaW5nIHRoZSB2aWRlbyBwbGF5YmFjaywgZm9yIHBlcmZvcm1h bmNlCj4+IGNvbmNlcm4gd2UgZG9uJ3Qgd2FudCB0aGlzIGRtYWJ1ZiBiZSBtYXAvdW5tYXBlZCBi eSBpb21tdSBkcml2ZXIgZXZlcnkgdGltZQo+PiBvZiBWUFUgSFcgZGF0YSB0cmFuc2Zlciwgc2lu Y2UgdGhlIHBoeXNpY2FsIHBhZ2VzIG5vdCBjaGFuZ2VkIGFuZCBpb21tdSBJT1ZBCj4+IHBsZW50 eS4KPj4KPj4gQW5vdGhlciBleGFtcGxlLCBpbiBvdXIgU29DLCBkZXZpY2UgQSBhbmQgZGV2aWNl IEIgdXNlIHRoZSBzYW1lIGRtYSBjaGFpbiBmb3JtYXQsCj4+IGFuZCB0aGVzZSBkcml2ZXJzIHNo YXJlIGRtYWJ1ZiBiZXR3ZWVuIGVhY2ggb3RoZXIsIHRodXMgdGhlICJkbWEgY2hhaW4iCj4+IGFy cmF5IGRvZXNuJ3QgbmVlZCB0byBiZSBnZW5lcmF0ZWQgZXZlcnkgdGltZXIgZm9yIGVhY2ggZGV2 aWNlLgo+Pgo+PiBTbyBoZXJlLCB3aXRoIHRoZSBoZWxwIGZyb20gdGhlICJtZXRhLWRhdGEiLCBv bmx5IHRoZSAiZmlyc3QgdGltZSIgd2UgbmVlZCB0byBnZW5lcmF0ZQo+PiB0aGUgIm1ldGEtZGF0 YSIgZnJvbSBzY3JhdGNoLCBhbmQgbGF0ZXIgd2UgY2FuIGp1c3QgcmV1c2UgaXQgdW50aWwgdGhl IGJ1ZmZlciBmcmVlZC4KPj4KPj4gVGhlICJtZXRhLWRhdGEiIGlzIHJlbGF0ZWQgdG8gdGhlIGlt cG9ydGVyLCBvciBpbXBvcnRlcnMuIEhvd2V2ZXIsIHRoZSAiZG1hX2J1Zl9hdHRhY2htZW50Igo+ PiBpcyBwZXIgImRldmljZXMiLCBob2xkaW5nIGRldmljZSBzcGVjaWZpYyBhdHRyaWJ1dGVzLCB3 aGlsZSAibWV0YS1kYXRhIiBpcyBwZXIgImRtYWJ1ZicsCj4+IGhvbGRpbmcgYnVmZmVyIHNwZWNp ZmljIGF0dHJpYnV0ZXMsIGxpa2UgdGhlIGV4YW1wbGUgYWJvdmUuCj4+Pj4gICAgICAgICAgbXV0 ZXhfbG9jaygmZGJfbGlzdC5sb2NrKTsKPj4+PiAgICAgICAgICBsaXN0X2FkZCgmZG1hYnVmLT5s aXN0X25vZGUsICZkYl9saXN0LmhlYWQpOwo+Pj4+IEBAIC01NzAsNiArNTcyLDEwNCBAQCB2b2lk IGRtYV9idWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHZvaWQgKnZhZGRyKQo+Pj4+ ICAgfQo+Pj4+ICAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl92dW5tYXApOwo+Pj4+Cj4+Pj4g Ky8qKgo+Pj4+ICsgKiBkbWFfYnVmX21ldGFfYXR0YWNoIC0gQXR0YWNoIGFkZGl0aW9uYWwgbWV0 YSBkYXRhIHRvIHRoZSBkbWFidWYKPj4+PiArICogQGRtYWJ1ZjogICAgW2luXSAgICB0aGUgZG1h YnVmIHRvIGF0dGFjaCB0bwo+Pj4+ICsgKiBAaWQ6ICAgICAgICAgICAgICAgIFtpbl0gICAgdGhl IGlkIG9mIHRoZSBtZXRhIGRhdGEKPj4+PiArICogQHBkYXRhOiAgICAgW2luXSAgICB0aGUgcmF3 IGRhdGEgdG8gYmUgYXR0YWNoZWQKPj4+PiArICogQHJlbGVhc2U6ICAgW2luXSAgICB0aGUgY2Fs bGJhY2sgdG8gcmVsZWFzZSB0aGUgbWV0YSBkYXRhCj4+Pj4gKyAqLwo+Pj4+ICtpbnQgZG1hX2J1 Zl9tZXRhX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBpbnQgaWQsIHZvaWQgKnBkYXRh LAo+Pj4+ICsgICAgICAgaW50ICgqcmVsZWFzZSkodm9pZCAqKSkKPj4+PiArewo+Pj4+ICsgICAg ICAgc3RydWN0IGRtYV9idWZfbWV0YSAqcG1ldGE7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcG1ldGEg PSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgZG1hX2J1Zl9tZXRhKSwgR0ZQX0tFUk5FTCk7Cj4+Pj4g KyAgICAgICBpZiAocG1ldGEgPT0gTlVMTCkKPj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1F Tk9NRU07Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcG1ldGEtPmlkID0gaWQ7Cj4+PiBXaGF0IGRvZXMg J2lkJyBtZWFuIGhlcmU/IEFsc28gdGhlcmUgaXMgbm8gY2hlY2sgb24gYW55IGR1cGxpY2l0eSBv bgo+Pj4gdGhlICdpZCcsIHNvIGlmIGFueSBkZXZpY2UgYWRkcyBtb3JlIG1ldGEgZGF0YSB3aXRo IHRoZSBzYW1lIElELCB5b3UKPj4+IHdvdWxkIGFsd2F5cyB3b3JrIG9ubHkgb24gdGhlIGZpcnN0 IG9uZT8gSXQgd291bGQgYWxzbyBoZWxwIGlmIHlvdQo+Pj4gY291bGQgZXhwbGFpbiB0aGUgcmVs ZXZhbmNlIG9mIGlkLgo+PiBUaGUgImlkIiBoZXJlIG1lYW5zIGEga2luZCBvZiBzcGVjaWZpYyAi bWV0YS1kYXRhIiwgZm9yIGV4YW1wbGUgd2UgdXNlCj4+ICIjZGVmaW5lIFZQVV9ETUFCVUZfTUVU QV9JRCAgICAweDEwMDAwIiBmb3IgdGhlIFZQVSBpb21tdSByZWxhdGVkCj4+IGRhdGEuCj4+Cj4+ IEVhY2ggaW1wb3J0ZXIgd291bGQgdHJ5IHRvICJkbWFfYnVmX21ldGFfZmV0Y2goKSIgdGhlICJt ZXRhLWRhdGEiIGZpcnN0LCBpZgo+PiBub3QgZm91bmQsIGl0IHdvdWxkIGdlbmVyYXRlIGFuZCBh dHRhY2ggaXQuIElmIGZvdW5kLCBpdCB3b3VsZCBqdXN0IHJldXNlIGl0Lgo+Pgo+PiBJIGFncmVl IHdpdGggeW91IHRoYXQgaXQncyBiZXR0ZXIgdG8gYWRkIHRoZSBjaGVjayBvZiBpZCBpbiB0aGlz IGZ1bmN0aW9uIGFzIHdlbGwuCj4+Pj4gKyAgICAgICBwbWV0YS0+cGRhdGEgPSBwZGF0YTsKPj4+ PiArICAgICAgIHBtZXRhLT5yZWxlYXNlID0gcmVsZWFzZTsKPj4+PiArCj4+Pj4gKyAgICAgICBt dXRleF9sb2NrKCZkbWFidWYtPmxvY2spOwo+Pj4+ICsgICAgICAgbGlzdF9hZGQoJnBtZXRhLT5u b2RlLCAmZG1hYnVmLT5tZXRhcyk7Cj4+Pj4gKyAgICAgICBtdXRleF91bmxvY2soJmRtYWJ1Zi0+ bG9jayk7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiArRVhQT1JU X1NZTUJPTF9HUEwoZG1hX2J1Zl9tZXRhX2F0dGFjaCk7Cj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiAr ICogZG1hX2J1Zl9tZXRhX2RldHRhY2ggLSBEZXR0YWNoIHRoZSBtZXRhIGRhdGEgZnJvbSBkbWFi dWYgYnkgaWQKPj4+PiArICogQGRtYWJ1ZjogICAgW2luXSAgICB0aGUgZG1hYnVmIGluY2x1ZGlu ZyB0aGUgbWV0YSBkYXRhCj4+Pj4gKyAqIEBpZDogICAgICAgICAgICAgICAgW2luXSAgICB0aGUg aWQgb2YgdGhlIG1ldGEgZGF0YQo+Pj4+ICsgKi8KPj4+PiAraW50IGRtYV9idWZfbWV0YV9kZXR0 YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIGludCBpZCkKPj4+PiArewo+Pj4+ICsgICAgICAg c3RydWN0IGRtYV9idWZfbWV0YSAqcG1ldGEsICp0bXA7Cj4+Pj4gKyAgICAgICBpbnQgcmV0ID0g LUVOT0VOVDsKPj4+PiArCj4+Pj4gKyAgICAgICBtdXRleF9sb2NrKCZkbWFidWYtPmxvY2spOwo+ Pj4+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBtZXRhLCB0bXAsICZkbWFidWYt Pm1ldGFzLCBub2RlKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIGlmIChwbWV0YS0+aWQgPT0gaWQp IHsKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocG1ldGEtPnJlbGVhc2UpCj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbWV0YS0+cmVsZWFzZShwbWV0YS0+cGRh dGEpOwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZGVsKCZwbWV0YS0+bm9kZSk7 Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAga2ZyZWUocG1ldGEpOwo+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldCA9IDA7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7Cj4+Pj4gKyAgICAgICAgICAgICAgIH0KPj4+PiArICAgICAgIH0KPj4+PiArICAgICAgIG11 dGV4X3VubG9jaygmZG1hYnVmLT5sb2NrKTsKPj4+PiArCj4+Pj4gKyAgICAgICByZXR1cm4gcmV0 Owo+Pj4+ICt9Cj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfbWV0YV9kZXR0YWNoKTsK Pj4+PiArCj4+Pj4gKy8qKgo+Pj4+ICsgKiBkbWFfYnVmX21ldGFfZmV0Y2ggLSBHZXQgdGhlIG1l dGEgZGF0YSBmcm9tIGRtYWJ1ZiBieSBpZAo+Pj4+ICsgKiBAZG1hYnVmOiAgICBbaW5dICAgIHRo ZSBkbWFidWYgaW5jbHVkaW5nIHRoZSBtZXRhIGRhdGEKPj4+PiArICogQGlkOiAgICAgICAgICAg ICAgICBbaW5dICAgIHRoZSBpZCBvZiB0aGUgbWV0YSBkYXRhCj4+Pj4gKyAqLwo+Pj4+ICt2b2lk ICpkbWFfYnVmX21ldGFfZmV0Y2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGlkKQo+Pj4+ ICt7Cj4+Pj4gKyAgICAgICBzdHJ1Y3QgZG1hX2J1Zl9tZXRhICpwbWV0YTsKPj4+PiArICAgICAg IHZvaWQgKnBkYXRhID0gTlVMTDsKPj4+PiArCj4+Pj4gKyAgICAgICBtdXRleF9sb2NrKCZkbWFi dWYtPmxvY2spOwo+Pj4+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShwbWV0YSwgJmRtYWJ1 Zi0+bWV0YXMsIG5vZGUpIHsKPj4+PiArICAgICAgICAgICAgICAgaWYgKHBtZXRhLT5pZCA9PSBp ZCkgewo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHBkYXRhID0gcG1ldGEtPnBkYXRhOwo+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICsgICAgICAgICAgICAgICB9 Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gKyAgICAgICBtdXRleF91bmxvY2soJmRtYWJ1Zi0+bG9jayk7 Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0dXJuIHBkYXRhOwo+Pj4+ICt9Cj4+Pj4gK0VYUE9SVF9T WU1CT0xfR1BMKGRtYV9idWZfbWV0YV9mZXRjaCk7Cj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiArICog ZG1hX2J1Zl9tZXRhX3JlbGVhc2UgLSBSZWxlYXNlIGFsbCB0aGUgbWV0YSBkYXRhIGF0dGFjaGVk IHRvIHRoZSBkbWFidWYKPj4+PiArICogQGRtYWJ1ZjogICAgW2luXSAgICB0aGUgZG1hYnVmIGlu Y2x1ZGluZyB0aGUgbWV0YSBkYXRhCj4+Pj4gKyAqLwo+Pj4+ICt2b2lkIGRtYV9idWZfbWV0YV9y ZWxlYXNlKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCj4+Pj4gK3sKPj4+PiArICAgICAgIHN0cnVj dCBkbWFfYnVmX21ldGEgKnBtZXRhLCAqdG1wOwo+Pj4+ICsKPj4+PiArICAgICAgIG11dGV4X2xv Y2soJmRtYWJ1Zi0+bG9jayk7Cj4+Pj4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo cG1ldGEsIHRtcCwgJmRtYWJ1Zi0+bWV0YXMsIG5vZGUpIHsKPj4+PiArICAgICAgICAgICAgICAg aWYgKHBtZXRhLT5yZWxlYXNlKQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHBtZXRhLT5y ZWxlYXNlKHBtZXRhLT5wZGF0YSk7Cj4+Pj4gKyAgICAgICAgICAgICAgIGxpc3RfZGVsKCZwbWV0 YS0+bm9kZSk7Cj4+Pj4gKyAgICAgICAgICAgICAgIGtmcmVlKHBtZXRhKTsKPj4+PiArICAgICAg IH0KPj4+PiArICAgICAgIG11dGV4X3VubG9jaygmZG1hYnVmLT5sb2NrKTsKPj4+PiArCj4+Pj4g KyAgICAgICByZXR1cm47Cj4+Pj4gK30KPj4+PiArCj4+Pj4gICAjaWZkZWYgQ09ORklHX0RFQlVH X0ZTCj4+Pj4gICBzdGF0aWMgaW50IGRtYV9idWZfZGVzY3JpYmUoc3RydWN0IHNlcV9maWxlICpz KQo+Pj4+ICAgewo+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaCBiL2lu Y2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4+Pj4gaW5kZXggZGZhYzVlZC4uMzY5ZDAzMiAxMDA2NDQK Pj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaAo+Pj4+ICsrKyBiL2luY2x1ZGUvbGlu dXgvZG1hLWJ1Zi5oCj4+Pj4gQEAgLTEyMCw2ICsxMjAsNyBAQCBzdHJ1Y3QgZG1hX2J1ZiB7Cj4+ Pj4gICAgICAgICAgc2l6ZV90IHNpemU7Cj4+Pj4gICAgICAgICAgc3RydWN0IGZpbGUgKmZpbGU7 Cj4+Pj4gICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBhdHRhY2htZW50czsKPj4+PiArICAgICAg IHN0cnVjdCBsaXN0X2hlYWQgbWV0YXM7Cj4+Pj4gICAgICAgICAgY29uc3Qgc3RydWN0IGRtYV9i dWZfb3BzICpvcHM7Cj4+Pj4gICAgICAgICAgLyogbXV0ZXggdG8gc2VyaWFsaXplIGxpc3QgbWFu aXB1bGF0aW9uLCBhdHRhY2gvZGV0YWNoIGFuZCB2bWFwL3VubWFwICovCj4+Pj4gICAgICAgICAg c3RydWN0IG11dGV4IGxvY2s7Cj4+Pj4gQEAgLTE0OSw2ICsxNTAsMjAgQEAgc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCB7Cj4+Pj4gICB9Owo+Pj4+Cj4+PiBMaWtlIEkgc2FpZCBhYm92ZSwgSSBk b24ndCB0aGluayBJIGNvbXBsZXRlbHkgdW5kZXJzdGFuZCB0aGUgbmVlZCBvZgo+Pj4gJ2EgbGlz dCBvZiBtZXRhcycgLSBhIHNhbXBsZSB1c2FnZSB3b3VsZCBiZSBtb3N0IGhlbHBmdWwgdG8gcmVh bGlzZQo+Pj4gdGhlIHJlbGV2YW5jZSBoZXJlLgo+PiBBcyB0aGUgZXhhbXBsZXMgYWJvdmUsIGlu IHRoZSBsaXN0IG9mICJtZXRhcyIsIHRoZXJlIGNhbiBiZSwgVlBVIGlvbW11IG1hcHBpbmcgaW5m bywKPj4gY2FtZXJhL2Rpc3BsYXkgZG1hIGNoYWluIGluZm8sIG9yIG90aGVyIGRlYnVnZ2luZy90 cmFja2luZyBpbmZvIGV0Yy4KPj4+PiAgIC8qKgo+Pj4+ICsgKiBzdHJ1Y3QgZG1hX2J1Zl9tZXRh IC0gaG9sZHMgdmFyaWVkIG1ldGEgZGF0YSBhdHRhY2hlZCB0byB0aGUgYnVmZmVyCj4+Pj4gKyAq IEBpZDogdGhlIGlkZW50aWZpY2F0aW9uIG9mIHRoZSBtZXRhIGRhdGEKPj4+PiArICogQGRtYWJ1 ZjogYnVmZmVyIGZvciB0aGlzIGF0dGFjaG1lbnQuCj4+Pj4gKyAqIEBub2RlOiBsaXN0IG9mIGRt YV9idWZfbWV0YS4KPj4+PiArICogQHBkYXRhOiBzcGVjaWZpYyBtZXRhIGRhdGEuCj4+Pj4gKyAq Lwo+Pj4+ICtzdHJ1Y3QgZG1hX2J1Zl9tZXRhIHsKPj4+PiArICAgICAgIGludCBpZDsKPj4+PiAr ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKPj4+PiArICAgICAgIGludCAoKnJlbGVhc2Up KHZvaWQgKnBkYXRhKTsKPj4+PiArICAgICAgIHZvaWQgKnBkYXRhOwo+Pj4+ICt9Owo+Pj4+ICsK Pj4+PiArLyoqCj4+Pj4gICAgKiBnZXRfZG1hX2J1ZiAtIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9y IGdldF9maWxlLgo+Pj4+ICAgICogQGRtYWJ1ZjogICAgW2luXSAgICBwb2ludGVyIHRvIGRtYV9i dWYKPj4+PiAgICAqCj4+Pj4gQEAgLTE5NCw2ICsyMDksMTMgQEAgaW50IGRtYV9idWZfbW1hcChz dHJ1Y3QgZG1hX2J1ZiAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwKPj4+PiAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nKTsKPj4+PiAgIHZvaWQgKmRtYV9idWZfdm1hcChzdHJ1Y3Qg ZG1hX2J1ZiAqKTsKPj4+PiAgIHZvaWQgZG1hX2J1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKiwg dm9pZCAqdmFkZHIpOwo+Pj4+ICsKPj4+PiAraW50IGRtYV9idWZfbWV0YV9hdHRhY2goc3RydWN0 IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGlkLCB2b2lkICpwZGF0YSwKPj4+PiArICAgICAgIGludCAo KnJlbGVhc2UpKHZvaWQgKikpOwo+Pj4+ICtpbnQgZG1hX2J1Zl9tZXRhX2RldHRhY2goc3RydWN0 IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGlkKTsKPj4+PiArdm9pZCAqZG1hX2J1Zl9tZXRhX2ZldGNo KHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIGludCBpZCk7Cj4+Pj4gK3ZvaWQgZG1hX2J1Zl9tZXRh X3JlbGVhc2Uoc3RydWN0IGRtYV9idWYgKmRtYWJ1Zik7Cj4+Pj4gKwo+Pj4+ICAgaW50IGRtYV9i dWZfZGVidWdmc19jcmVhdGVfZmlsZShjb25zdCBjaGFyICpuYW1lLAo+Pj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAoKndyaXRlKShzdHJ1Y3Qgc2VxX2ZpbGUgKikpOwo+ Pj4+ICAgI2VuZGlmIC8qIF9fRE1BX0JVRl9IX18gKi8KPj4+PiAtLQo+Pj4+IDEuNy4wLjQKPj4+ Pgo+Pj4+Cj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPj4+PiBMaW5hcm8tbW0tc2lnIG1haWxpbmcgbGlzdAo+Pj4+IExpbmFyby1tbS1zaWdAbGlz dHMubGluYXJvLm9yZwo+Pj4+IGh0dHA6Ly9saXN0cy5saW5hcm8ub3JnL21haWxtYW4vbGlzdGlu Zm8vbGluYXJvLW1tLXNpZwo+Pj4KPj4+Cj4+IFRoZSBwdXJwb3NlIG9mIHRoaXMgZXh0ZW5zaW9u IG1haW5seSBpczoKPj4gMS4gVHJ5IHRvIHJldXNlIHRoZSBmaXJzdCBnZW5lcmF0ZWQgc3BlY2lm aWMgZGF0YSBpbiB0aGUgYnVmZmVyJ3MgbGlmZSB0aW1lLCB0byBhdm9pZCByZWR1bmRhbnQgbWFw L3VubWFwLCBvciBnZW5lcmF0ZS9mcmVlLgo+PiAyLiBUcnkgdG8gc2hhcmUgdGhlICJyZXVzYWJs ZSIgZGF0YSBiZXR3ZWVuIGRldmljZXMsIGlmIHRoZSBkZXZpY2VzIHN1cHBvcnQgY29tcGF0aWJs ZSBmb3JtYXRzLgo+Pgo+PiBSZWdhcmRzLAo+PiBCaW4gV2FuZwo+PiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBMaW5hcm8tbW0tc2lnIG1haWxpbmcg bGlzdAo+PiBMaW5hcm8tbW0tc2lnQGxpc3RzLmxpbmFyby5vcmcKPj4gaHR0cDovL2xpc3RzLmxp bmFyby5vcmcvbWFpbG1hbi9saXN0aW5mby9saW5hcm8tbW0tc2lnCj4gCj4gCj4gCgotLSAKU2V1 bmctV29vIEtpbQpTYW1zdW5nIFNvZnR3YXJlIFImRCBDZW50ZXIKLS0KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mailout4.samsung.com ([203.254.224.34]:46224 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750830AbaCYJVv convert rfc822-to-8bit (ORCPT ); Tue, 25 Mar 2014 05:21:51 -0400 Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N2Z00K27JBRDB10@mailout4.samsung.com> for linux-media@vger.kernel.org; Tue, 25 Mar 2014 18:21:27 +0900 (KST) MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 8BIT Message-id: <53314A9E.908@samsung.com> Date: Tue, 25 Mar 2014 18:21:34 +0900 From: Seung-Woo Kim Reply-to: sw0312.kim@samsung.com To: Daniel Vetter Cc: Bin Wang , Linaro MM SIG , dri-devel , "linux-media@vger.kernel.org" , Seung-Woo Kim , Sumit Semwal Subject: Re: [Linaro-mm-sig] [PATCH] dma-buf: add meta data attachment References: <1395378261-17408-1-git-send-email-binw@marvell.com> <477F20668A386D41ADCC57781B1F70430F53F33F7D@SC-VEXCH1.marvell.com> In-reply-to: Sender: linux-media-owner@vger.kernel.org List-ID: Hi all, On 2014년 03월 24일 16:35, Daniel Vetter wrote: > Hi all, > > Adding piles more people. > > For the first case of caching the iommu mapping there's different > answers, depening upon the exact case: > > 1) You need to fix your userspace to not constantly re-establish the sharing. > > 2) We need to add streaming dma support for real to dma-bufs so that > the mapping can be kept while we transfer ownership around. Thus far > no one really needed this though since usually you don't actually do > cpu access. > > 3) You need opportunistic caching of imported/exported buffer objects > and their mappings. For this you need a) subsystem import/export > support which guarantees you to hand out the same dma-buf/native > object again upon re-export or re-import (drm has it) b) some > opportunistic caching of buffer objects (pretty much are real gpu drm > drivers have it). No need of any metadata scheme, and given how much > fun I've had implemented this for drm I don't you can make your > metadata scheme work in a sane or correct way wrt lifetimes. > > For caching the iommu mapping if the iommu is the same for multiple devices: > > 1) We need some way to figure out which iommu serves which devices. > > 2) The exporter needs to consult this and might just hand out the same > sg mapping out again if it wants to. > > No need for importers to do fancy stuff, or attach any > importer-visible metadata to dma-bufs. Of course duplicating this code > all over the place is a but uncool, so I expect that eventually we'll > have a generic exporter implementation, at least for non-swappable > buffers. drm/gem is a bit special here ... > > In general I don't like the idea of arbitrary metadata at all, sounds > prone to abuse with crazy lifetime/refcounting rules for the objects > involved. Also I think for a lot of your examples (like debugging) it > would be much better if we have a standardized piece of metadata so > that all drivers/platforms can use the same tooling. > > And it feels like I'm writing such a mail every few months ... I posted concept about importer priv of dma-buf, and it seems that this patch is partly from similar requirement - iommu map/unmap. And at that time, Daniel agreed at least the issue, that unnecessary map/unmap can repeatedly called, is also in the drm gem. http://lists.freedesktop.org/archives/dri-devel/2013-June/039469.html So I agree about the necessary of some data of dma-buf for general importer even though the data can be shared between different subsystems. > > Cheers, Daniel > > On Mon, Mar 24, 2014 at 7:20 AM, Bin Wang wrote: >> Hi Sumit, >> >> On 03/21/2014 07:26 PM, Sumit Semwal wrote: >>> Hi Bin Wang, >>> >>> On 21 March 2014 10:34, Bin Wang wrote: >>>> we found there'd be varied specific data connected to a dmabuf, like >>>> the iommu mapping of buffer, the dma descriptors (that can be shared >>>> between several components). Though these info might be able to be >>>> generated every time before dma operations, for performance sake, >>>> it's better to be kept before really invalid. >>> Thanks for your patch! >>> I think we'd need to have more specific details on what does 'meta >>> data' mean here; more specific comments inline. >>>> Change-Id: I89d43dc3fe1ee3da91c42074da5df71b968e6d3c >>>> Signed-off-by: Bin Wang >>>> --- >>>> drivers/base/dma-buf.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++ >>>> include/linux/dma-buf.h | 22 ++++++++++ >>>> 2 files changed, 122 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c >>>> index 08fe897..5c82e60 100644 >>>> --- a/drivers/base/dma-buf.c >>>> +++ b/drivers/base/dma-buf.c >>>> @@ -50,6 +50,7 @@ static int dma_buf_release(struct inode *inode, struct file *file) >>>> >>>> BUG_ON(dmabuf->vmapping_counter); >>>> >>>> + dma_buf_meta_release(dmabuf); >>>> dmabuf->ops->release(dmabuf); >>>> >>>> mutex_lock(&db_list.lock); >>>> @@ -138,6 +139,7 @@ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops, >>>> >>>> mutex_init(&dmabuf->lock); >>>> INIT_LIST_HEAD(&dmabuf->attachments); >>>> + INIT_LIST_HEAD(&dmabuf->metas); >>>> >>> I am not sure I understand the relationship of 'meta data' with >>> 'dma-buf', or 'attachments' - do you mean to have a list of some >>> meta-data that is unrelated to the attachments to the dma-buf? I think >>> it'd help to explain whether meta-data is specific to each dma-buf, >>> and there's a list of them, or this meta-data is related to each >>> importer device attachment? >>> If it's related to each importer, it should really be added as part of >>> the dma_buf_attachment, and not separately. This is basic concept of my RFC patch. http://www.kernelhub.org/?p=2&msg=268056 Best Regards, - Seung-Woo Kim >> The "meta-data" here can be any kind of data related to the dmabuf, , it's specific >> for each dmabuf. >> >> For example, we have iommu for a VPU device, VPU driver has >> to map the dmabuf to get an IOVA address before it can access the buffer. This >> dmabuf would be reused many times during the video playback, for performance >> concern we don't want this dmabuf be map/unmaped by iommu driver every time >> of VPU HW data transfer, since the physical pages not changed and iommu IOVA >> plenty. >> >> Another example, in our SoC, device A and device B use the same dma chain format, >> and these drivers share dmabuf between each other, thus the "dma chain" >> array doesn't need to be generated every timer for each device. >> >> So here, with the help from the "meta-data", only the "first time" we need to generate >> the "meta-data" from scratch, and later we can just reuse it until the buffer freed. >> >> The "meta-data" is related to the importer, or importers. However, the "dma_buf_attachment" >> is per "devices", holding device specific attributes, while "meta-data" is per "dmabuf', >> holding buffer specific attributes, like the example above. >>>> mutex_lock(&db_list.lock); >>>> list_add(&dmabuf->list_node, &db_list.head); >>>> @@ -570,6 +572,104 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, void *vaddr) >>>> } >>>> EXPORT_SYMBOL_GPL(dma_buf_vunmap); >>>> >>>> +/** >>>> + * dma_buf_meta_attach - Attach additional meta data to the dmabuf >>>> + * @dmabuf: [in] the dmabuf to attach to >>>> + * @id: [in] the id of the meta data >>>> + * @pdata: [in] the raw data to be attached >>>> + * @release: [in] the callback to release the meta data >>>> + */ >>>> +int dma_buf_meta_attach(struct dma_buf *dmabuf, int id, void *pdata, >>>> + int (*release)(void *)) >>>> +{ >>>> + struct dma_buf_meta *pmeta; >>>> + >>>> + pmeta = kmalloc(sizeof(struct dma_buf_meta), GFP_KERNEL); >>>> + if (pmeta == NULL) >>>> + return -ENOMEM; >>>> + >>>> + pmeta->id = id; >>> What does 'id' mean here? Also there is no check on any duplicity on >>> the 'id', so if any device adds more meta data with the same ID, you >>> would always work only on the first one? It would also help if you >>> could explain the relevance of id. >> The "id" here means a kind of specific "meta-data", for example we use >> "#define VPU_DMABUF_META_ID 0x10000" for the VPU iommu related >> data. >> >> Each importer would try to "dma_buf_meta_fetch()" the "meta-data" first, if >> not found, it would generate and attach it. If found, it would just reuse it. >> >> I agree with you that it's better to add the check of id in this function as well. >>>> + pmeta->pdata = pdata; >>>> + pmeta->release = release; >>>> + >>>> + mutex_lock(&dmabuf->lock); >>>> + list_add(&pmeta->node, &dmabuf->metas); >>>> + mutex_unlock(&dmabuf->lock); >>>> + >>>> + return 0; >>>> +} >>>> +EXPORT_SYMBOL_GPL(dma_buf_meta_attach); >>>> + >>>> +/** >>>> + * dma_buf_meta_dettach - Dettach the meta data from dmabuf by id >>>> + * @dmabuf: [in] the dmabuf including the meta data >>>> + * @id: [in] the id of the meta data >>>> + */ >>>> +int dma_buf_meta_dettach(struct dma_buf *dmabuf, int id) >>>> +{ >>>> + struct dma_buf_meta *pmeta, *tmp; >>>> + int ret = -ENOENT; >>>> + >>>> + mutex_lock(&dmabuf->lock); >>>> + list_for_each_entry_safe(pmeta, tmp, &dmabuf->metas, node) { >>>> + if (pmeta->id == id) { >>>> + if (pmeta->release) >>>> + pmeta->release(pmeta->pdata); >>>> + list_del(&pmeta->node); >>>> + kfree(pmeta); >>>> + ret = 0; >>>> + break; >>>> + } >>>> + } >>>> + mutex_unlock(&dmabuf->lock); >>>> + >>>> + return ret; >>>> +} >>>> +EXPORT_SYMBOL_GPL(dma_buf_meta_dettach); >>>> + >>>> +/** >>>> + * dma_buf_meta_fetch - Get the meta data from dmabuf by id >>>> + * @dmabuf: [in] the dmabuf including the meta data >>>> + * @id: [in] the id of the meta data >>>> + */ >>>> +void *dma_buf_meta_fetch(struct dma_buf *dmabuf, int id) >>>> +{ >>>> + struct dma_buf_meta *pmeta; >>>> + void *pdata = NULL; >>>> + >>>> + mutex_lock(&dmabuf->lock); >>>> + list_for_each_entry(pmeta, &dmabuf->metas, node) { >>>> + if (pmeta->id == id) { >>>> + pdata = pmeta->pdata; >>>> + break; >>>> + } >>>> + } >>>> + mutex_unlock(&dmabuf->lock); >>>> + >>>> + return pdata; >>>> +} >>>> +EXPORT_SYMBOL_GPL(dma_buf_meta_fetch); >>>> + >>>> +/** >>>> + * dma_buf_meta_release - Release all the meta data attached to the dmabuf >>>> + * @dmabuf: [in] the dmabuf including the meta data >>>> + */ >>>> +void dma_buf_meta_release(struct dma_buf *dmabuf) >>>> +{ >>>> + struct dma_buf_meta *pmeta, *tmp; >>>> + >>>> + mutex_lock(&dmabuf->lock); >>>> + list_for_each_entry_safe(pmeta, tmp, &dmabuf->metas, node) { >>>> + if (pmeta->release) >>>> + pmeta->release(pmeta->pdata); >>>> + list_del(&pmeta->node); >>>> + kfree(pmeta); >>>> + } >>>> + mutex_unlock(&dmabuf->lock); >>>> + >>>> + return; >>>> +} >>>> + >>>> #ifdef CONFIG_DEBUG_FS >>>> static int dma_buf_describe(struct seq_file *s) >>>> { >>>> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h >>>> index dfac5ed..369d032 100644 >>>> --- a/include/linux/dma-buf.h >>>> +++ b/include/linux/dma-buf.h >>>> @@ -120,6 +120,7 @@ struct dma_buf { >>>> size_t size; >>>> struct file *file; >>>> struct list_head attachments; >>>> + struct list_head metas; >>>> const struct dma_buf_ops *ops; >>>> /* mutex to serialize list manipulation, attach/detach and vmap/unmap */ >>>> struct mutex lock; >>>> @@ -149,6 +150,20 @@ struct dma_buf_attachment { >>>> }; >>>> >>> Like I said above, I don't think I completely understand the need of >>> 'a list of metas' - a sample usage would be most helpful to realise >>> the relevance here. >> As the examples above, in the list of "metas", there can be, VPU iommu mapping info, >> camera/display dma chain info, or other debugging/tracking info etc. >>>> /** >>>> + * struct dma_buf_meta - holds varied meta data attached to the buffer >>>> + * @id: the identification of the meta data >>>> + * @dmabuf: buffer for this attachment. >>>> + * @node: list of dma_buf_meta. >>>> + * @pdata: specific meta data. >>>> + */ >>>> +struct dma_buf_meta { >>>> + int id; >>>> + struct list_head node; >>>> + int (*release)(void *pdata); >>>> + void *pdata; >>>> +}; >>>> + >>>> +/** >>>> * get_dma_buf - convenience wrapper for get_file. >>>> * @dmabuf: [in] pointer to dma_buf >>>> * >>>> @@ -194,6 +209,13 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *, >>>> unsigned long); >>>> void *dma_buf_vmap(struct dma_buf *); >>>> void dma_buf_vunmap(struct dma_buf *, void *vaddr); >>>> + >>>> +int dma_buf_meta_attach(struct dma_buf *dmabuf, int id, void *pdata, >>>> + int (*release)(void *)); >>>> +int dma_buf_meta_dettach(struct dma_buf *dmabuf, int id); >>>> +void *dma_buf_meta_fetch(struct dma_buf *dmabuf, int id); >>>> +void dma_buf_meta_release(struct dma_buf *dmabuf); >>>> + >>>> int dma_buf_debugfs_create_file(const char *name, >>>> int (*write)(struct seq_file *)); >>>> #endif /* __DMA_BUF_H__ */ >>>> -- >>>> 1.7.0.4 >>>> >>>> >>>> _______________________________________________ >>>> Linaro-mm-sig mailing list >>>> Linaro-mm-sig@lists.linaro.org >>>> http://lists.linaro.org/mailman/listinfo/linaro-mm-sig >>> >>> >> The purpose of this extension mainly is: >> 1. Try to reuse the first generated specific data in the buffer's life time, to avoid redundant map/unmap, or generate/free. >> 2. Try to share the "reusable" data between devices, if the devices support compatible formats. >> >> Regards, >> Bin Wang >> _______________________________________________ >> Linaro-mm-sig mailing list >> Linaro-mm-sig@lists.linaro.org >> http://lists.linaro.org/mailman/listinfo/linaro-mm-sig > > > -- Seung-Woo Kim Samsung Software R&D Center --