From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751616AbeEUFoy (ORCPT ); Mon, 21 May 2018 01:44:54 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:36108 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751195AbeEUFop (ORCPT ); Mon, 21 May 2018 01:44:45 -0400 X-Google-Smtp-Source: AB8JxZo7mEZXlttJPqYz++r2vqvTq5qN/G6QRHv7FIrY5M0scfnWd9vbXjvSPpd64/ZjDz4Bg89jxw== Subject: Re: [Xen-devel][RFC 2/3] xen/grant-table: Extend API to work with DMA buffers To: Boris Ostrovsky , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, konrad.wilk@oracle.com Cc: daniel.vetter@intel.com, dongwon.kim@intel.com, matthew.d.roper@intel.com, Oleksandr Andrushchenko References: <20180517082604.14828-1-andr2000@gmail.com> <20180517082604.14828-3-andr2000@gmail.com> <28532709-6c87-f048-be6a-3c4ba02ae56f@oracle.com> From: Oleksandr Andrushchenko Message-ID: <097da8bd-2cfc-0916-451d-dec3e4d2a52e@gmail.com> Date: Mon, 21 May 2018 08:44:40 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <28532709-6c87-f048-be6a-3c4ba02ae56f@oracle.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/19/2018 01:19 AM, Boris Ostrovsky wrote: > On 05/17/2018 04:26 AM, Oleksandr Andrushchenko wrote: >> From: Oleksandr Andrushchenko >> >> Signed-off-by: Oleksandr Andrushchenko >> --- >> drivers/xen/grant-table.c | 49 +++++++++++++++++++++++++++++++++++++++ >> include/xen/grant_table.h | 7 ++++++ >> 2 files changed, 56 insertions(+) >> >> diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c >> index bb36b1e1dbcc..c27bcc420575 100644 >> --- a/drivers/xen/grant-table.c >> +++ b/drivers/xen/grant-table.c >> @@ -729,6 +729,55 @@ void gnttab_free_pages(int nr_pages, struct page **pages) >> } >> EXPORT_SYMBOL(gnttab_free_pages); >> >> +int gnttab_dma_alloc_pages(struct device *dev, bool coherent, >> + int nr_pages, struct page **pages, >> + void **vaddr, dma_addr_t *dev_bus_addr) >> +{ >> + int i; >> + int ret; >> + >> + ret = alloc_dma_xenballooned_pages(dev, coherent, nr_pages, pages, >> + vaddr, dev_bus_addr); >> + if (ret < 0) >> + return ret; >> + >> + for (i = 0; i < nr_pages; i++) { >> +#if BITS_PER_LONG < 64 >> + struct xen_page_foreign *foreign; >> + >> + foreign = kzalloc(sizeof(*foreign), GFP_KERNEL); >> + if (!foreign) { >> + gnttab_dma_free_pages(dev, flags, nr_pages, pages, >> + *vaddr, *dev_bus_addr); >> + return -ENOMEM; >> + } >> + set_page_private(pages[i], (unsigned long)foreign); >> +#endif >> + SetPagePrivate(pages[i]); >> + } >> + return 0; >> +} >> +EXPORT_SYMBOL(gnttab_dma_alloc_pages); >> + >> +void gnttab_dma_free_pages(struct device *dev, bool coherent, >> + int nr_pages, struct page **pages, >> + void *vaddr, dma_addr_t dev_bus_addr) >> +{ >> + int i; >> + >> + for (i = 0; i < nr_pages; i++) { >> + if (PagePrivate(pages[i])) { >> +#if BITS_PER_LONG < 64 >> + kfree((void *)page_private(pages[i])); >> +#endif >> + ClearPagePrivate(pages[i]); >> + } >> + } >> + free_dma_xenballooned_pages(dev, coherent, nr_pages, pages, >> + vaddr, dev_bus_addr); >> +} >> +EXPORT_SYMBOL(gnttab_dma_free_pages); > > Given that these routines look almost exactly like their non-dma > counterparts I wonder whether common code could be factored out. Yes, this can be done > -boris > > > > >> + >> /* Handling of paged out grant targets (GNTST_eagain) */ >> #define MAX_DELAY 256 >> static inline void >> diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h >> index 34b1379f9777..20ee2b5ba965 100644 >> --- a/include/xen/grant_table.h >> +++ b/include/xen/grant_table.h >> @@ -195,6 +195,13 @@ void gnttab_free_auto_xlat_frames(void); >> int gnttab_alloc_pages(int nr_pages, struct page **pages); >> void gnttab_free_pages(int nr_pages, struct page **pages); >> >> +int gnttab_dma_alloc_pages(struct device *dev, bool coherent, >> + int nr_pages, struct page **pages, >> + void **vaddr, dma_addr_t *dev_bus_addr); >> +void gnttab_dma_free_pages(struct device *dev, bool coherent, >> + int nr_pages, struct page **pages, >> + void *vaddr, dma_addr_t dev_bus_addr); >> + >> int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops, >> struct gnttab_map_grant_ref *kmap_ops, >> struct page **pages, unsigned int count); From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [Xen-devel][RFC 2/3] xen/grant-table: Extend API to work with DMA buffers Date: Mon, 21 May 2018 08:44:40 +0300 Message-ID: <097da8bd-2cfc-0916-451d-dec3e4d2a52e@gmail.com> References: <20180517082604.14828-1-andr2000@gmail.com> <20180517082604.14828-3-andr2000@gmail.com> <28532709-6c87-f048-be6a-3c4ba02ae56f@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id A925A6E24D for ; Mon, 21 May 2018 05:44:44 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id r2-v6so22107353lff.4 for ; Sun, 20 May 2018 22:44:44 -0700 (PDT) In-Reply-To: <28532709-6c87-f048-be6a-3c4ba02ae56f@oracle.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Ostrovsky , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, konrad.wilk@oracle.com Cc: daniel.vetter@intel.com, dongwon.kim@intel.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org T24gMDUvMTkvMjAxOCAwMToxOSBBTSwgQm9yaXMgT3N0cm92c2t5IHdyb3RlOgo+IE9uIDA1LzE3 LzIwMTggMDQ6MjYgQU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiBGcm9tOiBP bGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+ Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJf YW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy94ZW4vZ3JhbnQtdGFi bGUuYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGlu Y2x1ZGUveGVuL2dyYW50X3RhYmxlLmggfCAgNyArKysrKysKPj4gICAyIGZpbGVzIGNoYW5nZWQs IDU2IGluc2VydGlvbnMoKykKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2dyYW50LXRh YmxlLmMgYi9kcml2ZXJzL3hlbi9ncmFudC10YWJsZS5jCj4+IGluZGV4IGJiMzZiMWUxZGJjYy4u YzI3YmNjNDIwNTc1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3hlbi9ncmFudC10YWJsZS5jCj4+ ICsrKyBiL2RyaXZlcnMveGVuL2dyYW50LXRhYmxlLmMKPj4gQEAgLTcyOSw2ICs3MjksNTUgQEAg dm9pZCBnbnR0YWJfZnJlZV9wYWdlcyhpbnQgbnJfcGFnZXMsIHN0cnVjdCBwYWdlICoqcGFnZXMp Cj4+ICAgfQo+PiAgIEVYUE9SVF9TWU1CT0woZ250dGFiX2ZyZWVfcGFnZXMpOwo+PiAgIAo+PiAr aW50IGdudHRhYl9kbWFfYWxsb2NfcGFnZXMoc3RydWN0IGRldmljZSAqZGV2LCBib29sIGNvaGVy ZW50LAo+PiArCQkJICAgaW50IG5yX3BhZ2VzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAo+PiArCQkJ ICAgdm9pZCAqKnZhZGRyLCBkbWFfYWRkcl90ICpkZXZfYnVzX2FkZHIpCj4+ICt7Cj4+ICsJaW50 IGk7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXJldCA9IGFsbG9jX2RtYV94ZW5iYWxsb29uZWRf cGFnZXMoZGV2LCBjb2hlcmVudCwgbnJfcGFnZXMsIHBhZ2VzLAo+PiArCQkJCQkgICB2YWRkciwg ZGV2X2J1c19hZGRyKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+ PiArCWZvciAoaSA9IDA7IGkgPCBucl9wYWdlczsgaSsrKSB7Cj4+ICsjaWYgQklUU19QRVJfTE9O RyA8IDY0Cj4+ICsJCXN0cnVjdCB4ZW5fcGFnZV9mb3JlaWduICpmb3JlaWduOwo+PiArCj4+ICsJ CWZvcmVpZ24gPSBremFsbG9jKHNpemVvZigqZm9yZWlnbiksIEdGUF9LRVJORUwpOwo+PiArCQlp ZiAoIWZvcmVpZ24pIHsKPj4gKwkJCWdudHRhYl9kbWFfZnJlZV9wYWdlcyhkZXYsIGZsYWdzLCBu cl9wYWdlcywgcGFnZXMsCj4+ICsJCQkJCSAgICAgICp2YWRkciwgKmRldl9idXNfYWRkcik7Cj4+ ICsJCQlyZXR1cm4gLUVOT01FTTsKPj4gKwkJfQo+PiArCQlzZXRfcGFnZV9wcml2YXRlKHBhZ2Vz W2ldLCAodW5zaWduZWQgbG9uZylmb3JlaWduKTsKPj4gKyNlbmRpZgo+PiArCQlTZXRQYWdlUHJp dmF0ZShwYWdlc1tpXSk7Cj4+ICsJfQo+PiArCXJldHVybiAwOwo+PiArfQo+PiArRVhQT1JUX1NZ TUJPTChnbnR0YWJfZG1hX2FsbG9jX3BhZ2VzKTsKPj4gKwo+PiArdm9pZCBnbnR0YWJfZG1hX2Zy ZWVfcGFnZXMoc3RydWN0IGRldmljZSAqZGV2LCBib29sIGNvaGVyZW50LAo+PiArCQkJICAgaW50 IG5yX3BhZ2VzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAo+PiArCQkJICAgdm9pZCAqdmFkZHIsIGRt YV9hZGRyX3QgZGV2X2J1c19hZGRyKQo+PiArewo+PiArCWludCBpOwo+PiArCj4+ICsJZm9yIChp ID0gMDsgaSA8IG5yX3BhZ2VzOyBpKyspIHsKPj4gKwkJaWYgKFBhZ2VQcml2YXRlKHBhZ2VzW2ld KSkgewo+PiArI2lmIEJJVFNfUEVSX0xPTkcgPCA2NAo+PiArCQkJa2ZyZWUoKHZvaWQgKilwYWdl X3ByaXZhdGUocGFnZXNbaV0pKTsKPj4gKyNlbmRpZgo+PiArCQkJQ2xlYXJQYWdlUHJpdmF0ZShw YWdlc1tpXSk7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsJZnJlZV9kbWFfeGVuYmFsbG9vbmVkX3BhZ2Vz KGRldiwgY29oZXJlbnQsIG5yX3BhZ2VzLCBwYWdlcywKPj4gKwkJCQkgICAgdmFkZHIsIGRldl9i dXNfYWRkcik7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MKGdudHRhYl9kbWFfZnJlZV9wYWdlcyk7 Cj4KPiBHaXZlbiB0aGF0IHRoZXNlIHJvdXRpbmVzIGxvb2sgYWxtb3N0IGV4YWN0bHkgbGlrZSB0 aGVpciBub24tZG1hCj4gY291bnRlcnBhcnRzIEkgd29uZGVyIHdoZXRoZXIgY29tbW9uIGNvZGUg Y291bGQgYmUgZmFjdG9yZWQgb3V0LgpZZXMsIHRoaXMgY2FuIGJlIGRvbmUKPiAtYm9yaXMKPgo+ Cj4KPgo+PiArCj4+ICAgLyogSGFuZGxpbmcgb2YgcGFnZWQgb3V0IGdyYW50IHRhcmdldHMgKEdO VFNUX2VhZ2FpbikgKi8KPj4gICAjZGVmaW5lIE1BWF9ERUxBWSAyNTYKPj4gICBzdGF0aWMgaW5s aW5lIHZvaWQKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggYi9pbmNs dWRlL3hlbi9ncmFudF90YWJsZS5oCj4+IGluZGV4IDM0YjEzNzlmOTc3Ny4uMjBlZTJiNWJhOTY1 IDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oCj4+ICsrKyBiL2luY2x1 ZGUveGVuL2dyYW50X3RhYmxlLmgKPj4gQEAgLTE5NSw2ICsxOTUsMTMgQEAgdm9pZCBnbnR0YWJf ZnJlZV9hdXRvX3hsYXRfZnJhbWVzKHZvaWQpOwo+PiAgIGludCBnbnR0YWJfYWxsb2NfcGFnZXMo aW50IG5yX3BhZ2VzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKTsKPj4gICB2b2lkIGdudHRhYl9mcmVl X3BhZ2VzKGludCBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcyk7Cj4+ICAgCj4+ICtpbnQg Z250dGFiX2RtYV9hbGxvY19wYWdlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wgY29oZXJlbnQs Cj4+ICsJCQkgICBpbnQgbnJfcGFnZXMsIHN0cnVjdCBwYWdlICoqcGFnZXMsCj4+ICsJCQkgICB2 b2lkICoqdmFkZHIsIGRtYV9hZGRyX3QgKmRldl9idXNfYWRkcik7Cj4+ICt2b2lkIGdudHRhYl9k bWFfZnJlZV9wYWdlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wgY29oZXJlbnQsCj4+ICsJCQkg ICBpbnQgbnJfcGFnZXMsIHN0cnVjdCBwYWdlICoqcGFnZXMsCj4+ICsJCQkgICB2b2lkICp2YWRk ciwgZG1hX2FkZHJfdCBkZXZfYnVzX2FkZHIpOwo+PiArCj4+ICAgaW50IGdudHRhYl9tYXBfcmVm cyhzdHJ1Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgKm1hcF9vcHMsCj4+ICAgCQkgICAgc3RydWN0 IGdudHRhYl9tYXBfZ3JhbnRfcmVmICprbWFwX29wcywKPj4gICAJCSAgICBzdHJ1Y3QgcGFnZSAq KnBhZ2VzLCB1bnNpZ25lZCBpbnQgY291bnQpOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==