Commit 24dc4f4c authored by Thomas Zimmermann's avatar Thomas Zimmermann

drm/fb-helper: Support smem_len in deferred I/O

The size of the framebuffer can either be stored in screen_info or
smem_len. Take both into account in the deferred I/O code.
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Tested-by: default avatarSui Jingfeng <suijingfeng@loongson.cn>
Link: https://patchwork.freedesktop.org/patch/msgid/20230320150751.20399-5-tzimmermann@suse.de
parent 6a4fef21
...@@ -672,7 +672,7 @@ static void drm_fb_helper_memory_range_to_clip(struct fb_info *info, off_t off, ...@@ -672,7 +672,7 @@ static void drm_fb_helper_memory_range_to_clip(struct fb_info *info, off_t off,
void drm_fb_helper_deferred_io(struct fb_info *info, struct list_head *pagereflist) void drm_fb_helper_deferred_io(struct fb_info *info, struct list_head *pagereflist)
{ {
struct drm_fb_helper *helper = info->par; struct drm_fb_helper *helper = info->par;
unsigned long start, end, min_off, max_off; unsigned long start, end, min_off, max_off, total_size;
struct fb_deferred_io_pageref *pageref; struct fb_deferred_io_pageref *pageref;
struct drm_rect damage_area; struct drm_rect damage_area;
...@@ -690,7 +690,11 @@ void drm_fb_helper_deferred_io(struct fb_info *info, struct list_head *pagerefli ...@@ -690,7 +690,11 @@ void drm_fb_helper_deferred_io(struct fb_info *info, struct list_head *pagerefli
* of the screen and account for non-existing scanlines. Hence, * of the screen and account for non-existing scanlines. Hence,
* keep the covered memory area within the screen buffer. * keep the covered memory area within the screen buffer.
*/ */
max_off = min(max_off, info->screen_size); if (info->screen_size)
total_size = info->screen_size;
else
total_size = info->fix.smem_len;
max_off = min(max_off, total_size);
if (min_off < max_off) { if (min_off < max_off) {
drm_fb_helper_memory_range_to_clip(info, min_off, max_off - min_off, &damage_area); drm_fb_helper_memory_range_to_clip(info, min_off, max_off - min_off, &damage_area);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment