drm/fb-helper: Mark screen buffers in system memory with FB_VIRTFB
Subsystems (3)
Thomas Zimmermann
maintainerPATCH v2 1/1 drm/fb-helper: Mark screen buffers in system memory with FB_VIRTFB
Mark screen buffers in system memory with FB_VIRTFB. Otherwise, fbdev deferred I/O marks mmap'ed areas of system memory with VM_IO. (There's an inverse relation ship between the two flags.)
For shadow buffers, also set the FB_READS_FAST hint.
v2:
* updated commit description (Daniel)
* added Fixes tag
Signed-off-by Thomas Zimmermann <[email protected]>
Fixes d536540f304c ("drm/fb-helper: Add generic fbdev emulation .fb_probe function")
Reviewed-by Daniel Vetter <[email protected]>
Cc <[email protected]> # v4.19+
--- drivers/gpu/drm/drm_fb_helper.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/gpu/drm/drm_fb_helper.c +6 -3
@@ -2346,6 +2346,7 @@ static int drm_fb_helper_generic_probe(struct drm_fb_helper *fb_helper, fbi->fbops = &drm_fbdev_fb_ops; fbi->screen_size = sizes->surface_height * fb->pitches[0 ]; fbi->fix.smem_len = fbi->screen_size; + fbi->flags =FBINFO_DEFAULT ;drm_fb_helper_fill_info (fbi, fb_helper, sizes);
@@ -2353,19 +2354,21 @@ static int drm_fb_helper_generic_probe(struct drm_fb_helper *fb_helper, fbi->screen_buffer =vzalloc (fbi->screen_size);if (!fbi->screen_buffer)return -ENOMEM ; + fbi->flags |=FBINFO_VIRTFB |FBINFO_READS_FAST ; fbi->fbdefio = &drm_fbdev_defio; -fb_deferred_io_init (fbi); }else {/* buffer is mapped for HW framebuffer */ ret =drm_client_buffer_vmap (fb_helper->buffer, &map);if (ret)return ret; -if (map.is_iomem) +if (map.is_iomem) { fbi->screen_base = map.vaddr_iomem; -else + }else { fbi->screen_buffer = map.vaddr; + fbi->flags |=FBINFO_VIRTFB ; + }/* * Shamelessly leak the physical address to user-space. As
Signature · 1 line
2.34.1