summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2022-11-03 18:14:39 +0300
committerThomas Zimmermann <tzimmermann@suse.de>2022-11-05 19:05:54 +0300
commit3add5f97734d8cbb5e2035dca226f691eb2f12a2 (patch)
treec2d3cbb69909e55ac58873f117bc724ade420ebc /drivers/gpu/drm
parentf231af498c29f3acbd4436f67a8c7de8a428fb0f (diff)
downloadlinux-3add5f97734d8cbb5e2035dca226f691eb2f12a2.tar.xz
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: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20221103151446.2638-17-tzimmermann@suse.de
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/drm_fb_helper.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index f6d22cc4cd87..379e0d2f6719 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -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.