From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933494AbdCHCRX (ORCPT ); Tue, 7 Mar 2017 21:17:23 -0500 Received: from mail.kernel.org ([198.145.29.136]:45496 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756434AbdCHCRT (ORCPT ); Tue, 7 Mar 2017 21:17:19 -0500 Date: Tue, 7 Mar 2017 16:49:46 -0800 (PST) From: Stefano Stabellini X-X-Sender: sstabellini@sstabellini-ThinkPad-X260 To: Julien Grall cc: Stefano Stabellini , xen-devel@lists.xenproject.org, jgross@suse.com, Latchesar Ionkov , Eric Van Hensbergen , linux-kernel@vger.kernel.org, Stefano Stabellini , v9fs-developer@lists.sourceforge.net, Ron Minnich , boris.ostrovsky@oracle.com Subject: Re: [Xen-devel] [PATCH 4/7] xen/9pfs: connect to the backend In-Reply-To: Message-ID: References: <1488830488-18506-1-git-send-email-sstabellini@kernel.org> <1488830488-18506-4-git-send-email-sstabellini@kernel.org> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 7 Mar 2017, Julien Grall wrote: > Hi Stefano, > > On 03/06/2017 08:01 PM, Stefano Stabellini wrote: > > +static int xen_9pfs_front_alloc_dataring(struct xenbus_device *dev, > > + struct xen_9pfs_dataring *ring) > > +{ > > + int i; > > + int ret = -ENOMEM; > > + > > + init_waitqueue_head(&ring->wq); > > + spin_lock_init(&ring->lock); > > + INIT_WORK(&ring->work, p9_xen_response); > > + > > + ring->intf = (struct xen_9pfs_data_intf *) __get_free_page(GFP_KERNEL > > | __GFP_ZERO); > > + if (!ring->intf) > > + goto error; > > + memset(ring->intf, 0, XEN_PAGE_SIZE); > > + ring->bytes = (void*)__get_free_pages(GFP_KERNEL | __GFP_ZERO, > > XEN_9PFS_RING_ORDER); > > The ring order will be in term of Xen page size and not Linux. So you are > going to allocate much more memory than expected on 64KB kernel. I'll fix. > > + if (ring->bytes == NULL) > > + goto error; > > + for (i = 0; i < (1 << XEN_9PFS_RING_ORDER); i++) > > + ring->intf->ref[i] = > > gnttab_grant_foreign_access(dev->otherend_id, > > pfn_to_gfn(virt_to_pfn((void*)ring->bytes) + i), 0);. > > Please use virt_to_gfn rather than pfn_to_gfn(virt_to_pfn). OK > Also, this is not going to work on 64K kernel because you will grant access to > noncontiguous memory (e.g 0-4K, 64K-68K,...). By using virt_to_gfn like you suggested, the loop will correctly iterate on a 4K by 4K basis, even on a 64K kernel: ring->bytes = (void*)__get_free_pages(GFP_KERNEL | __GFP_ZERO, XEN_9PFS_RING_ORDER - (PAGE_SHIFT - XEN_PAGE_SHIFT)); for (i = 0; i < (1 << XEN_9PFS_RING_ORDER); i++) ring->intf->ref[i] = gnttab_grant_foreign_access(dev->otherend_id, virt_to_gfn((void*)ring->bytes) + i, 0); where XEN_9PFS_RING_ORDER specifies the order at 4K granularity. Am I missing something? > We have various helper to break-down the page for you, see > gnttab_for_one_grant, gnttab_foreach_grant, gnttab_count_grant, > xen_for_each_gfn (though this one it is internal to xlate_mmu.c so far) > > Please use them to avoid any further. > > > + ring->ref = gnttab_grant_foreign_access(dev->otherend_id, > > pfn_to_gfn(virt_to_pfn((void*)ring->intf)), 0); > > Please use virt_to_gfn rather than pfn_to_gfn(virt_to_pfn). Sure > > + ring->ring.in = ring->bytes; > > + ring->ring.out = ring->bytes + XEN_9PFS_RING_SIZE; > > + > > + ret = xenbus_alloc_evtchn(dev, &ring->evtchn); > > + if (ret) > > + goto error; > > + ring->irq = bind_evtchn_to_irqhandler(ring->evtchn, > > xen_9pfs_front_event_handler, > > + 0, "xen_9pfs-frontend", ring); > > + if (ring->irq < 0) { > > + xenbus_free_evtchn(dev, ring->evtchn); > > + ret = ring->irq; > > + goto error; > > + } > > return 0; > > + > > +error: > > + if (ring->intf != NULL) > > + kfree(ring->intf); > > + if (ring->bytes != NULL) > > + kfree(ring->bytes); > > + return ret; > > } From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH 4/7] xen/9pfs: connect to the backend Date: Tue, 7 Mar 2017 16:49:46 -0800 (PST) Message-ID: References: <1488830488-18506-1-git-send-email-sstabellini@kernel.org> <1488830488-18506-4-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1clPnd-00017I-AY for xen-devel@lists.xenproject.org; Wed, 08 Mar 2017 00:49:53 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: jgross@suse.com, Latchesar Ionkov , Stefano Stabellini , Eric Van Hensbergen , Ron Minnich , linux-kernel@vger.kernel.org, Stefano Stabellini , v9fs-developer@lists.sourceforge.net, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com List-Id: xen-devel@lists.xenproject.org T24gVHVlLCA3IE1hciAyMDE3LCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gSGkgU3RlZmFubywKPiAK PiBPbiAwMy8wNi8yMDE3IDA4OjAxIFBNLCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6Cj4gPiAr c3RhdGljIGludCB4ZW5fOXBmc19mcm9udF9hbGxvY19kYXRhcmluZyhzdHJ1Y3QgeGVuYnVzX2Rl dmljZSAqZGV2LAo+ID4gKwkJc3RydWN0IHhlbl85cGZzX2RhdGFyaW5nICpyaW5nKQo+ID4gK3sK PiA+ICsJaW50IGk7Cj4gPiArCWludCByZXQgPSAtRU5PTUVNOwo+ID4gKwo+ID4gKwlpbml0X3dh aXRxdWV1ZV9oZWFkKCZyaW5nLT53cSk7Cj4gPiArCXNwaW5fbG9ja19pbml0KCZyaW5nLT5sb2Nr KTsKPiA+ICsJSU5JVF9XT1JLKCZyaW5nLT53b3JrLCBwOV94ZW5fcmVzcG9uc2UpOwo+ID4gKwo+ ID4gKwlyaW5nLT5pbnRmID0gKHN0cnVjdCB4ZW5fOXBmc19kYXRhX2ludGYgKikgX19nZXRfZnJl ZV9wYWdlKEdGUF9LRVJORUwKPiA+IHwgX19HRlBfWkVSTyk7Cj4gPiArCWlmICghcmluZy0+aW50 ZikKPiA+ICsJCWdvdG8gZXJyb3I7Cj4gPiArCW1lbXNldChyaW5nLT5pbnRmLCAwLCBYRU5fUEFH RV9TSVpFKTsKPiA+ICsJcmluZy0+Ynl0ZXMgPSAodm9pZCopX19nZXRfZnJlZV9wYWdlcyhHRlBf S0VSTkVMIHwgX19HRlBfWkVSTywKPiA+IFhFTl85UEZTX1JJTkdfT1JERVIpOwo+IAo+IFRoZSBy aW5nIG9yZGVyIHdpbGwgYmUgaW4gdGVybSBvZiBYZW4gcGFnZSBzaXplIGFuZCBub3QgTGludXgu IFNvIHlvdSBhcmUKPiBnb2luZyB0byBhbGxvY2F0ZSBtdWNoIG1vcmUgbWVtb3J5IHRoYW4gZXhw ZWN0ZWQgb24gNjRLQiBrZXJuZWwuCgpJJ2xsIGZpeC4KCgo+ID4gKwlpZiAocmluZy0+Ynl0ZXMg PT0gTlVMTCkKPiA+ICsJCWdvdG8gZXJyb3I7Cj4gPiArCWZvciAoaSA9IDA7IGkgPCAoMSA8PCBY RU5fOVBGU19SSU5HX09SREVSKTsgaSsrKQo+ID4gKwkJcmluZy0+aW50Zi0+cmVmW2ldID0KPiA+ IGdudHRhYl9ncmFudF9mb3JlaWduX2FjY2VzcyhkZXYtPm90aGVyZW5kX2lkLAo+ID4gcGZuX3Rv X2dmbih2aXJ0X3RvX3Bmbigodm9pZCopcmluZy0+Ynl0ZXMpICsgaSksIDApOy4KPiAKPiBQbGVh c2UgdXNlIHZpcnRfdG9fZ2ZuIHJhdGhlciB0aGFuIHBmbl90b19nZm4odmlydF90b19wZm4pLgoK T0sKCgo+IEFsc28sIHRoaXMgaXMgbm90IGdvaW5nIHRvIHdvcmsgb24gNjRLIGtlcm5lbCBiZWNh dXNlIHlvdSB3aWxsIGdyYW50IGFjY2VzcyB0bwo+IG5vbmNvbnRpZ3VvdXMgbWVtb3J5IChlLmcg MC00SywgNjRLLTY4SywuLi4pLgoKQnkgdXNpbmcgdmlydF90b19nZm4gbGlrZSB5b3Ugc3VnZ2Vz dGVkLCB0aGUgbG9vcCB3aWxsIGNvcnJlY3RseSBpdGVyYXRlCm9uIGEgNEsgYnkgNEsgYmFzaXMs IGV2ZW4gb24gYSA2NEsga2VybmVsOgoKICByaW5nLT5ieXRlcyA9ICh2b2lkKilfX2dldF9mcmVl X3BhZ2VzKEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPLAogICAgICAgICAgWEVOXzlQRlNfUklOR19P UkRFUiAtIChQQUdFX1NISUZUIC0gWEVOX1BBR0VfU0hJRlQpKTsKICBmb3IgKGkgPSAwOyBpIDwg KDEgPDwgWEVOXzlQRlNfUklOR19PUkRFUik7IGkrKykKICAgICAgcmluZy0+aW50Zi0+cmVmW2ld ID0gZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNjZXNzKGRldi0+b3RoZXJlbmRfaWQsIHZpcnRfdG9f Z2ZuKCh2b2lkKilyaW5nLT5ieXRlcykgKyBpLCAwKTsKCndoZXJlIFhFTl85UEZTX1JJTkdfT1JE RVIgc3BlY2lmaWVzIHRoZSBvcmRlciBhdCA0SyBncmFudWxhcml0eS4gQW0gSQptaXNzaW5nIHNv bWV0aGluZz8KCgo+IFdlIGhhdmUgdmFyaW91cyBoZWxwZXIgdG8gYnJlYWstZG93biB0aGUgcGFn ZSBmb3IgeW91LCBzZWUKPiBnbnR0YWJfZm9yX29uZV9ncmFudCwgZ250dGFiX2ZvcmVhY2hfZ3Jh bnQsIGdudHRhYl9jb3VudF9ncmFudCwKPiB4ZW5fZm9yX2VhY2hfZ2ZuICh0aG91Z2ggdGhpcyBv bmUgaXQgaXMgaW50ZXJuYWwgdG8geGxhdGVfbW11LmMgc28gZmFyKQo+IAo+IFBsZWFzZSB1c2Ug dGhlbSB0byBhdm9pZCBhbnkgZnVydGhlci4KPgo+ID4gKwlyaW5nLT5yZWYgPSBnbnR0YWJfZ3Jh bnRfZm9yZWlnbl9hY2Nlc3MoZGV2LT5vdGhlcmVuZF9pZCwKPiA+IHBmbl90b19nZm4odmlydF90 b19wZm4oKHZvaWQqKXJpbmctPmludGYpKSwgMCk7Cj4gCj4gUGxlYXNlIHVzZSB2aXJ0X3RvX2dm biByYXRoZXIgdGhhbiBwZm5fdG9fZ2ZuKHZpcnRfdG9fcGZuKS4KClN1cmUKCgo+ID4gKwlyaW5n LT5yaW5nLmluID0gcmluZy0+Ynl0ZXM7Cj4gPiArCXJpbmctPnJpbmcub3V0ID0gcmluZy0+Ynl0 ZXMgKyBYRU5fOVBGU19SSU5HX1NJWkU7Cj4gPiArCj4gPiArCXJldCA9IHhlbmJ1c19hbGxvY19l dnRjaG4oZGV2LCAmcmluZy0+ZXZ0Y2huKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJCWdvdG8gZXJy b3I7Cj4gPiArCXJpbmctPmlycSA9IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRsZXIocmluZy0+ZXZ0 Y2huLAo+ID4geGVuXzlwZnNfZnJvbnRfZXZlbnRfaGFuZGxlciwKPiA+ICsJCQkJCTAsICJ4ZW5f OXBmcy1mcm9udGVuZCIsIHJpbmcpOwo+ID4gKwlpZiAocmluZy0+aXJxIDwgMCkgewo+ID4gKwkJ eGVuYnVzX2ZyZWVfZXZ0Y2huKGRldiwgcmluZy0+ZXZ0Y2huKTsKPiA+ICsJCXJldCA9IHJpbmct PmlycTsKPiA+ICsJCWdvdG8gZXJyb3I7Cj4gPiArCX0KPiA+ICAJcmV0dXJuIDA7Cj4gPiArCj4g PiArZXJyb3I6Cj4gPiArCWlmIChyaW5nLT5pbnRmICE9IE5VTEwpCj4gPiArCQlrZnJlZShyaW5n LT5pbnRmKTsKPiA+ICsJaWYgKHJpbmctPmJ5dGVzICE9IE5VTEwpCj4gPiArCQlrZnJlZShyaW5n LT5ieXRlcyk7Cj4gPiArCXJldHVybiByZXQ7Cj4gPiAgfQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==