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