From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753248AbeC2Lea (ORCPT ); Thu, 29 Mar 2018 07:34:30 -0400 Received: from mail-wm0-f44.google.com ([74.125.82.44]:39357 "EHLO mail-wm0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752979AbeC2Le2 (ORCPT ); Thu, 29 Mar 2018 07:34:28 -0400 X-Google-Smtp-Source: AIpwx48WqTg/LexXho1Aw8d3yqDDapyw3Z8xRyA2o0X88Jp1zYu1rTV3w8dQoQ6DdOPBwC7YZosb6A== Reply-To: christian.koenig@amd.com Subject: Re: [PATCH 4/8] dma-buf: add peer2peer flag To: linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20180325110000.2238-1-christian.koenig@amd.com> <20180325110000.2238-4-christian.koenig@amd.com> <20180329065753.GD3881@phenom.ffwll.local> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <8b823458-8bdc-3217-572b-509a28aae742@gmail.com> Date: Thu, 29 Mar 2018 13:34:24 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180329065753.GD3881@phenom.ffwll.local> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 29.03.2018 um 08:57 schrieb Daniel Vetter: > On Sun, Mar 25, 2018 at 12:59:56PM +0200, Christian König wrote: >> Add a peer2peer flag noting that the importer can deal with device >> resources which are not backed by pages. >> >> Signed-off-by: Christian König > Um strictly speaking they all should, but ttm never bothered to use the > real interfaces but just hacked around the provided sg list, grabbing the > underlying struct pages, then rebuilding&remapping the sg list again. Actually that isn't correct. TTM converts them to a dma address array because drivers need it like this (at least nouveau, radeon and amdgpu). I've fixed radeon and amdgpu to be able to deal without it and mailed with Ben about nouveau, but the outcome is they don't really know. TTM itself doesn't have any need for the pages on imported BOs (you can't mmap them anyway), the real underlying problem is that sg tables doesn't provide what drivers need. I think we could rather easily fix sg tables, but that is a totally separate task. > The entire point of using sg lists was exactly to allow this use case of > peer2peer dma (or well in general have special exporters which managed > memory/IO ranges not backed by struct page). So essentially you're having > a "I'm totally not broken flag" here. No, independent of needed struct page pointers we need to note if the exporter can handle peer2peer stuff from the hardware side in general. So what I've did is just to set peer2peer allowed on the importer because of the driver needs and clear it in the exporter if the hardware can't handle that. > I think a better approach would be if we add a requires_struct_page or so, > and annotate the current importers accordingly. Or we just fix them up (it > is all in shared ttm code after all, I think everyone else got this > right). I would rather not bed on that. Christian. > -Daniel > >> --- >> drivers/dma-buf/dma-buf.c | 1 + >> include/linux/dma-buf.h | 4 ++++ >> 2 files changed, 5 insertions(+) >> >> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c >> index ffaa2f9a9c2c..f420225f93c6 100644 >> --- a/drivers/dma-buf/dma-buf.c >> +++ b/drivers/dma-buf/dma-buf.c >> @@ -565,6 +565,7 @@ struct dma_buf_attachment *dma_buf_attach(const struct dma_buf_attach_info *info >> >> attach->dev = info->dev; >> attach->dmabuf = dmabuf; >> + attach->peer2peer = info->peer2peer; >> attach->priv = info->priv; >> attach->invalidate = info->invalidate; >> >> diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h >> index 15dd8598bff1..1ef50bd9bc5b 100644 >> --- a/include/linux/dma-buf.h >> +++ b/include/linux/dma-buf.h >> @@ -313,6 +313,7 @@ struct dma_buf { >> * @dmabuf: buffer for this attachment. >> * @dev: device attached to the buffer. >> * @node: list of dma_buf_attachment. >> + * @peer2peer: true if the importer can handle peer resources without pages. >> * @priv: exporter specific attachment data. >> * >> * This structure holds the attachment information between the dma_buf buffer >> @@ -328,6 +329,7 @@ struct dma_buf_attachment { >> struct dma_buf *dmabuf; >> struct device *dev; >> struct list_head node; >> + bool peer2peer; >> void *priv; >> >> /** >> @@ -392,6 +394,7 @@ struct dma_buf_export_info { >> * @dmabuf: the exported dma_buf >> * @dev: the device which wants to import the attachment >> * @priv: private data of importer to this attachment >> + * @peer2peer: true if the importer can handle peer resources without pages >> * @invalidate: callback to use for invalidating mappings >> * >> * This structure holds the information required to attach to a buffer. Used >> @@ -401,6 +404,7 @@ struct dma_buf_attach_info { >> struct dma_buf *dmabuf; >> struct device *dev; >> void *priv; >> + bool peer2peer; >> void (*invalidate)(struct dma_buf_attachment *attach); >> }; >> >> -- >> 2.14.1 >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 4/8] dma-buf: add peer2peer flag Date: Thu, 29 Mar 2018 13:34:24 +0200 Message-ID: <8b823458-8bdc-3217-572b-509a28aae742@gmail.com> References: <20180325110000.2238-1-christian.koenig@amd.com> <20180325110000.2238-4-christian.koenig@amd.com> <20180329065753.GD3881@phenom.ffwll.local> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180329065753.GD3881-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: dri-devel@lists.freedesktop.org QW0gMjkuMDMuMjAxOCB1bSAwODo1NyBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gT24gU3VuLCBN YXIgMjUsIDIwMTggYXQgMTI6NTk6NTZQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToK Pj4gQWRkIGEgcGVlcjJwZWVyIGZsYWcgbm90aW5nIHRoYXQgdGhlIGltcG9ydGVyIGNhbiBkZWFs IHdpdGggZGV2aWNlCj4+IHJlc291cmNlcyB3aGljaCBhcmUgbm90IGJhY2tlZCBieSBwYWdlcy4K Pj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0Bh bWQuY29tPgo+IFVtIHN0cmljdGx5IHNwZWFraW5nIHRoZXkgYWxsIHNob3VsZCwgYnV0IHR0bSBu ZXZlciBib3RoZXJlZCB0byB1c2UgdGhlCj4gcmVhbCBpbnRlcmZhY2VzIGJ1dCBqdXN0IGhhY2tl ZCBhcm91bmQgdGhlIHByb3ZpZGVkIHNnIGxpc3QsIGdyYWJiaW5nIHRoZQo+IHVuZGVybHlpbmcg c3RydWN0IHBhZ2VzLCB0aGVuIHJlYnVpbGRpbmcmcmVtYXBwaW5nIHRoZSBzZyBsaXN0IGFnYWlu LgoKQWN0dWFsbHkgdGhhdCBpc24ndCBjb3JyZWN0LiBUVE0gY29udmVydHMgdGhlbSB0byBhIGRt YSBhZGRyZXNzIGFycmF5IApiZWNhdXNlIGRyaXZlcnMgbmVlZCBpdCBsaWtlIHRoaXMgKGF0IGxl YXN0IG5vdXZlYXUsIHJhZGVvbiBhbmQgYW1kZ3B1KS4KCkkndmUgZml4ZWQgcmFkZW9uIGFuZCBh bWRncHUgdG8gYmUgYWJsZSB0byBkZWFsIHdpdGhvdXQgaXQgYW5kIG1haWxlZCAKd2l0aCBCZW4g YWJvdXQgbm91dmVhdSwgYnV0IHRoZSBvdXRjb21lIGlzIHRoZXkgZG9uJ3QgcmVhbGx5IGtub3cu CgpUVE0gaXRzZWxmIGRvZXNuJ3QgaGF2ZSBhbnkgbmVlZCBmb3IgdGhlIHBhZ2VzIG9uIGltcG9y dGVkIEJPcyAoeW91IApjYW4ndCBtbWFwIHRoZW0gYW55d2F5KSwgdGhlIHJlYWwgdW5kZXJseWlu ZyBwcm9ibGVtIGlzIHRoYXQgc2cgdGFibGVzIApkb2Vzbid0IHByb3ZpZGUgd2hhdCBkcml2ZXJz IG5lZWQuCgpJIHRoaW5rIHdlIGNvdWxkIHJhdGhlciBlYXNpbHkgZml4IHNnIHRhYmxlcywgYnV0 IHRoYXQgaXMgYSB0b3RhbGx5IApzZXBhcmF0ZSB0YXNrLgoKPiBUaGUgZW50aXJlIHBvaW50IG9m IHVzaW5nIHNnIGxpc3RzIHdhcyBleGFjdGx5IHRvIGFsbG93IHRoaXMgdXNlIGNhc2Ugb2YKPiBw ZWVyMnBlZXIgZG1hIChvciB3ZWxsIGluIGdlbmVyYWwgaGF2ZSBzcGVjaWFsIGV4cG9ydGVycyB3 aGljaCBtYW5hZ2VkCj4gbWVtb3J5L0lPIHJhbmdlcyBub3QgYmFja2VkIGJ5IHN0cnVjdCBwYWdl KS4gU28gZXNzZW50aWFsbHkgeW91J3JlIGhhdmluZwo+IGEgIkknbSB0b3RhbGx5IG5vdCBicm9r ZW4gZmxhZyIgaGVyZS4KCk5vLCBpbmRlcGVuZGVudCBvZiBuZWVkZWQgc3RydWN0IHBhZ2UgcG9p bnRlcnMgd2UgbmVlZCB0byBub3RlIGlmIHRoZSAKZXhwb3J0ZXIgY2FuIGhhbmRsZSBwZWVyMnBl ZXIgc3R1ZmYgZnJvbSB0aGUgaGFyZHdhcmUgc2lkZSBpbiBnZW5lcmFsLgoKU28gd2hhdCBJJ3Zl IGRpZCBpcyBqdXN0IHRvIHNldCBwZWVyMnBlZXIgYWxsb3dlZCBvbiB0aGUgaW1wb3J0ZXIgCmJl Y2F1c2Ugb2YgdGhlIGRyaXZlciBuZWVkcyBhbmQgY2xlYXIgaXQgaW4gdGhlIGV4cG9ydGVyIGlm IHRoZSBoYXJkd2FyZSAKY2FuJ3QgaGFuZGxlIHRoYXQuCgo+IEkgdGhpbmsgYSBiZXR0ZXIgYXBw cm9hY2ggd291bGQgYmUgaWYgd2UgYWRkIGEgcmVxdWlyZXNfc3RydWN0X3BhZ2Ugb3Igc28sCj4g YW5kIGFubm90YXRlIHRoZSBjdXJyZW50IGltcG9ydGVycyBhY2NvcmRpbmdseS4gT3Igd2UganVz dCBmaXggdGhlbSB1cCAoaXQKPiBpcyBhbGwgaW4gc2hhcmVkIHR0bSBjb2RlIGFmdGVyIGFsbCwg SSB0aGluayBldmVyeW9uZSBlbHNlIGdvdCB0aGlzCj4gcmlnaHQpLgoKSSB3b3VsZCByYXRoZXIg bm90IGJlZCBvbiB0aGF0LgoKQ2hyaXN0aWFuLgoKPiAtRGFuaWVsCj4KPj4gLS0tCj4+ICAgZHJp dmVycy9kbWEtYnVmL2RtYS1idWYuYyB8IDEgKwo+PiAgIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5o ICAgfCA0ICsrKysKPj4gICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQo+Pgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9k bWEtYnVmLmMKPj4gaW5kZXggZmZhYTJmOWE5YzJjLi5mNDIwMjI1ZjkzYzYgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2Rt YS1idWYuYwo+PiBAQCAtNTY1LDYgKzU2NSw3IEBAIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQg KmRtYV9idWZfYXR0YWNoKGNvbnN0IHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9pbmZvICppbmZvCj4+ ICAgCj4+ICAgCWF0dGFjaC0+ZGV2ID0gaW5mby0+ZGV2Owo+PiAgIAlhdHRhY2gtPmRtYWJ1ZiA9 IGRtYWJ1ZjsKPj4gKwlhdHRhY2gtPnBlZXIycGVlciA9IGluZm8tPnBlZXIycGVlcjsKPj4gICAJ YXR0YWNoLT5wcml2ID0gaW5mby0+cHJpdjsKPj4gICAJYXR0YWNoLT5pbnZhbGlkYXRlID0gaW5m by0+aW52YWxpZGF0ZTsKPj4gICAKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWJ1 Zi5oIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPj4gaW5kZXggMTVkZDg1OThiZmYxLi4xZWY1 MGJkOWJjNWIgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4+ICsrKyBi L2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4+IEBAIC0zMTMsNiArMzEzLDcgQEAgc3RydWN0IGRt YV9idWYgewo+PiAgICAqIEBkbWFidWY6IGJ1ZmZlciBmb3IgdGhpcyBhdHRhY2htZW50Lgo+PiAg ICAqIEBkZXY6IGRldmljZSBhdHRhY2hlZCB0byB0aGUgYnVmZmVyLgo+PiAgICAqIEBub2RlOiBs aXN0IG9mIGRtYV9idWZfYXR0YWNobWVudC4KPj4gKyAqIEBwZWVyMnBlZXI6IHRydWUgaWYgdGhl IGltcG9ydGVyIGNhbiBoYW5kbGUgcGVlciByZXNvdXJjZXMgd2l0aG91dCBwYWdlcy4KPj4gICAg KiBAcHJpdjogZXhwb3J0ZXIgc3BlY2lmaWMgYXR0YWNobWVudCBkYXRhLgo+PiAgICAqCj4+ICAg ICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGF0dGFjaG1lbnQgaW5mb3JtYXRpb24gYmV0d2Vl biB0aGUgZG1hX2J1ZiBidWZmZXIKPj4gQEAgLTMyOCw2ICszMjksNyBAQCBzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50IHsKPj4gICAJc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsKPj4gICAJc3RydWN0 IGRldmljZSAqZGV2Owo+PiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4+ICsJYm9vbCBwZWVy MnBlZXI7Cj4+ICAgCXZvaWQgKnByaXY7Cj4+ICAgCj4+ICAgCS8qKgo+PiBAQCAtMzkyLDYgKzM5 NCw3IEBAIHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvIHsKPj4gICAgKiBAZG1hYnVmOgl0aGUg ZXhwb3J0ZWQgZG1hX2J1Zgo+PiAgICAqIEBkZXY6CXRoZSBkZXZpY2Ugd2hpY2ggd2FudHMgdG8g aW1wb3J0IHRoZSBhdHRhY2htZW50Cj4+ICAgICogQHByaXY6CXByaXZhdGUgZGF0YSBvZiBpbXBv cnRlciB0byB0aGlzIGF0dGFjaG1lbnQKPj4gKyAqIEBwZWVyMnBlZXI6CXRydWUgaWYgdGhlIGlt cG9ydGVyIGNhbiBoYW5kbGUgcGVlciByZXNvdXJjZXMgd2l0aG91dCBwYWdlcwo+PiAgICAqIEBp bnZhbGlkYXRlOgljYWxsYmFjayB0byB1c2UgZm9yIGludmFsaWRhdGluZyBtYXBwaW5ncwo+PiAg ICAqCj4+ICAgICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVk IHRvIGF0dGFjaCB0byBhIGJ1ZmZlci4gVXNlZAo+PiBAQCAtNDAxLDYgKzQwNCw3IEBAIHN0cnVj dCBkbWFfYnVmX2F0dGFjaF9pbmZvIHsKPj4gICAJc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsKPj4g ICAJc3RydWN0IGRldmljZSAqZGV2Owo+PiAgIAl2b2lkICpwcml2Owo+PiArCWJvb2wgcGVlcjJw ZWVyOwo+PiAgIAl2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAq YXR0YWNoKTsKPj4gICB9Owo+PiAgIAo+PiAtLSAKPj4gMi4xNC4xCj4+Cj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QK YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==