path: root/Documentation/gpu
diff options
authorThomas Zimmermann <>2020-11-03 10:30:15 +0100
committerThomas Zimmermann <>2020-11-09 09:20:00 +0100
commit222ec45f4c69dfa8cd02c72928147ac06dffffa2 (patch)
tree8d308eeaecb657f1924c06503d55591f8f0ffc4e /Documentation/gpu
parentb4e7090c242ec64bfa77a69ea7c3cceba21c7a65 (diff)
drm/fb_helper: Support framebuffers in I/O memory
At least sparc64 requires I/O-specific access to framebuffers. This patch updates the fbdev console accordingly. For drivers with direct access to the framebuffer memory, the callback functions in struct fb_ops test for the type of memory and call the rsp fb_sys_ of fb_cfb_ functions. Read and write operations are implemented internally by DRM's fbdev helper. For drivers that employ a shadow buffer, fbdev's blit function retrieves the framebuffer address as struct dma_buf_map, and uses dma_buf_map interfaces to access the buffer. The bochs driver on sparc64 uses a workaround to flag the framebuffer as I/O memory and avoid a HW exception. With the introduction of struct dma_buf_map, this is not required any longer. The patch removes the rsp code from both, bochs and fbdev. v7: * use min_t(size_t,) (kernel test robot) * return the number of bytes read/written, if any (fbdev testcase) v5: * implement fb_read/fb_write internally (Daniel, Sam) v4: * move dma_buf_map changes into separate patch (Daniel) * TODO list: comment on fbdev updates (Daniel) Signed-off-by: Thomas Zimmermann <> Reviewed-by: Daniel Vetter <> Reviewed-by: Sam Ravnborg <> Tested-by: Sam Ravnborg <> Link:
Diffstat (limited to 'Documentation/gpu')
1 files changed, 17 insertions, 2 deletions
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
index 59f63f1d7680..acca232b025b 100644
--- a/Documentation/gpu/todo.rst
+++ b/Documentation/gpu/todo.rst
@@ -201,13 +201,28 @@ Convert drivers to use drm_fbdev_generic_setup()
Most drivers can use drm_fbdev_generic_setup(). Driver have to implement
-atomic modesetting and GEM vmap support. Current generic fbdev emulation
-expects the framebuffer in system memory (or system-like memory).
+atomic modesetting and GEM vmap support. Historically, generic fbdev emulation
+expected the framebuffer in system memory or system-like memory. By employing
+struct dma_buf_map, drivers with frambuffers in I/O memory can be supported
+as well.
Contact: Maintainer of the driver you plan to convert
Level: Intermediate
+Reimplement functions in drm_fbdev_fb_ops without fbdev
+A number of callback functions in drm_fbdev_fb_ops could benefit from
+being rewritten without dependencies on the fbdev module. Some of the
+helpers could further benefit from using struct dma_buf_map instead of
+raw pointers.
+Contact: Thomas Zimmermann <>, Daniel Vetter
+Level: Advanced
drm_framebuffer_funcs and drm_mode_config_funcs.fb_create cleanup