Commit 3add5f97 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/fb-helper: Call fb_sync in I/O functions



Call struct fb_ops.fb_sync in drm_fbdev_{read,write}() to mimic the
behavior of fbdev. Fbdev implementations of fb_read and fb_write in
struct fb_ops invoke fb_sync to synchronize with outstanding operations
before I/O. Doing the same in DRM implementations will allow us to use
them throughout DRM drivers.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221103151446.2638-17-tzimmermann@suse.de
parent f231af49
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2246,6 +2246,9 @@ static ssize_t drm_fbdev_fb_read(struct fb_info *info, char __user *buf,
	if (total_size - count < pos)
		count = total_size - pos;

	if (info->fbops->fb_sync)
		info->fbops->fb_sync(info);

	if (drm_fbdev_use_iomem(info))
		ret = fb_read_screen_base(info, buf, count, pos);
	else
@@ -2327,6 +2330,9 @@ static ssize_t drm_fbdev_fb_write(struct fb_info *info, const char __user *buf,
		count = total_size - pos;
	}

	if (info->fbops->fb_sync)
		info->fbops->fb_sync(info);

	/*
	 * Copy to framebuffer even if we already logged an error. Emulates
	 * the behavior of the original fbdev implementation.