Skip to content

Commit 1ab4de2

Browse files
author
Thomas Zimmermann
committed
Revert "drm/fb-helper: Schedule deferred-I/O worker after writing to framebuffer"
This reverts commit 7f5cc4a. Needed to restore the fbdev damage worker. There have been bug reports about locking order [1] and incorrectly takens branches. [2] Restore the damage worker until these problems have been resovled. Signed-off-by: Thomas Zimmermann <[email protected]> Acked-by: Daniel Vetter <[email protected]> Link: https://intel-gfx-ci.01.org/tree/drm-tip/fi-kbl-8809g.html # 1 Link: https://lore.kernel.org/dri-devel/[email protected]/T/#m06eedc0a468940e4cbbd14ca026733b639bc445a # 2 Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit 8b83e1a)
1 parent 713befe commit 1ab4de2

File tree

3 files changed

+1
-25
lines changed

3 files changed

+1
-25
lines changed

drivers/gpu/drm/drm_fb_helper.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -599,16 +599,9 @@ static void drm_fb_helper_add_damage_clip(struct drm_fb_helper *helper, u32 x, u
599599
static void drm_fb_helper_damage(struct drm_fb_helper *helper, u32 x, u32 y,
600600
u32 width, u32 height)
601601
{
602-
struct fb_info *info = helper->info;
603-
604602
drm_fb_helper_add_damage_clip(helper, x, y, width, height);
605603

606-
/*
607-
* The current fbdev emulation only flushes buffers if a damage
608-
* update is necessary. And we can assume that deferred I/O has
609-
* been enabled as damage updates require deferred I/O for mmap.
610-
*/
611-
fb_deferred_io_schedule_flush(info);
604+
schedule_work(&helper->damage_work);
612605
}
613606

614607
/*

drivers/video/fbdev/core/fb_defio.c

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -332,19 +332,3 @@ void fb_deferred_io_cleanup(struct fb_info *info)
332332
mutex_destroy(&fbdefio->lock);
333333
}
334334
EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup);
335-
336-
void fb_deferred_io_schedule_flush(struct fb_info *info)
337-
{
338-
struct fb_deferred_io *fbdefio = info->fbdefio;
339-
340-
if (WARN_ON_ONCE(!fbdefio))
341-
return; /* bug in driver logic */
342-
343-
/*
344-
* There's no requirement from callers to schedule the
345-
* flush immediately. Rather schedule the worker with a
346-
* delay and let a few more writes pile up.
347-
*/
348-
schedule_delayed_work(&info->deferred_work, fbdefio->delay);
349-
}
350-
EXPORT_SYMBOL_GPL(fb_deferred_io_schedule_flush);

include/linux/fb.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,6 @@ extern void fb_deferred_io_open(struct fb_info *info,
663663
struct inode *inode,
664664
struct file *file);
665665
extern void fb_deferred_io_cleanup(struct fb_info *info);
666-
extern void fb_deferred_io_schedule_flush(struct fb_info *info);
667666
extern int fb_deferred_io_fsync(struct file *file, loff_t start,
668667
loff_t end, int datasync);
669668

0 commit comments

Comments
 (0)