mirror of
https://github.com/torvalds/linux.git
synced 2025-11-12 14:40:05 +02:00
Generate a hotplug event after registering a client to allow the client to configure its display. Remove the hotplug calls from the existing clients for fbdev emulation. This change fixes a concurrency bug between registering a client and receiving events from the DRM core. The bug is present in the fbdev emulation of all drivers. The fbdev emulation currently generates a hotplug event before registering the client to the device. For each new output, the DRM core sends an additional hotplug event to each registered client. If the DRM core detects first output between sending the artificial hotplug and registering the device, the output's hotplug event gets lost. If this is the first output, the fbdev console display remains dark. This has been observed with amdgpu and fbdev-generic. Fix this by adding hotplug generation directly to the client's register helper drm_client_register(). Registering the client and receiving events are serialized by struct drm_device.clientlist_mutex. So an output is either configured by the initial hotplug event, or the client has already been registered. The bug was originally added in commit |
||
|---|---|---|
| .. | ||
| dc.c | ||
| dc.h | ||
| dp.c | ||
| dp.h | ||
| dpaux.c | ||
| dpaux.h | ||
| drm.c | ||
| drm.h | ||
| dsi.c | ||
| dsi.h | ||
| falcon.c | ||
| falcon.h | ||
| fb.c | ||
| fbdev.c | ||
| firewall.c | ||
| gem.c | ||
| gem.h | ||
| gr2d.c | ||
| gr2d.h | ||
| gr3d.c | ||
| gr3d.h | ||
| hda.c | ||
| hda.h | ||
| hdmi.c | ||
| hdmi.h | ||
| hub.c | ||
| hub.h | ||
| Kconfig | ||
| Makefile | ||
| mipi-phy.c | ||
| mipi-phy.h | ||
| nvdec.c | ||
| output.c | ||
| plane.c | ||
| plane.h | ||
| rgb.c | ||
| riscv.c | ||
| riscv.h | ||
| sor.c | ||
| sor.h | ||
| submit.c | ||
| submit.h | ||
| trace.c | ||
| trace.h | ||
| uapi.c | ||
| uapi.h | ||
| vic.c | ||
| vic.h | ||