From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/8] dma-buf: add peer2peer flag Date: Thu, 29 Mar 2018 08:57:53 +0200 Message-ID: <20180329065753.GD3881@phenom.ffwll.local> References: <20180325110000.2238-1-christian.koenig@amd.com> <20180325110000.2238-4-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180325110000.2238-4-christian.koenig-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org T24gU3VuLCBNYXIgMjUsIDIwMTggYXQgMTI6NTk6NTZQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBZGQgYSBwZWVyMnBlZXIgZmxhZyBub3RpbmcgdGhhdCB0aGUgaW1wb3J0ZXIg Y2FuIGRlYWwgd2l0aCBkZXZpY2UKPiByZXNvdXJjZXMgd2hpY2ggYXJlIG5vdCBiYWNrZWQgYnkg cGFnZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtv ZW5pZ0BhbWQuY29tPgoKVW0gc3RyaWN0bHkgc3BlYWtpbmcgdGhleSBhbGwgc2hvdWxkLCBidXQg dHRtIG5ldmVyIGJvdGhlcmVkIHRvIHVzZSB0aGUKcmVhbCBpbnRlcmZhY2VzIGJ1dCBqdXN0IGhh Y2tlZCBhcm91bmQgdGhlIHByb3ZpZGVkIHNnIGxpc3QsIGdyYWJiaW5nIHRoZQp1bmRlcmx5aW5n IHN0cnVjdCBwYWdlcywgdGhlbiByZWJ1aWxkaW5nJnJlbWFwcGluZyB0aGUgc2cgbGlzdCBhZ2Fp bi4KClRoZSBlbnRpcmUgcG9pbnQgb2YgdXNpbmcgc2cgbGlzdHMgd2FzIGV4YWN0bHkgdG8gYWxs b3cgdGhpcyB1c2UgY2FzZSBvZgpwZWVyMnBlZXIgZG1hIChvciB3ZWxsIGluIGdlbmVyYWwgaGF2 ZSBzcGVjaWFsIGV4cG9ydGVycyB3aGljaCBtYW5hZ2VkCm1lbW9yeS9JTyByYW5nZXMgbm90IGJh Y2tlZCBieSBzdHJ1Y3QgcGFnZSkuIFNvIGVzc2VudGlhbGx5IHlvdSdyZSBoYXZpbmcKYSAiSSdt IHRvdGFsbHkgbm90IGJyb2tlbiBmbGFnIiBoZXJlLgoKSSB0aGluayBhIGJldHRlciBhcHByb2Fj aCB3b3VsZCBiZSBpZiB3ZSBhZGQgYSByZXF1aXJlc19zdHJ1Y3RfcGFnZSBvciBzbywKYW5kIGFu bm90YXRlIHRoZSBjdXJyZW50IGltcG9ydGVycyBhY2NvcmRpbmdseS4gT3Igd2UganVzdCBmaXgg dGhlbSB1cCAoaXQKaXMgYWxsIGluIHNoYXJlZCB0dG0gY29kZSBhZnRlciBhbGwsIEkgdGhpbmsg ZXZlcnlvbmUgZWxzZSBnb3QgdGhpcwpyaWdodCkuCi1EYW5pZWwKCj4gLS0tCj4gIGRyaXZlcnMv ZG1hLWJ1Zi9kbWEtYnVmLmMgfCAxICsKPiAgaW5jbHVkZS9saW51eC9kbWEtYnVmLmggICB8IDQg KysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ IGluZGV4IGZmYWEyZjlhOWMyYy4uZjQyMDIyNWY5M2M2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv ZG1hLWJ1Zi9kbWEtYnVmLmMKPiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gQEAg LTU2NSw2ICs1NjUsNyBAQCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFj aChjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfaW5mbyAqaW5mbwo+ICAKPiAgCWF0dGFjaC0+ ZGV2ID0gaW5mby0+ZGV2Owo+ICAJYXR0YWNoLT5kbWFidWYgPSBkbWFidWY7Cj4gKwlhdHRhY2gt PnBlZXIycGVlciA9IGluZm8tPnBlZXIycGVlcjsKPiAgCWF0dGFjaC0+cHJpdiA9IGluZm8tPnBy aXY7Cj4gIAlhdHRhY2gtPmludmFsaWRhdGUgPSBpbmZvLT5pbnZhbGlkYXRlOwo+ICAKPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYu aAo+IGluZGV4IDE1ZGQ4NTk4YmZmMS4uMWVmNTBiZDliYzViIDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvbGludXgvZG1hLWJ1Zi5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPiBAQCAt MzEzLDYgKzMxMyw3IEBAIHN0cnVjdCBkbWFfYnVmIHsKPiAgICogQGRtYWJ1ZjogYnVmZmVyIGZv ciB0aGlzIGF0dGFjaG1lbnQuCj4gICAqIEBkZXY6IGRldmljZSBhdHRhY2hlZCB0byB0aGUgYnVm ZmVyLgo+ICAgKiBAbm9kZTogbGlzdCBvZiBkbWFfYnVmX2F0dGFjaG1lbnQuCj4gKyAqIEBwZWVy MnBlZXI6IHRydWUgaWYgdGhlIGltcG9ydGVyIGNhbiBoYW5kbGUgcGVlciByZXNvdXJjZXMgd2l0 aG91dCBwYWdlcy4KPiAgICogQHByaXY6IGV4cG9ydGVyIHNwZWNpZmljIGF0dGFjaG1lbnQgZGF0 YS4KPiAgICoKPiAgICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGF0dGFjaG1lbnQgaW5mb3Jt YXRpb24gYmV0d2VlbiB0aGUgZG1hX2J1ZiBidWZmZXIKPiBAQCAtMzI4LDYgKzMyOSw3IEBAIHN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgewo+ICAJc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsKPiAg CXN0cnVjdCBkZXZpY2UgKmRldjsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKPiArCWJvb2wg cGVlcjJwZWVyOwo+ICAJdm9pZCAqcHJpdjsKPiAgCj4gIAkvKioKPiBAQCAtMzkyLDYgKzM5NCw3 IEBAIHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvIHsKPiAgICogQGRtYWJ1ZjoJdGhlIGV4cG9y dGVkIGRtYV9idWYKPiAgICogQGRldjoJdGhlIGRldmljZSB3aGljaCB3YW50cyB0byBpbXBvcnQg dGhlIGF0dGFjaG1lbnQKPiAgICogQHByaXY6CXByaXZhdGUgZGF0YSBvZiBpbXBvcnRlciB0byB0 aGlzIGF0dGFjaG1lbnQKPiArICogQHBlZXIycGVlcjoJdHJ1ZSBpZiB0aGUgaW1wb3J0ZXIgY2Fu IGhhbmRsZSBwZWVyIHJlc291cmNlcyB3aXRob3V0IHBhZ2VzCj4gICAqIEBpbnZhbGlkYXRlOglj YWxsYmFjayB0byB1c2UgZm9yIGludmFsaWRhdGluZyBtYXBwaW5ncwo+ICAgKgo+ICAgKiBUaGlz IHN0cnVjdHVyZSBob2xkcyB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gYXR0YWNoIHRvIGEg YnVmZmVyLiBVc2VkCj4gQEAgLTQwMSw2ICs0MDQsNyBAQCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hf aW5mbyB7Cj4gIAlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+ICAJc3RydWN0IGRldmljZSAqZGV2 Owo+ICAJdm9pZCAqcHJpdjsKPiArCWJvb2wgcGVlcjJwZWVyOwo+ICAJdm9pZCAoKmludmFsaWRh dGUpKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCk7Cj4gIH07Cj4gIAo+IC0tIAo+ IDIuMTQuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBv cmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wm0-f66.google.com ([74.125.82.66]:55622 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750707AbeC2G56 (ORCPT ); Thu, 29 Mar 2018 02:57:58 -0400 Received: by mail-wm0-f66.google.com with SMTP id b127so8002781wmf.5 for ; Wed, 28 Mar 2018 23:57:57 -0700 (PDT) Date: Thu, 29 Mar 2018 08:57:53 +0200 From: Daniel Vetter To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: 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 Subject: Re: [PATCH 4/8] dma-buf: add peer2peer flag Message-ID: <20180329065753.GD3881@phenom.ffwll.local> References: <20180325110000.2238-1-christian.koenig@amd.com> <20180325110000.2238-4-christian.koenig@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180325110000.2238-4-christian.koenig@amd.com> Sender: linux-media-owner@vger.kernel.org List-ID: 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. 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. 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). -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 -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch