On Mon Jun 8, 2026 at 2:07 PM CEST, Maxime Ripard wrote:
> Hi,
>
> On Tue, May 19, 2026 at 12:37:42PM +0200, Luca Ceresoli wrote:
>> With the upcoming support for DRM bridge hot(un)plugging, bridges can be
>> removed at any time withotu tearing down the entire card. When this
>> happens, shutdown the pipeline and detach from the encoder chain the bridge
>> being removed along with all the following ones.
>>
>> Signed-off-by: Luca Ceresoli <[email protected]>
>> ---
>>  drivers/gpu/drm/drm_bridge.c | 8 ++++++++
>>  1 file changed, 8 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
>> index 7f2d1a81d730..d45fb74ec8c2 100644
>> --- a/drivers/gpu/drm/drm_bridge.c
>> +++ b/drivers/gpu/drm/drm_bridge.c
>> @@ -462,9 +462,17 @@ EXPORT_SYMBOL(devm_drm_bridge_add);
>>   * it won't be found by users via of_drm_find_and_get_bridge(), and add it
>>   * to the lingering bridge list, to keep track of it until its allocated
>>   * memory is eventually freed.
>> + *
>> + * If the bridge is attached, also disable the active output and detach
>> + * this bridge and the following ones.
>>   */
>>  void drm_bridge_remove(struct drm_bridge *bridge)
>>  {
>> +    if (bridge->encoder) {
>> +            drm_atomic_shutdown(bridge->dev);
>> +            drm_encoder_cleanup_from(bridge->encoder, bridge);
>> +    }
>> +
>>      mutex_lock(&bridge_lock);
>>      list_move_tail(&bridge->list, &bridge_lingering_list);
>>      mutex_unlock(&bridge_lock);
>
> I don't think this makes a lot of sense to disable the whole device at
> once. The connector, encoder, and the CRTC might, but the whole device
> doesn't.

Indeed this is wrong. Dmitry pointed it out during the discussion at
Display Next Hackfest (see my report in reply to the cover letter). The
drm_atomic_shutdown() call will be dropped.

Luca

--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

Reply via email to