<div dir="ltr">Thanks for the updates! I was comparing between your code and and evdi code (eventually meant for usb displaylink), and it looks pretty similar in concept.  They have some hard-coding around kernel versions for specific drm interfaces, and I can't find enough documentation to figure out if any differences matter, but thought I would pass it on to see if it is of any help: <a href="https://github.com/DisplayLink/evdi">https://github.com/DisplayLink/evdi</a></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 15, 2017 at 12:30 PM, Noralf Trønnes <span dir="ltr"><<a href="mailto:noralf@tronnes.org" target="_blank">noralf@tronnes.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This patchset adds a library for vmalloc buffer objects and makes use of<br>
it in tinydrm.<br>
<br>
The reason I want to move away from the cma helper, is that it restricts<br>
which drivers to PRIME import from, since cma requires the buffer to be<br>
physically continuous. Initially I looked at udl and decided to use<br>
shmem, but have later decided against it since shmem doesn't work with<br>
fbdev deferred I/O, they both use page->lru and page->mapping. This<br>
meant adding a shadow buffer for fbdev with increased complexity, so I<br>
fell back to the KISS principle.<br>
<br>
I'm trying to make tinydrm support drivers like simpledrm and udl, so if<br>
using vmalloc blocks those use cases, please let me know.<br>
<br>
I will do a follow up for the cma library which removes struct<br>
drm_fbdev_cma and wrappers.<br>
<br>
Noralf.<br>
<br>
Changes since version 1:<br>
- tinydrm: Remove dma_coerce_mask_and_coherent() calls (Matt Gattis)<br>
<br>
Noralf Trønnes (8):<br>
  drm/fb-helper: Handle function NULL argument<br>
  drm: Add drm_device->fbdev pointer<br>
  drm/fb-helper: Add simple init/fini functions<br>
  drm/fb-helper: Add .last_close and .output_poll_changed helpers<br>
  drm/gem-fb-helper: Add drm_gem_fb_debugfs_show()<br>
  drm: Add vmalloc BO helper<br>
  drm/tinydrm: Use drm_vmalloc_bo<br>
  drm/tinydrm: Relax buffer line prefetch<br>
<br>
 Documentation/gpu/drm-kms-<wbr>helpers.rst          |  12 +<br>
 drivers/gpu/drm/Kconfig                        |   7 +<br>
 drivers/gpu/drm/Makefile                       |   1 +<br>
 drivers/gpu/drm/drm_fb_helper.<wbr>c                | 223 +++++++++++++++++-<br>
 drivers/gpu/drm/drm_gem_<wbr>framebuffer_helper.c   |  45 ++++<br>
 drivers/gpu/drm/drm_vmalloc_<wbr>bo_helper.c        | 305 +++++++++++++++++++++++++<br>
 drivers/gpu/drm/tinydrm/<wbr>Kconfig                |   2 +-<br>
 drivers/gpu/drm/tinydrm/core/<wbr>tinydrm-core.c    | 134 +++--------<br>
 drivers/gpu/drm/tinydrm/core/<wbr>tinydrm-helpers.c |  56 +++--<br>
 drivers/gpu/drm/tinydrm/<wbr>mi0283qt.c             |   8 +-<br>
 drivers/gpu/drm/tinydrm/mipi-<wbr>dbi.c             |  31 +--<br>
 drivers/gpu/drm/tinydrm/<wbr>repaper.c              |  21 +-<br>
 drivers/gpu/drm/tinydrm/<wbr>st7586.c               |  14 +-<br>
 include/drm/drm_device.h                       |   8 +<br>
 include/drm/drm_fb_helper.h                    |  32 +++<br>
 include/drm/drm_gem_<wbr>framebuffer_helper.h       |   6 +<br>
 include/drm/drm_vmalloc_bo_<wbr>helper.h            |  88 +++++++<br>
 include/drm/tinydrm/mipi-dbi.h                 |   2 +<br>
 include/drm/tinydrm/tinydrm.h                  |  38 +--<br>
 19 files changed, 811 insertions(+), 222 deletions(-)<br>
 create mode 100644 drivers/gpu/drm/drm_vmalloc_<wbr>bo_helper.c<br>
 create mode 100644 include/drm/drm_vmalloc_bo_<wbr>helper.h<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
2.14.2<br>
<br>
</font></span></blockquote></div><br></div>