Thomas Zimmermann 1a3a04
From cd9f7f7ac5932129fe81b4c7559cfcb226ec7c5c Mon Sep 17 00:00:00 2001
Thomas Zimmermann 1a3a04
From: Thomas Zimmermann <tzimmermann@suse.de>
Thomas Zimmermann 1a3a04
Date: Tue, 1 Feb 2022 12:53:05 +0100
Thomas Zimmermann 1a3a04
Subject: drm/fb-helper: Mark screen buffers in system memory with
Thomas Zimmermann 1a3a04
 FBINFO_VIRTFB
Thomas Zimmermann 1a3a04
Git-commit: cd9f7f7ac5932129fe81b4c7559cfcb226ec7c5c
Thomas Zimmermann 1a3a04
Patch-mainline: v5.18-rc1
Thomas Zimmermann 1a3a04
References: bsc#1129770
Thomas Zimmermann 1a3a04
Thomas Zimmermann 1a3a04
Mark screen buffers in system memory with FBINFO_VIRTFB. Otherwise, fbdev
Thomas Zimmermann 1a3a04
deferred I/O marks mmap'ed areas of system memory with VM_IO. (There's an
Thomas Zimmermann 1a3a04
inverse relationship between the two flags.)
Thomas Zimmermann 1a3a04
Thomas Zimmermann 1a3a04
For shadow buffers, also set the FBINFO_READS_FAST hint.
Thomas Zimmermann 1a3a04
Thomas Zimmermann 1a3a04
v3:
Thomas Zimmermann 1a3a04
	* change FB_ to FBINFO_ in commit description
Thomas Zimmermann 1a3a04
v2:
Thomas Zimmermann 1a3a04
	* updated commit description (Daniel)
Thomas Zimmermann 1a3a04
	* added Fixes tag
Thomas Zimmermann 1a3a04
Thomas Zimmermann 1a3a04
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Thomas Zimmermann 1a3a04
Fixes: d536540f304c ("drm/fb-helper: Add generic fbdev emulation .fb_probe function")
Thomas Zimmermann 1a3a04
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Thomas Zimmermann 1a3a04
Cc: dri-devel@lists.freedesktop.org
Thomas Zimmermann 1a3a04
Cc: <stable@vger.kernel.org> # v4.19+
Thomas Zimmermann 1a3a04
Link: https://patchwork.freedesktop.org/patch/msgid/20220201115305.9333-1-tzimmermann@suse.de
Thomas Zimmermann 1a3a04
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Thomas Zimmermann 1a3a04
---
Thomas Zimmermann 1a3a04
 drivers/gpu/drm/drm_fb_helper.c |    2 ++
Thomas Zimmermann 1a3a04
 1 file changed, 2 insertions(+)
Thomas Zimmermann 1a3a04
Thomas Zimmermann 1a3a04
--- a/drivers/gpu/drm/drm_fb_helper.c
Thomas Zimmermann 1a3a04
+++ b/drivers/gpu/drm/drm_fb_helper.c
Thomas Zimmermann 1a3a04
@@ -3083,6 +3083,7 @@ int drm_fb_helper_generic_probe(struct d
Thomas Zimmermann 1a3a04
 	fbi->fix.smem_len = fbi->screen_size;
Thomas Zimmermann 1a3a04
 	fbi->screen_buffer = buffer->vaddr;
Thomas Zimmermann 1a3a04
 	strcpy(fbi->fix.id, "DRM emulated");
Thomas Zimmermann 1a3a04
+	fbi->flags = FBINFO_DEFAULT;
Thomas Zimmermann 1a3a04
 
Thomas Zimmermann 1a3a04
 	drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->format->depth);
Thomas Zimmermann 1a3a04
 	drm_fb_helper_fill_var(fbi, fb_helper, sizes->fb_width, sizes->fb_height);
Thomas Zimmermann 1a3a04
@@ -3106,6 +3107,7 @@ int drm_fb_helper_generic_probe(struct d
Thomas Zimmermann 1a3a04
 		*fbops = *fbi->fbops;
Thomas Zimmermann 1a3a04
 		fbi->fbops = fbops;
Thomas Zimmermann 1a3a04
 		fbi->screen_buffer = shadow;
Thomas Zimmermann 1a3a04
+		fbi->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST;
Thomas Zimmermann 1a3a04
 		fbi->fbdefio = &drm_fbdev_defio;
Thomas Zimmermann 1a3a04
 
Thomas Zimmermann 1a3a04
 		fb_deferred_io_init(fbi);