All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/1] drm/xen-zcopy: Add Xen zero-copy helper DRM driver
@ 2018-03-29 13:19 ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 131+ messages in thread
From: Oleksandr Andrushchenko @ 2018-03-29 13:19 UTC (permalink / raw)
  To: xen-devel, linux-kernel, dri-devel, airlied, daniel.vetter,
	seanpaul, gustavo, jgross, boris.ostrovsky, konrad.wilk
  Cc: andr2000, Oleksandr Andrushchenko

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

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

^ permalink raw reply	[flat|nested] 131+ messages in thread
* [PATCH 0/1] drm/xen-zcopy: Add Xen zero-copy helper DRM driver
@ 2018-03-29 13:19 Oleksandr Andrushchenko
  0 siblings, 0 replies; 131+ messages in thread
From: Oleksandr Andrushchenko @ 2018-03-29 13:19 UTC (permalink / raw)
  To: xen-devel, linux-kernel, dri-devel, airlied, daniel.vetter,
	seanpaul, gustavo, jgross, boris.ostrovsky, konrad.wilk
  Cc: andr2000, Oleksandr Andrushchenko

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

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


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 131+ messages in thread

end of thread, other threads:[~2018-04-30 18:44 UTC | newest]

Thread overview: 131+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-29 13:19 [PATCH 0/1] drm/xen-zcopy: Add Xen zero-copy helper DRM driver Oleksandr Andrushchenko
2018-03-29 13:19 ` Oleksandr Andrushchenko
2018-03-29 13:19 ` [PATCH 1/1] " Oleksandr Andrushchenko
2018-03-29 13:19 ` Oleksandr Andrushchenko
2018-03-29 13:19   ` Oleksandr Andrushchenko
2018-04-03  9:47   ` Daniel Vetter
2018-04-03  9:47   ` Daniel Vetter
2018-04-03  9:47     ` Daniel Vetter
2018-04-06 11:25     ` Oleksandr Andrushchenko
2018-04-06 11:25     ` Oleksandr Andrushchenko
2018-04-06 11:25       ` Oleksandr Andrushchenko
2018-04-09  8:27       ` Daniel Vetter
2018-04-09  8:27         ` Daniel Vetter
2018-04-09  8:27       ` Daniel Vetter
2018-04-16 14:33 ` [PATCH 0/1] " Oleksandr Andrushchenko
2018-04-16 19:29   ` Dongwon Kim
2018-04-16 19:29   ` Dongwon Kim
2018-04-16 19:29     ` Dongwon Kim
2018-04-17  7:59     ` Daniel Vetter
2018-04-17  7:59     ` Daniel Vetter
2018-04-17  7:59       ` Daniel Vetter
2018-04-17  8:19       ` Oleksandr Andrushchenko
2018-04-17  8:19       ` Oleksandr Andrushchenko
2018-04-17  8:19         ` Oleksandr Andrushchenko
2018-04-17 20:57       ` Dongwon Kim
2018-04-17 20:57       ` Dongwon Kim
2018-04-18  6:38         ` Oleksandr Andrushchenko
2018-04-18  7:35           ` Roger Pau Monné
2018-04-18  7:35           ` [Xen-devel] " Roger Pau Monné
2018-04-18  7:35             ` Roger Pau Monné
2018-04-18  8:01             ` Oleksandr Andrushchenko
2018-04-18  8:01             ` [Xen-devel] " Oleksandr Andrushchenko
2018-04-18  8:01               ` Oleksandr Andrushchenko
2018-04-18 10:10               ` Roger Pau Monné
2018-04-18 10:10               ` [Xen-devel] " Roger Pau Monné
2018-04-18 10:10                 ` Roger Pau Monné
2018-04-18 10:18                 ` Paul Durrant
2018-04-18 10:21                   ` Oleksandr Andrushchenko
2018-04-18 10:21                     ` Oleksandr Andrushchenko
2018-04-18 10:23                     ` Paul Durrant
2018-04-18 10:31                       ` Oleksandr Andrushchenko
2018-04-18 10:31                       ` Oleksandr Andrushchenko
2018-04-18 10:23                     ` Paul Durrant
2018-04-18 10:21                   ` Oleksandr Andrushchenko
2018-04-18 10:39                   ` [Xen-devel] " Oleksandr Andrushchenko
2018-04-18 10:39                     ` Oleksandr Andrushchenko
2018-04-18 10:55                     ` Roger Pau Monné
2018-04-18 10:55                     ` [Xen-devel] " Roger Pau Monné
2018-04-18 12:42                       ` Oleksandr Andrushchenko
2018-04-18 16:01                         ` Dongwon Kim
2018-04-18 16:01                           ` Dongwon Kim
2018-04-19  8:19                           ` Oleksandr Andrushchenko
2018-04-19  8:19                           ` [Xen-devel] " Oleksandr Andrushchenko
2018-04-19  8:19                             ` Oleksandr Andrushchenko
2018-04-18 16:01                         ` Dongwon Kim
2018-04-18 12:42                       ` Oleksandr Andrushchenko
2018-04-20  7:22                       ` Daniel Vetter
2018-04-20  7:22                       ` [Xen-devel] " Daniel Vetter
2018-04-20  7:22                         ` Daniel Vetter
2018-04-18 10:39                   ` Oleksandr Andrushchenko
2018-04-18 10:18                 ` Paul Durrant
2018-04-20  7:19                 ` [Xen-devel] " Daniel Vetter
2018-04-20 11:25                   ` Oleksandr Andrushchenko
2018-04-20 11:25                   ` [Xen-devel] " Oleksandr Andrushchenko
2018-04-20 11:25                     ` Oleksandr Andrushchenko
2018-04-23 11:52                     ` Wei Liu
2018-04-23 12:10                       ` Oleksandr Andrushchenko
2018-04-23 12:10                         ` Oleksandr Andrushchenko
2018-04-23 22:41                         ` Boris Ostrovsky
2018-04-23 22:41                         ` [Xen-devel] " Boris Ostrovsky
2018-04-24  5:43                           ` Oleksandr Andrushchenko
2018-04-24  5:43                           ` [Xen-devel] " Oleksandr Andrushchenko
2018-04-24  5:43                             ` Oleksandr Andrushchenko
2018-04-24  7:51                             ` Juergen Gross
2018-04-24  8:07                               ` Oleksandr Andrushchenko
2018-04-24  8:07                               ` [Xen-devel] " Oleksandr Andrushchenko
2018-04-24  8:07                                 ` Oleksandr Andrushchenko
2018-04-24  8:40                                 ` Juergen Gross
2018-04-24  9:03                                   ` Oleksandr Andrushchenko
2018-04-24  9:03                                     ` Oleksandr Andrushchenko
2018-04-24  9:08                                     ` Juergen Gross
2018-04-24  9:13                                       ` Oleksandr Andrushchenko
2018-04-24  9:13                                       ` Oleksandr Andrushchenko
2018-04-24 10:01                                       ` [Xen-devel] " Wei Liu
2018-04-24 10:14                                         ` Oleksandr Andrushchenko
2018-04-24 10:14                                         ` [Xen-devel] " Oleksandr Andrushchenko
2018-04-24 10:24                                           ` Juergen Gross
2018-04-24 10:24                                           ` [Xen-devel] " Juergen Gross
2018-04-24 10:01                                       ` Wei Liu
2018-04-24  9:08                                     ` Juergen Gross
2018-04-24  9:03                                   ` Oleksandr Andrushchenko
2018-04-24  8:40                                 ` Juergen Gross
2018-04-24  7:51                             ` Juergen Gross
2018-04-24 11:54                         ` Daniel Vetter
2018-04-24 11:54                         ` [Xen-devel] " Daniel Vetter
2018-04-24 11:54                           ` Daniel Vetter
2018-04-24 11:59                           ` Oleksandr Andrushchenko
2018-04-24 20:35                             ` Dongwon Kim
2018-04-24 20:35                             ` [Xen-devel] " Dongwon Kim
2018-04-24 20:35                               ` Dongwon Kim
2018-04-25  6:07                               ` Oleksandr Andrushchenko
2018-04-25  6:34                                 ` Daniel Vetter
2018-04-25  6:34                                 ` [Xen-devel] " Daniel Vetter
2018-04-25  6:34                                   ` Daniel Vetter
2018-04-25 17:16                                   ` Dongwon Kim
2018-04-25 17:16                                     ` Dongwon Kim
2018-04-27  6:54                                     ` Oleksandr Andrushchenko
2018-04-27  6:54                                     ` [Xen-devel] " Oleksandr Andrushchenko
2018-04-27  6:54                                       ` Oleksandr Andrushchenko
2018-04-25 17:16                                   ` Dongwon Kim
2018-04-25  6:07                               ` Oleksandr Andrushchenko
2018-04-25  6:12                               ` [Xen-devel] " Juergen Gross
2018-04-30 18:43                                 ` Dongwon Kim
2018-04-30 18:43                                 ` Dongwon Kim
2018-04-25  6:12                               ` Juergen Gross
2018-04-24 11:59                           ` Oleksandr Andrushchenko
2018-04-23 12:10                       ` Oleksandr Andrushchenko
2018-04-23 11:52                     ` Wei Liu
2018-04-20  7:19                 ` Daniel Vetter
2018-04-18 17:01           ` Dongwon Kim
2018-04-18 17:01           ` Dongwon Kim
2018-04-18 17:01             ` Dongwon Kim
2018-04-19  8:14             ` Oleksandr Andrushchenko
2018-04-19  8:14             ` Oleksandr Andrushchenko
2018-04-19  8:14               ` Oleksandr Andrushchenko
2018-04-19 17:55               ` Dongwon Kim
2018-04-19 17:55               ` Dongwon Kim
2018-04-19 17:55                 ` Dongwon Kim
2018-04-18  6:38         ` Oleksandr Andrushchenko
2018-04-16 14:33 ` Oleksandr Andrushchenko
  -- strict thread matches above, loose matches on Subject: below --
2018-03-29 13:19 Oleksandr Andrushchenko

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.