From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752479AbeEQI0W (ORCPT ); Thu, 17 May 2018 04:26:22 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:36381 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752173AbeEQI0O (ORCPT ); Thu, 17 May 2018 04:26:14 -0400 X-Google-Smtp-Source: AB8JxZrQA+YhoqOCcNmlSYCRz4n77g+HsYXEXK1h47lUe/R7ha2MXJXGbWao7/L2MRWsavJWGyEowQ== From: Oleksandr Andrushchenko 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, andr2000@gmail.com, dongwon.kim@intel.com, matthew.d.roper@intel.com, Oleksandr Andrushchenko Subject: [Xen-devel][RFC 0/3] dma-buf support for gntdev Date: Thu, 17 May 2018 11:26:01 +0300 Message-Id: <20180517082604.14828-1-andr2000@gmail.com> X-Mailer: git-send-email 2.17.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Oleksandr Andrushchenko This work is in response to my previous attempt to introduce Xen/DRM zero-copy driver [1] to enable Linux dma-buf API [2] for Xen based frontends/backends. There is also an existing hyper_dmabuf approach available [3] which, if reworked to utilize the proposed solution, can greatly benefit as well. The original rationale behind this work was to enable zero-copying use-cases while working with Xen para-virtual display driver [4]: when using Xen PV DRM frontend driver then on backend side one will need to do copying of display buffers' contents (filled by the frontend's user-space) into buffers allocated at the backend side. Taking into account the size of display buffers and frames per second it may result in unneeded huge data bus occupation and performance loss. The helper driver [4] allows implementing zero-copying use-cases when using Xen para-virtualized frontend display driver by implementing a DRM/KMS helper driver running on backend's side. It utilizes PRIME buffers API (implemented on top of Linux dma-buf) to share frontend's buffers with physical device drivers on backend's side: - a dumb buffer created on backend's side can be shared with the Xen PV frontend driver, so it directly writes into backend's domain memory (into the buffer exported from DRM/KMS driver of a physical display device) - a dumb buffer allocated by the frontend can be imported into physical device DRM/KMS driver, thus allowing to achieve no copying as well Finally, it was discussed and decided ([1], [5]) that it is worth implementing such use-cases via extension of the existing Xen gntdev driver instead of introducing new DRM specific driver. Please note, that the support of dma-buf is Linux only, as dma-buf is a Linux only thing. Now to the proposed solution. The changes to the existing Xen drivers in the Linux kernel fall into 2 categories: 1. DMA-able memory buffer allocation and ballooning in/out the pages of such a buffer. This is required if we are about to share dma-buf with the hardware that does require those to be allocated with dma_alloc_xxx API. (It is still possible to allocate a dma-buf from any other memory, e.g. system pages). 2. Extension of the gntdev driver to enable it to import/export dma-buf’s. The first two patches in this series solve #1 and the last one is for #2. The corresponding libxengnttab changes are available at [6]. All the above was tested with display backend [7] and its accompanying helper library [8] on Renesas ARM64 based board. *To all the communities*: I would like to ask you to review the proposed solution and give feedback on it, so I can improve and send final patches for review (this is still work in progress, but enough to start discussing the implementation). Thank you in advance, Oleksandr Andrushchenko [1] https://lists.freedesktop.org/archives/dri-devel/2018-April/173163.html [2] https://elixir.bootlin.com/linux/v4.17-rc5/source/Documentation/driver-api/dma-buf.rst [3] https://lists.xenproject.org/archives/html/xen-devel/2018-02/msg01202.html [4] https://cgit.freedesktop.org/drm/drm-misc/tree/drivers/gpu/drm/xen [5] https://patchwork.kernel.org/patch/10279681/ [6] https://github.com/andr2000/xen/tree/xen_dma_buf_v1 [7] https://github.com/andr2000/displ_be/tree/xen_dma_buf_v1 [8] https://github.com/andr2000/libxenbe/tree/xen_dma_buf_v1 Oleksandr Andrushchenko (3): xen/balloon: Allow allocating DMA buffers xen/grant-table: Extend API to work with DMA buffers xen/gntdev: Add support for Linux dma buffers drivers/xen/balloon.c | 214 +++++++-- drivers/xen/gntdev.c | 954 +++++++++++++++++++++++++++++++++++++- drivers/xen/grant-table.c | 49 ++ drivers/xen/xen-balloon.c | 2 + include/uapi/xen/gntdev.h | 101 ++++ include/xen/balloon.h | 11 +- include/xen/gntdev_exp.h | 23 + include/xen/grant_table.h | 7 + 8 files changed, 1310 insertions(+), 51 deletions(-) create mode 100644 include/xen/gntdev_exp.h -- 2.17.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [Xen-devel][RFC 0/3] dma-buf support for gntdev Date: Thu, 17 May 2018 11:26:01 +0300 Message-ID: <20180517082604.14828-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C98E6E6D0 for ; Thu, 17 May 2018 08:26:14 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id h9-v6so7481865lfi.0 for ; Thu, 17 May 2018 01:26:13 -0700 (PDT) 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: andr2000@gmail.com, daniel.vetter@intel.com, dongwon.kim@intel.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyB3b3JrIGlzIGluIHJlc3BvbnNlIHRvIG15IHByZXZpb3VzIGF0dGVtcHQg dG8gaW50cm9kdWNlIFhlbi9EUk0KemVyby1jb3B5IGRyaXZlciBbMV0gdG8gZW5hYmxlIExpbnV4 IGRtYS1idWYgQVBJIFsyXSBmb3IgWGVuIGJhc2VkCmZyb250ZW5kcy9iYWNrZW5kcy4gVGhlcmUg aXMgYWxzbyBhbiBleGlzdGluZyBoeXBlcl9kbWFidWYgYXBwcm9hY2gKYXZhaWxhYmxlIFszXSB3 aGljaCwgaWYgcmV3b3JrZWQgdG8gdXRpbGl6ZSB0aGUgcHJvcG9zZWQgc29sdXRpb24sCmNhbiBn cmVhdGx5IGJlbmVmaXQgYXMgd2VsbC4KClRoZSBvcmlnaW5hbCByYXRpb25hbGUgYmVoaW5kIHRo aXMgd29yayB3YXMgdG8gZW5hYmxlIHplcm8tY29weWluZwp1c2UtY2FzZXMgd2hpbGUgd29ya2lu ZyB3aXRoIFhlbiBwYXJhLXZpcnR1YWwgZGlzcGxheSBkcml2ZXIgWzRdOgp3aGVuIHVzaW5nIFhl biBQViBEUk0gZnJvbnRlbmQgZHJpdmVyIHRoZW4gb24gYmFja2VuZCBzaWRlIG9uZSB3aWxsCm5l ZWQgdG8gZG8gY29weWluZyBvZiBkaXNwbGF5IGJ1ZmZlcnMnIGNvbnRlbnRzIChmaWxsZWQgYnkg dGhlCmZyb250ZW5kJ3MgdXNlci1zcGFjZSkgaW50byBidWZmZXJzIGFsbG9jYXRlZCBhdCB0aGUg YmFja2VuZCBzaWRlLgpUYWtpbmcgaW50byBhY2NvdW50IHRoZSBzaXplIG9mIGRpc3BsYXkgYnVm ZmVycyBhbmQgZnJhbWVzIHBlcgpzZWNvbmQgaXQgbWF5IHJlc3VsdCBpbiB1bm5lZWRlZCBodWdl IGRhdGEgYnVzIG9jY3VwYXRpb24gYW5kCnBlcmZvcm1hbmNlIGxvc3MuCgpUaGUgaGVscGVyIGRy aXZlciBbNF0gYWxsb3dzIGltcGxlbWVudGluZyB6ZXJvLWNvcHlpbmcgdXNlLWNhc2VzCndoZW4g dXNpbmcgWGVuIHBhcmEtdmlydHVhbGl6ZWQgZnJvbnRlbmQgZGlzcGxheSBkcml2ZXIgYnkgaW1w bGVtZW50aW5nCmEgRFJNL0tNUyBoZWxwZXIgZHJpdmVyIHJ1bm5pbmcgb24gYmFja2VuZCdzIHNp ZGUuCkl0IHV0aWxpemVzIFBSSU1FIGJ1ZmZlcnMgQVBJIChpbXBsZW1lbnRlZCBvbiB0b3Agb2Yg TGludXggZG1hLWJ1ZikKdG8gc2hhcmUgZnJvbnRlbmQncyBidWZmZXJzIHdpdGggcGh5c2ljYWwg ZGV2aWNlIGRyaXZlcnMgb24KYmFja2VuZCdzIHNpZGU6CgogLSBhIGR1bWIgYnVmZmVyIGNyZWF0 ZWQgb24gYmFja2VuZCdzIHNpZGUgY2FuIGJlIHNoYXJlZAogICB3aXRoIHRoZSBYZW4gUFYgZnJv bnRlbmQgZHJpdmVyLCBzbyBpdCBkaXJlY3RseSB3cml0ZXMKICAgaW50byBiYWNrZW5kJ3MgZG9t YWluIG1lbW9yeSAoaW50byB0aGUgYnVmZmVyIGV4cG9ydGVkIGZyb20KICAgRFJNL0tNUyBkcml2 ZXIgb2YgYSBwaHlzaWNhbCBkaXNwbGF5IGRldmljZSkKIC0gYSBkdW1iIGJ1ZmZlciBhbGxvY2F0 ZWQgYnkgdGhlIGZyb250ZW5kIGNhbiBiZSBpbXBvcnRlZAogICBpbnRvIHBoeXNpY2FsIGRldmlj ZSBEUk0vS01TIGRyaXZlciwgdGh1cyBhbGxvd2luZyB0bwogICBhY2hpZXZlIG5vIGNvcHlpbmcg YXMgd2VsbAoKRmluYWxseSwgaXQgd2FzIGRpc2N1c3NlZCBhbmQgZGVjaWRlZCAoWzFdLCBbNV0p IHRoYXQgaXQgaXMgd29ydGgKaW1wbGVtZW50aW5nIHN1Y2ggdXNlLWNhc2VzIHZpYSBleHRlbnNp b24gb2YgdGhlIGV4aXN0aW5nIFhlbiBnbnRkZXYKZHJpdmVyIGluc3RlYWQgb2YgaW50cm9kdWNp bmcgbmV3IERSTSBzcGVjaWZpYyBkcml2ZXIuClBsZWFzZSBub3RlLCB0aGF0IHRoZSBzdXBwb3J0 IG9mIGRtYS1idWYgaXMgTGludXggb25seSwKYXMgZG1hLWJ1ZiBpcyBhIExpbnV4IG9ubHkgdGhp bmcuCgpOb3cgdG8gdGhlIHByb3Bvc2VkIHNvbHV0aW9uLiBUaGUgY2hhbmdlcyAgdG8gdGhlIGV4 aXN0aW5nIFhlbiBkcml2ZXJzCmluIHRoZSBMaW51eCBrZXJuZWwgZmFsbCBpbnRvIDIgY2F0ZWdv cmllczoKMS4gRE1BLWFibGUgbWVtb3J5IGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBiYWxsb29uaW5n IGluL291dCB0aGUgcGFnZXMKICAgb2Ygc3VjaCBhIGJ1ZmZlci4KICAgVGhpcyBpcyByZXF1aXJl ZCBpZiB3ZSBhcmUgYWJvdXQgdG8gc2hhcmUgZG1hLWJ1ZiB3aXRoIHRoZSBoYXJkd2FyZQogICB0 aGF0IGRvZXMgcmVxdWlyZSB0aG9zZSB0byBiZSBhbGxvY2F0ZWQgd2l0aCBkbWFfYWxsb2NfeHh4 IEFQSS4KICAgKEl0IGlzIHN0aWxsIHBvc3NpYmxlIHRvIGFsbG9jYXRlIGEgZG1hLWJ1ZiBmcm9t IGFueSBvdGhlciBtZW1vcnksCiAgIGUuZy4gc3lzdGVtIHBhZ2VzKS4KMi4gRXh0ZW5zaW9uIG9m IHRoZSBnbnRkZXYgZHJpdmVyIHRvIGVuYWJsZSBpdCB0byBpbXBvcnQvZXhwb3J0IGRtYS1idWbi gJlzLgoKVGhlIGZpcnN0IHR3byBwYXRjaGVzIGluIHRoaXMgc2VyaWVzIHNvbHZlICMxIGFuZCB0 aGUgbGFzdCBvbmUgaXMgZm9yICMyLgpUaGUgY29ycmVzcG9uZGluZyBsaWJ4ZW5nbnR0YWIgY2hh bmdlcyBhcmUgYXZhaWxhYmxlIGF0IFs2XS4KCkFsbCB0aGUgYWJvdmUgd2FzIHRlc3RlZCB3aXRo IGRpc3BsYXkgYmFja2VuZCBbN10gYW5kIGl0cyBhY2NvbXBhbnlpbmcKaGVscGVyIGxpYnJhcnkg WzhdIG9uIFJlbmVzYXMgQVJNNjQgYmFzZWQgYm9hcmQuCgoKKlRvIGFsbCB0aGUgY29tbXVuaXRp ZXMqOiBJIHdvdWxkIGxpa2UgdG8gYXNrIHlvdSB0byByZXZpZXcgdGhlIHByb3Bvc2VkCnNvbHV0 aW9uIGFuZCBnaXZlIGZlZWRiYWNrIG9uIGl0LCBzbyBJIGNhbiBpbXByb3ZlIGFuZCBzZW5kIGZp bmFsCnBhdGNoZXMgZm9yIHJldmlldyAodGhpcyBpcyBzdGlsbCB3b3JrIGluIHByb2dyZXNzLCBi dXQgZW5vdWdoIHRvIHN0YXJ0CmRpc2N1c3NpbmcgdGhlIGltcGxlbWVudGF0aW9uKS4KCgpUaGFu ayB5b3UgaW4gYWR2YW5jZSwKT2xla3NhbmRyIEFuZHJ1c2hjaGVua28KClsxXSBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwvMjAxOC1BcHJpbC8xNzMxNjMu aHRtbApbMl0gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjQuMTctcmM1L3NvdXJj ZS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZG1hLWJ1Zi5yc3QKWzNdIGh0dHBzOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxOC0wMi9tc2cwMTIwMi5o dG1sCls0XSBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYy90cmVlL2Ry aXZlcnMvZ3B1L2RybS94ZW4KWzVdIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gv MTAyNzk2ODEvCls2XSBodHRwczovL2dpdGh1Yi5jb20vYW5kcjIwMDAveGVuL3RyZWUveGVuX2Rt YV9idWZfdjEKWzddIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRyMjAwMC9kaXNwbF9iZS90cmVlL3hl bl9kbWFfYnVmX3YxCls4XSBodHRwczovL2dpdGh1Yi5jb20vYW5kcjIwMDAvbGlieGVuYmUvdHJl ZS94ZW5fZG1hX2J1Zl92MQoKT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gKDMpOgogIHhlbi9iYWxs b29uOiBBbGxvdyBhbGxvY2F0aW5nIERNQSBidWZmZXJzCiAgeGVuL2dyYW50LXRhYmxlOiBFeHRl bmQgQVBJIHRvIHdvcmsgd2l0aCBETUEgYnVmZmVycwogIHhlbi9nbnRkZXY6IEFkZCBzdXBwb3J0 IGZvciBMaW51eCBkbWEgYnVmZmVycwoKIGRyaXZlcnMveGVuL2JhbGxvb24uYyAgICAgfCAyMTQg KysrKysrKy0tCiBkcml2ZXJzL3hlbi9nbnRkZXYuYyAgICAgIHwgOTU0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL3hlbi9ncmFudC10YWJsZS5jIHwgIDQ5 ICsrCiBkcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jIHwgICAyICsKIGluY2x1ZGUvdWFwaS94ZW4v Z250ZGV2LmggfCAxMDEgKysrKwogaW5jbHVkZS94ZW4vYmFsbG9vbi5oICAgICB8ICAxMSArLQog aW5jbHVkZS94ZW4vZ250ZGV2X2V4cC5oICB8ICAyMyArCiBpbmNsdWRlL3hlbi9ncmFudF90YWJs ZS5oIHwgICA3ICsKIDggZmlsZXMgY2hhbmdlZCwgMTMxMCBpbnNlcnRpb25zKCspLCA1MSBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9nbnRkZXZfZXhwLmgKCi0t IAoyLjE3LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=