2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/drivers/gpu/drm/omapdrm
Thomas Zimmermann 3fb1f62f80 drm/fb-helper: Remove drm_fb_helper_unprepare() from drm_fb_helper_fini()
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: 643231b283 ("drm/fbdev-generic: Minimize hotplug error handling")
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230216140620.17699-1-tzimmermann@suse.de
2023-02-21 13:26:18 +01:00
..
dss drm/omap: dsi: Fix excessive stack usage 2022-12-16 19:24:39 +02:00
Kconfig drm/omap: Depend on CONFIG_OF 2021-10-07 05:42:16 +03:00
Makefile drm/omap: introduce omap_hw_overlay 2021-12-08 10:04:40 +02:00
omap_crtc.c drm: Remove unnecessary include statements of drm_plane_helper.h 2022-07-26 18:42:04 +02:00
omap_crtc.h drm/omap: remove dss_mgr_ops 2020-12-15 16:17:30 +02:00
omap_debugfs.c drm: Drop drm_framebuffer.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
omap_dmm_priv.h drm/omapdrm: Convert to SPDX identifier 2021-11-10 13:51:25 +02:00
omap_dmm_tiler.c drm/omap: dmm_tiler:Remove the print function dev_err() 2022-09-09 16:23:21 +03:00
omap_dmm_tiler.h drm/omapdrm: Convert to SPDX identifier 2021-11-10 13:51:25 +02:00
omap_drv.c drm/omap: stop using drm_bridge_connector_en/disable_hpd() 2023-01-05 15:08:10 +01:00
omap_drv.h drm/omap: dynamically assign hw overlays to planes 2021-12-08 10:04:47 +02:00
omap_encoder.c drm/omap: drop unused DSS next pointer 2020-12-15 16:08:26 +02:00
omap_encoder.h
omap_fb.c drm: Drop drm_blend.h from drm_crtc.h 2022-06-20 23:53:55 +03:00
omap_fb.h drm/omap: Add a 'right overlay' to plane state 2021-12-08 10:04:54 +02:00
omap_fbdev.c drm/fb-helper: Remove drm_fb_helper_unprepare() from drm_fb_helper_fini() 2023-02-21 13:26:18 +01:00
omap_fbdev.h
omap_gem_dmabuf.c drm: Assert held reservation lock for dma-buf mmapping 2022-11-11 23:49:47 +03:00
omap_gem.c drm/omap: Fix kernel docs 2023-01-17 17:57:33 +02:00
omap_gem.h drm: omapdrm: Support exporting of non-contiguous GEM BOs 2022-03-28 12:39:51 +03:00
omap_irq.c drm/omap: Fix kernel docs 2023-01-17 17:57:33 +02:00
omap_irq.h
omap_overlay.c drm: Remove unnecessary include statements of drm_plane_helper.h 2022-07-26 18:42:04 +02:00
omap_overlay.h drm/omap: Add a 'right overlay' to plane state 2021-12-08 10:04:54 +02:00
omap_plane.c drm: Remove unnecessary include statements of drm_plane_helper.h 2022-07-26 18:42:04 +02:00
omap_plane.h drm/omap: Add a 'right overlay' to plane state 2021-12-08 10:04:54 +02:00
tcm-sita.c drm/omapdrm: Convert to SPDX identifier 2021-11-10 13:51:25 +02:00
tcm.h
TODO