From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH v2 2/9] xen/grant-table: Make set/clear page private code shared Date: Fri, 1 Jun 2018 14:44:38 +0300 Message-ID: References: <20180601114132.22596-1-andr2000@gmail.com> <20180601114132.22596-3-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id EB8406E645 for ; Fri, 1 Jun 2018 11:44:41 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id q11-v6so14394201lfc.7 for ; Fri, 01 Jun 2018 04:44:41 -0700 (PDT) In-Reply-To: <20180601114132.22596-3-andr2000@gmail.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: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: daniel.vetter@intel.com, dongwon.kim@intel.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org Qm9yaXMsIEkgZHJvcHBlZCB5b3VyIHItYiBmb3IgdGhpcyBwYXRjaCBhcyBJIGNoYW5nZWQKCkVY UE9SVF9TWU1CT0wgdG8gRVhQT1JUX1NZTUJPTF9HUEwgYXMgSnVlcmdlbiByZXF1ZXN0ZWQKCk9u IDA2LzAxLzIwMTggMDI6NDEgUE0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+IEZy b206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFt LmNvbT4KPgo+IE1ha2Ugc2V0L2NsZWFyIHBhZ2UgcHJpdmF0ZSBjb2RlIHNoYXJlZCBhbmQgYWNj ZXNzaWJsZSB0bwo+IG90aGVyIGtlcm5lbCBtb2R1bGVzIHdoaWNoIGNhbiByZS11c2UgdGhlc2Ug aW5zdGVhZCBvZiBvcGVuLWNvZGluZy4KPgo+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRy dXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPiAtLS0KPiAgIGRy aXZlcnMveGVuL2dyYW50LXRhYmxlLmMgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KPiAgIGluY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggfCAgMyArKysKPiAgIDIg ZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCj4KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy94ZW4vZ3JhbnQtdGFibGUuYyBiL2RyaXZlcnMveGVuL2dyYW50LXRh YmxlLmMKPiBpbmRleCBiYTM2ZmYzZTQ5MDMuLmRiYjQ4YTg5ZTk4NyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3hlbi9ncmFudC10YWJsZS5jCj4gKysrIGIvZHJpdmVycy94ZW4vZ3JhbnQtdGFibGUu Ywo+IEBAIC03NjksMjkgKzc2OSwxOCBAQCB2b2lkIGdudHRhYl9mcmVlX2F1dG9feGxhdF9mcmFt ZXModm9pZCkKPiAgIH0KPiAgIEVYUE9SVF9TWU1CT0xfR1BMKGdudHRhYl9mcmVlX2F1dG9feGxh dF9mcmFtZXMpOwo+ICAgCj4gLS8qKgo+IC0gKiBnbnR0YWJfYWxsb2NfcGFnZXMgLSBhbGxvYyBw YWdlcyBzdWl0YWJsZSBmb3IgZ3JhbnQgbWFwcGluZyBpbnRvCj4gLSAqIEBucl9wYWdlczogbnVt YmVyIG9mIHBhZ2VzIHRvIGFsbG9jCj4gLSAqIEBwYWdlczogcmV0dXJucyB0aGUgcGFnZXMKPiAt ICovCj4gLWludCBnbnR0YWJfYWxsb2NfcGFnZXMoaW50IG5yX3BhZ2VzLCBzdHJ1Y3QgcGFnZSAq KnBhZ2VzKQo+ICtpbnQgZ250dGFiX3BhZ2VzX3NldF9wcml2YXRlKGludCBucl9wYWdlcywgc3Ry dWN0IHBhZ2UgKipwYWdlcykKPiAgIHsKPiAgIAlpbnQgaTsKPiAtCWludCByZXQ7Cj4gLQo+IC0J cmV0ID0gYWxsb2NfeGVuYmFsbG9vbmVkX3BhZ2VzKG5yX3BhZ2VzLCBwYWdlcyk7Cj4gLQlpZiAo cmV0IDwgMCkKPiAtCQlyZXR1cm4gcmV0Owo+ICAgCj4gICAJZm9yIChpID0gMDsgaSA8IG5yX3Bh Z2VzOyBpKyspIHsKPiAgICNpZiBCSVRTX1BFUl9MT05HIDwgNjQKPiAgIAkJc3RydWN0IHhlbl9w YWdlX2ZvcmVpZ24gKmZvcmVpZ247Cj4gICAKPiAgIAkJZm9yZWlnbiA9IGt6YWxsb2Moc2l6ZW9m KCpmb3JlaWduKSwgR0ZQX0tFUk5FTCk7Cj4gLQkJaWYgKCFmb3JlaWduKSB7Cj4gLQkJCWdudHRh Yl9mcmVlX3BhZ2VzKG5yX3BhZ2VzLCBwYWdlcyk7Cj4gKwkJaWYgKCFmb3JlaWduKQo+ICAgCQkJ cmV0dXJuIC1FTk9NRU07Cj4gLQkJfQo+ICsKPiAgIAkJc2V0X3BhZ2VfcHJpdmF0ZShwYWdlc1tp XSwgKHVuc2lnbmVkIGxvbmcpZm9yZWlnbik7Cj4gICAjZW5kaWYKPiAgIAkJU2V0UGFnZVByaXZh dGUocGFnZXNbaV0pOwo+IEBAIC03OTksMTQgKzc4OCwzMCBAQCBpbnQgZ250dGFiX2FsbG9jX3Bh Z2VzKGludCBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcykKPiAgIAo+ICAgCXJldHVybiAw Owo+ICAgfQo+IC1FWFBPUlRfU1lNQk9MX0dQTChnbnR0YWJfYWxsb2NfcGFnZXMpOwo+ICtFWFBP UlRfU1lNQk9MX0dQTChnbnR0YWJfcGFnZXNfc2V0X3ByaXZhdGUpOwo+ICAgCj4gICAvKioKPiAt ICogZ250dGFiX2ZyZWVfcGFnZXMgLSBmcmVlIHBhZ2VzIGFsbG9jYXRlZCBieSBnbnR0YWJfYWxs b2NfcGFnZXMoKQo+IC0gKiBAbnJfcGFnZXM7IG51bWJlciBvZiBwYWdlcyB0byBmcmVlCj4gLSAq IEBwYWdlczogdGhlIHBhZ2VzCj4gKyAqIGdudHRhYl9hbGxvY19wYWdlcyAtIGFsbG9jIHBhZ2Vz IHN1aXRhYmxlIGZvciBncmFudCBtYXBwaW5nIGludG8KPiArICogQG5yX3BhZ2VzOiBudW1iZXIg b2YgcGFnZXMgdG8gYWxsb2MKPiArICogQHBhZ2VzOiByZXR1cm5zIHRoZSBwYWdlcwo+ICAgICov Cj4gLXZvaWQgZ250dGFiX2ZyZWVfcGFnZXMoaW50IG5yX3BhZ2VzLCBzdHJ1Y3QgcGFnZSAqKnBh Z2VzKQo+ICtpbnQgZ250dGFiX2FsbG9jX3BhZ2VzKGludCBucl9wYWdlcywgc3RydWN0IHBhZ2Ug KipwYWdlcykKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBhbGxvY194ZW5iYWxsb29u ZWRfcGFnZXMobnJfcGFnZXMsIHBhZ2VzKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiBy ZXQ7Cj4gKwo+ICsJcmV0ID0gZ250dGFiX3BhZ2VzX3NldF9wcml2YXRlKG5yX3BhZ2VzLCBwYWdl cyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlnbnR0YWJfZnJlZV9wYWdlcyhucl9wYWdlcywgcGFn ZXMpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoZ250dGFi X2FsbG9jX3BhZ2VzKTsKPiArCj4gK3ZvaWQgZ250dGFiX3BhZ2VzX2NsZWFyX3ByaXZhdGUoaW50 IG5yX3BhZ2VzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQo+ICAgewo+ICAgCWludCBpOwo+ICAgCj4g QEAgLTgxOCw2ICs4MjMsMTcgQEAgdm9pZCBnbnR0YWJfZnJlZV9wYWdlcyhpbnQgbnJfcGFnZXMs IHN0cnVjdCBwYWdlICoqcGFnZXMpCj4gICAJCQlDbGVhclBhZ2VQcml2YXRlKHBhZ2VzW2ldKTsK PiAgIAkJfQo+ICAgCX0KPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChnbnR0YWJfcGFnZXNfY2xl YXJfcHJpdmF0ZSk7Cj4gKwo+ICsvKioKPiArICogZ250dGFiX2ZyZWVfcGFnZXMgLSBmcmVlIHBh Z2VzIGFsbG9jYXRlZCBieSBnbnR0YWJfYWxsb2NfcGFnZXMoKQo+ICsgKiBAbnJfcGFnZXM7IG51 bWJlciBvZiBwYWdlcyB0byBmcmVlCj4gKyAqIEBwYWdlczogdGhlIHBhZ2VzCj4gKyAqLwo+ICt2 b2lkIGdudHRhYl9mcmVlX3BhZ2VzKGludCBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcykK PiArewo+ICsJZ250dGFiX3BhZ2VzX2NsZWFyX3ByaXZhdGUobnJfcGFnZXMsIHBhZ2VzKTsKPiAg IAlmcmVlX3hlbmJhbGxvb25lZF9wYWdlcyhucl9wYWdlcywgcGFnZXMpOwo+ICAgfQo+ICAgRVhQ T1JUX1NZTUJPTF9HUEwoZ250dGFiX2ZyZWVfcGFnZXMpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRl L3hlbi9ncmFudF90YWJsZS5oIGIvaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaAo+IGluZGV4IDJl Mzc3NDFmNmI4ZC4uZGUwM2YyNTQyYmI3IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUveGVuL2dyYW50 X3RhYmxlLmgKPiArKysgYi9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oCj4gQEAgLTE5OCw2ICsx OTgsOSBAQCB2b2lkIGdudHRhYl9mcmVlX2F1dG9feGxhdF9mcmFtZXModm9pZCk7Cj4gICBpbnQg Z250dGFiX2FsbG9jX3BhZ2VzKGludCBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcyk7Cj4g ICB2b2lkIGdudHRhYl9mcmVlX3BhZ2VzKGludCBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdl cyk7Cj4gICAKPiAraW50IGdudHRhYl9wYWdlc19zZXRfcHJpdmF0ZShpbnQgbnJfcGFnZXMsIHN0 cnVjdCBwYWdlICoqcGFnZXMpOwo+ICt2b2lkIGdudHRhYl9wYWdlc19jbGVhcl9wcml2YXRlKGlu dCBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcyk7Cj4gKwo+ICAgaW50IGdudHRhYl9tYXBf cmVmcyhzdHJ1Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgKm1hcF9vcHMsCj4gICAJCSAgICBzdHJ1 Y3QgZ250dGFiX21hcF9ncmFudF9yZWYgKmttYXBfb3BzLAo+ICAgCQkgICAgc3RydWN0IHBhZ2Ug KipwYWdlcywgdW5zaWduZWQgaW50IGNvdW50KTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-lf0-f66.google.com ([209.85.215.66]:38376 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752022AbeFALom (ORCPT ); Fri, 1 Jun 2018 07:44:42 -0400 Subject: Re: [PATCH v2 2/9] xen/grant-table: Make set/clear page private code shared To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: daniel.vetter@intel.com, dongwon.kim@intel.com, matthew.d.roper@intel.com, Oleksandr Andrushchenko References: <20180601114132.22596-1-andr2000@gmail.com> <20180601114132.22596-3-andr2000@gmail.com> From: Oleksandr Andrushchenko Message-ID: Date: Fri, 1 Jun 2018 14:44:38 +0300 MIME-Version: 1.0 In-Reply-To: <20180601114132.22596-3-andr2000@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-media-owner@vger.kernel.org List-ID: Boris, I dropped your r-b for this patch as I changed EXPORT_SYMBOL to EXPORT_SYMBOL_GPL as Juergen requested On 06/01/2018 02:41 PM, Oleksandr Andrushchenko wrote: > From: Oleksandr Andrushchenko > > Make set/clear page private code shared and accessible to > other kernel modules which can re-use these instead of open-coding. > > Signed-off-by: Oleksandr Andrushchenko > --- > drivers/xen/grant-table.c | 54 +++++++++++++++++++++++++-------------- > include/xen/grant_table.h | 3 +++ > 2 files changed, 38 insertions(+), 19 deletions(-) > > diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c > index ba36ff3e4903..dbb48a89e987 100644 > --- a/drivers/xen/grant-table.c > +++ b/drivers/xen/grant-table.c > @@ -769,29 +769,18 @@ void gnttab_free_auto_xlat_frames(void) > } > EXPORT_SYMBOL_GPL(gnttab_free_auto_xlat_frames); > > -/** > - * gnttab_alloc_pages - alloc pages suitable for grant mapping into > - * @nr_pages: number of pages to alloc > - * @pages: returns the pages > - */ > -int gnttab_alloc_pages(int nr_pages, struct page **pages) > +int gnttab_pages_set_private(int nr_pages, struct page **pages) > { > int i; > - int ret; > - > - ret = alloc_xenballooned_pages(nr_pages, pages); > - 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_free_pages(nr_pages, pages); > + if (!foreign) > return -ENOMEM; > - } > + > set_page_private(pages[i], (unsigned long)foreign); > #endif > SetPagePrivate(pages[i]); > @@ -799,14 +788,30 @@ int gnttab_alloc_pages(int nr_pages, struct page **pages) > > return 0; > } > -EXPORT_SYMBOL_GPL(gnttab_alloc_pages); > +EXPORT_SYMBOL_GPL(gnttab_pages_set_private); > > /** > - * gnttab_free_pages - free pages allocated by gnttab_alloc_pages() > - * @nr_pages; number of pages to free > - * @pages: the pages > + * gnttab_alloc_pages - alloc pages suitable for grant mapping into > + * @nr_pages: number of pages to alloc > + * @pages: returns the pages > */ > -void gnttab_free_pages(int nr_pages, struct page **pages) > +int gnttab_alloc_pages(int nr_pages, struct page **pages) > +{ > + int ret; > + > + ret = alloc_xenballooned_pages(nr_pages, pages); > + if (ret < 0) > + return ret; > + > + ret = gnttab_pages_set_private(nr_pages, pages); > + if (ret < 0) > + gnttab_free_pages(nr_pages, pages); > + > + return ret; > +} > +EXPORT_SYMBOL_GPL(gnttab_alloc_pages); > + > +void gnttab_pages_clear_private(int nr_pages, struct page **pages) > { > int i; > > @@ -818,6 +823,17 @@ void gnttab_free_pages(int nr_pages, struct page **pages) > ClearPagePrivate(pages[i]); > } > } > +} > +EXPORT_SYMBOL_GPL(gnttab_pages_clear_private); > + > +/** > + * gnttab_free_pages - free pages allocated by gnttab_alloc_pages() > + * @nr_pages; number of pages to free > + * @pages: the pages > + */ > +void gnttab_free_pages(int nr_pages, struct page **pages) > +{ > + gnttab_pages_clear_private(nr_pages, pages); > free_xenballooned_pages(nr_pages, pages); > } > EXPORT_SYMBOL_GPL(gnttab_free_pages); > diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h > index 2e37741f6b8d..de03f2542bb7 100644 > --- a/include/xen/grant_table.h > +++ b/include/xen/grant_table.h > @@ -198,6 +198,9 @@ 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_pages_set_private(int nr_pages, struct page **pages); > +void gnttab_pages_clear_private(int nr_pages, struct page **pages); > + > int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops, > struct gnttab_map_grant_ref *kmap_ops, > struct page **pages, unsigned int count);