mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
![]() Move drm_fb_helper_unprepare() from drm_fb_helper_fini() into the
calling fbdev implementation. Avoids a possible stale mutex with
generic fbdev code.
As indicated by its name, drm_fb_helper_prepare() prepares struct
drm_fb_helper before setting up the fbdev support with a call to
drm_fb_helper_init(). In legacy fbdev emulation, this happens next
to each other. If successful, drm_fb_helper_fini() later tear down
the fbdev device and also unprepare via drm_fb_helper_unprepare().
Generic fbdev emulation prepares struct drm_fb_helper immediately
after allocating the instance. It only calls drm_fb_helper_init()
as part of processing a hotplug event. If the hotplug-handling fails,
it runs drm_fb_helper_fini(). This unprepares the fb-helper instance
and the next hotplug event runs on stale data.
Solve this by moving drm_fb_helper_unprepare() from drm_fb_helper_fini()
into the fbdev implementations. Call it right before freeing the
fb-helper instance.
Fixes:
|
||
---|---|---|
.. | ||
dss | ||
Kconfig | ||
Makefile | ||
omap_crtc.c | ||
omap_crtc.h | ||
omap_debugfs.c | ||
omap_dmm_priv.h | ||
omap_dmm_tiler.c | ||
omap_dmm_tiler.h | ||
omap_drv.c | ||
omap_drv.h | ||
omap_encoder.c | ||
omap_encoder.h | ||
omap_fb.c | ||
omap_fb.h | ||
omap_fbdev.c | ||
omap_fbdev.h | ||
omap_gem_dmabuf.c | ||
omap_gem.c | ||
omap_gem.h | ||
omap_irq.c | ||
omap_irq.h | ||
omap_overlay.c | ||
omap_overlay.h | ||
omap_plane.c | ||
omap_plane.h | ||
tcm-sita.c | ||
tcm.h | ||
TODO |