[RFC][PATCH 0/8] Support I/O memory in generic fbdev emulation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



We recently had a discussion if/how fbdev emulation could support
framebuffers in I/O memory on all platform. [1]

I typed up a patchset that passes information about the memory area
from memory manager to client (e.g., fbdev emulation). The client can
take this into consideration when accessing the framebuffer.

The alternative proposal is to introduce a separate vmap() call that
only returns I/O memorym or NULL if the framebuffer is not in I/O
memory. AFAICS the benefit of this idea is the cleaner interface and
the ability to modify drivers one by one. The drawback is some additional
boilerplate code in drivers and clients.

[1] https://lists.freedesktop.org/archives/dri-devel/2019-November/242464.html

Thomas Zimmermann (8):
  drm/vram-helper: Tell caller if vmap() returned I/O memory
  drm/qxl: Tell caller if kmap() returned I/O memory
  drm: Add is_iomem return parameter to struct drm_gem_object_funcs.vmap
  drm/gem: Return I/O-memory flag from drm_gem_vram()
  drm/client: Return I/O memory flag from drm_client_buffer_vmap()
  fbdev: Export default read and write operations as
    fb_cfb_{read,write}()
  drm/fb-helper: Select between fb_{sys,cfb}_read() and _write()
  drm/fb-helper: Handle I/O memory correctly when flushing shadow fb

 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c |   6 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h |   2 +-
 drivers/gpu/drm/ast/ast_mode.c              |   6 +-
 drivers/gpu/drm/cirrus/cirrus.c             |   2 +-
 drivers/gpu/drm/drm_client.c                |  15 ++-
 drivers/gpu/drm/drm_fb_helper.c             | 118 ++++++++++++++++++--
 drivers/gpu/drm/drm_gem.c                   |   9 +-
 drivers/gpu/drm/drm_gem_cma_helper.c        |   7 +-
 drivers/gpu/drm/drm_gem_shmem_helper.c      |  12 +-
 drivers/gpu/drm/drm_gem_vram_helper.c       |  13 ++-
 drivers/gpu/drm/drm_internal.h              |   2 +-
 drivers/gpu/drm/drm_prime.c                 |   2 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.h       |   2 +-
 drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c |   4 +-
 drivers/gpu/drm/mgag200/mgag200_cursor.c    |   4 +-
 drivers/gpu/drm/nouveau/nouveau_gem.h       |   2 +-
 drivers/gpu/drm/nouveau/nouveau_prime.c     |   4 +-
 drivers/gpu/drm/panfrost/panfrost_perfcnt.c |   2 +-
 drivers/gpu/drm/qxl/qxl_display.c           |   6 +-
 drivers/gpu/drm/qxl/qxl_draw.c              |   4 +-
 drivers/gpu/drm/qxl/qxl_drv.h               |   4 +-
 drivers/gpu/drm/qxl/qxl_object.c            |   7 +-
 drivers/gpu/drm/qxl/qxl_object.h            |   2 +-
 drivers/gpu/drm/qxl/qxl_prime.c             |   4 +-
 drivers/gpu/drm/radeon/radeon_drv.c         |   2 +-
 drivers/gpu/drm/radeon/radeon_prime.c       |   4 +-
 drivers/gpu/drm/tiny/gm12u320.c             |   2 +-
 drivers/gpu/drm/vc4/vc4_bo.c                |   4 +-
 drivers/gpu/drm/vc4/vc4_drv.h               |   2 +-
 drivers/gpu/drm/vgem/vgem_drv.c             |   5 +-
 drivers/gpu/drm/xen/xen_drm_front_gem.c     |   6 +-
 drivers/gpu/drm/xen/xen_drm_front_gem.h     |   3 +-
 drivers/video/fbdev/core/fbmem.c            |  53 +++++++--
 include/drm/drm_client.h                    |   7 +-
 include/drm/drm_drv.h                       |   2 +-
 include/drm/drm_fb_helper.h                 |  14 +++
 include/drm/drm_gem.h                       |   2 +-
 include/drm/drm_gem_cma_helper.h            |   2 +-
 include/drm/drm_gem_shmem_helper.h          |   2 +-
 include/drm/drm_gem_vram_helper.h           |   2 +-
 include/linux/fb.h                          |   5 +
 41 files changed, 278 insertions(+), 78 deletions(-)

-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux