From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH 0/1] drm/xen-zcopy: Add Xen zero-copy helper DRM driver Date: Thu, 29 Mar 2018 16:19:30 +0300 Message-ID: <20180329131931.29957-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-x243.google.com (mail-lf0-x243.google.com [IPv6:2a00:1450:4010:c07::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9985289F6E for ; Thu, 29 Mar 2018 13:19:42 +0000 (UTC) Received: by mail-lf0-x243.google.com with SMTP id c78-v6so8409940lfh.1 for ; Thu, 29 Mar 2018 06:19:42 -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, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKSGVsbG8hCgpXaGVuIHVzaW5nIFhlbiBQViBEUk0gZnJvbnRlbmQgZHJpdmVyIHRo ZW4gb24gYmFja2VuZCBzaWRlIG9uZSB3aWxsIG5lZWQKdG8gZG8gY29weWluZyBvZiBkaXNwbGF5 IGJ1ZmZlcnMnIGNvbnRlbnRzIChmaWxsZWQgYnkgdGhlCmZyb250ZW5kJ3MgdXNlci1zcGFjZSkg aW50byBidWZmZXJzIGFsbG9jYXRlZCBhdCB0aGUgYmFja2VuZCBzaWRlLgpUYWtpbmcgaW50byBh Y2NvdW50IHRoZSBzaXplIG9mIGRpc3BsYXkgYnVmZmVycyBhbmQgZnJhbWVzIHBlciBzZWNvbmRz Cml0IG1heSByZXN1bHQgaW4gdW5uZWVkZWQgaHVnZSBkYXRhIGJ1cyBvY2N1cGF0aW9uIGFuZCBw ZXJmb3JtYW5jZSBsb3NzLgoKVGhpcyBoZWxwZXIgZHJpdmVyIGFsbG93cyBpbXBsZW1lbnRpbmcg emVyby1jb3B5aW5nIHVzZS1jYXNlcwp3aGVuIHVzaW5nIFhlbiBwYXJhLXZpcnR1YWxpemVkIGZy b250ZW5kIGRpc3BsYXkgZHJpdmVyIGJ5CmltcGxlbWVudGluZyBhIERSTS9LTVMgaGVscGVyIGRy aXZlciBydW5uaW5nIG9uIGJhY2tlbmQncyBzaWRlLgpJdCB1dGlsaXplcyBQUklNRSBidWZmZXJz IEFQSSB0byBzaGFyZSBmcm9udGVuZCdzIGJ1ZmZlcnMgd2l0aApwaHlzaWNhbCBkZXZpY2UgZHJp dmVycyBvbiBiYWNrZW5kJ3Mgc2lkZToKCiAtIGEgZHVtYiBidWZmZXIgY3JlYXRlZCBvbiBiYWNr ZW5kJ3Mgc2lkZSBjYW4gYmUgc2hhcmVkCiAgIHdpdGggdGhlIFhlbiBQViBmcm9udGVuZCBkcml2 ZXIsIHNvIGl0IGRpcmVjdGx5IHdyaXRlcwogICBpbnRvIGJhY2tlbmQncyBkb21haW4gbWVtb3J5 IChpbnRvIHRoZSBidWZmZXIgZXhwb3J0ZWQgZnJvbQogICBEUk0vS01TIGRyaXZlciBvZiBhIHBo eXNpY2FsIGRpc3BsYXkgZGV2aWNlKQogLSBhIGR1bWIgYnVmZmVyIGFsbG9jYXRlZCBieSB0aGUg ZnJvbnRlbmQgY2FuIGJlIGltcG9ydGVkCiAgIGludG8gcGh5c2ljYWwgZGV2aWNlIERSTS9LTVMg ZHJpdmVyLCB0aHVzIGFsbG93aW5nIHRvCiAgIGFjaGlldmUgbm8gY29weWluZyBhcyB3ZWxsCgpG b3IgdGhhdCByZWFzb24gbnVtYmVyIG9mIElPQ1RMcyBhcmUgaW50cm9kdWNlZDoKIC0gIERSTV9Y RU5fWkNPUFlfRFVNQl9GUk9NX1JFRlMKICAgIFRoaXMgd2lsbCBjcmVhdGUgYSBEUk0gZHVtYiBi dWZmZXIgZnJvbSBncmFudCByZWZlcmVuY2VzIHByb3ZpZGVkCiAgICBieSB0aGUgZnJvbnRlbmQK IC0gRFJNX1hFTl9aQ09QWV9EVU1CX1RPX1JFRlMKICAgVGhpcyB3aWxsIGdyYW50IHJlZmVyZW5j ZXMgdG8gYSBkdW1iL2Rpc3BsYXkgYnVmZmVyJ3MgbWVtb3J5IHByb3ZpZGVkCiAgIGJ5IHRoZSBi YWNrZW5kCiAtIERSTV9YRU5fWkNPUFlfRFVNQl9XQUlUX0ZSRUUKICAgVGhpcyB3aWxsIGJsb2Nr IHVudGlsIHRoZSBkdW1iIGJ1ZmZlciB3aXRoIHRoZSB3YWl0IGhhbmRsZSBwcm92aWRlZAogICBi ZSBmcmVlZAoKV2l0aCB0aGlzIGhlbHBlciBkcml2ZXIgSSB3YXMgYWJsZSB0byBkcm9wIENQVSB1 c2FnZSBmcm9tIDE3JSB0byAzJQpvbiBSZW5lc2FzIFItQ2FyIE0zIGJvYXJkLgoKVGhpcyB3YXMg dGVzdGVkIHdpdGggUmVuZXNhcycgV2F5bGFuZC1LTVMgYW5kIGJhY2tlbmQgcnVubmluZyBhcyBE Uk0gbWFzdGVyLgoKVGhhbmsgeW91LApPbGVrc2FuZHIKCk9sZWtzYW5kciBBbmRydXNoY2hlbmtv ICgxKToKICBkcm0veGVuLXpjb3B5OiBBZGQgWGVuIHplcm8tY29weSBoZWxwZXIgRFJNIGRyaXZl cgoKIERvY3VtZW50YXRpb24vZ3B1L2RyaXZlcnMucnN0ICAgICAgICAgICAgICAgfCAgIDEgKwog RG9jdW1lbnRhdGlvbi9ncHUveGVuLXpjb3B5LnJzdCAgICAgICAgICAgICB8ICAzMiArCiBkcml2 ZXJzL2dwdS9kcm0veGVuL0tjb25maWcgICAgICAgICAgICAgICAgIHwgIDI1ICsKIGRyaXZlcnMv Z3B1L2RybS94ZW4vTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDUgKwogZHJpdmVycy9ncHUv ZHJtL3hlbi94ZW5fZHJtX3pjb3B5LmMgICAgICAgICB8IDg4MCArKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1femNvcHlfYmFsbG9vbi5jIHwg MTU0ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1femNvcHlfYmFsbG9vbi5oIHwg IDM4ICsrCiBpbmNsdWRlL3VhcGkvZHJtL3hlbl96Y29weV9kcm0uaCAgICAgICAgICAgIHwgMTI5 ICsrKysKIDggZmlsZXMgY2hhbmdlZCwgMTI2NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUveGVuLXpjb3B5LnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV96Y29weS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX3pjb3B5X2JhbGxvb24uYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV96Y29weV9iYWxsb29uLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvZHJtL3hlbl96Y29weV9kcm0uaAoKLS0gCjIuMTYu MgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752663AbeC2NTo (ORCPT ); Thu, 29 Mar 2018 09:19:44 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:41545 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752387AbeC2NTm (ORCPT ); Thu, 29 Mar 2018 09:19:42 -0400 X-Google-Smtp-Source: AIpwx48IwnvISSU7UkmPz1HS0Wl/f2wnLBKkmqfmCR8JVj0GfizRU7vJPdMzXid7HaktPHEmHHWagg== From: Oleksandr Andrushchenko To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko Subject: [PATCH 0/1] drm/xen-zcopy: Add Xen zero-copy helper DRM driver Date: Thu, 29 Mar 2018 16:19:30 +0300 Message-Id: <20180329131931.29957-1-andr2000@gmail.com> X-Mailer: git-send-email 2.16.2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Oleksandr Andrushchenko Hello! 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 seconds it may result in unneeded huge data bus occupation and performance loss. This helper driver 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 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 For that reason number of IOCTLs are introduced: - DRM_XEN_ZCOPY_DUMB_FROM_REFS This will create a DRM dumb buffer from grant references provided by the frontend - DRM_XEN_ZCOPY_DUMB_TO_REFS This will grant references to a dumb/display buffer's memory provided by the backend - DRM_XEN_ZCOPY_DUMB_WAIT_FREE This will block until the dumb buffer with the wait handle provided be freed With this helper driver I was able to drop CPU usage from 17% to 3% on Renesas R-Car M3 board. This was tested with Renesas' Wayland-KMS and backend running as DRM master. Thank you, Oleksandr Oleksandr Andrushchenko (1): drm/xen-zcopy: Add Xen zero-copy helper DRM driver Documentation/gpu/drivers.rst | 1 + Documentation/gpu/xen-zcopy.rst | 32 + drivers/gpu/drm/xen/Kconfig | 25 + drivers/gpu/drm/xen/Makefile | 5 + drivers/gpu/drm/xen/xen_drm_zcopy.c | 880 ++++++++++++++++++++++++++++ drivers/gpu/drm/xen/xen_drm_zcopy_balloon.c | 154 +++++ drivers/gpu/drm/xen/xen_drm_zcopy_balloon.h | 38 ++ include/uapi/drm/xen_zcopy_drm.h | 129 ++++ 8 files changed, 1264 insertions(+) create mode 100644 Documentation/gpu/xen-zcopy.rst create mode 100644 drivers/gpu/drm/xen/xen_drm_zcopy.c create mode 100644 drivers/gpu/drm/xen/xen_drm_zcopy_balloon.c create mode 100644 drivers/gpu/drm/xen/xen_drm_zcopy_balloon.h create mode 100644 include/uapi/drm/xen_zcopy_drm.h -- 2.16.2