linux/drivers/gpu/drm/bridge
Esben Haabendal 4600b4d1a9 drm/bridge: ti-sn65dsi83: Fix error handling in sn65dsi83_reset_work()
The error handling of sn65dsi83_reset_pipe() in sn65dsi83_reset_work() has
seen a couple of changes that seems to cause a bit of confusion.

While sn65dsi83_reset_work() has implemented an early exit if
sn65dsi83_reset_pipe() fails since it was added, when a commit from Maxime
Ripard switched to use drm_bridge_helper_reset_crtc() [1] the
sn65dsi83_reset_pipe() function would no longer return an error code, so
the early exit was then a no-op, and even on sn65dsi83_reset_pipe()
failure, enable_irq() has been called.

When drm_bridge_enter()/drm_bridge_exit() resource protection was added,
the drm_bridge_exit() incidentally was always called, which is the correct
approach. But only because the early exit in sn65dsi83_reset_pipe() was
never hit because sn65dsi83_reset_pipe() always returns 0.

In order get back to a situation where enable_irq() is not called on
sn65dsi83_reset_pipe() failure, which should help protect against irq
storms, we need to reintroduce a non-zero return value from
sn65dsi83_reset_pipe() on error, and fix sn65dsi83_reset_work() so that we
always exit the DRM bridge critical section with drm_bridge_exit().

[1] commit e17fadff7a ("drm/bridge: ti-sn65dsi83: Switch to drm_bridge_helper_reset_crtc")
[2] commit d2e8d1bc84 ("drm/bridge: ti-sn65dsi83: protect device resources on unplug")

Fixes: e17fadff7a ("drm/bridge: ti-sn65dsi83: Switch to drm_bridge_helper_reset_crtc")
Cc: stable@vger.kernel.org
Signed-off-by: Esben Haabendal <esben@geanix.com>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Link: https://patch.msgid.link/20260831-ti-sn65dsi83-fixes-v5-1-e712765d6c4f@geanix.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2026-09-09 17:07:54 +02:00
..
adv7511 drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
analogix Linux 7.2 2026-08-20 10:58:44 +10:00
cadence drm/bridge: cdns-mhdp8546: Switch to atomic_create_state 2026-06-22 11:24:59 +02:00
imx drm/bridge: imx: Add i.MX93 parallel display format configuration support 2026-07-29 12:54:54 +08:00
synopsys drm/bridge: remove unneeded 'fast_io' parameter in regmap_config 2026-08-05 09:04:18 +02:00
aux-bridge.c drm/bridge: aux-bridge: Add atomic bridge state handlers 2026-07-15 09:45:57 +02:00
aux-hpd-bridge.c drm/bridge: aux-hpd-bridge: Add atomic bridge state handlers 2026-07-15 09:45:58 +02:00
chipone-icn6211.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
chrontel-ch7033.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
cros-ec-anx7688.c drm/bridge: cros-ec-anx7688: Add atomic bridge state handlers 2026-07-15 09:45:59 +02:00
display-connector.c Linux 7.2 2026-08-20 10:58:44 +10:00
fsl-ldb.c drm/panel: of_drm_find_panel() return a counted reference 2026-07-20 15:07:22 +02:00
inno-hdmi.c drm-misc-next for 7.3: 2026-07-07 09:34:04 +10:00
ite-it6263.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
ite-it6505.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
ite-it66121.c drm/bridge: ite-it66121: Switch to atomic_create_state 2026-06-22 11:24:28 +02:00
Kconfig drm/bridge: ite-it66121: Switch to the HDMI connector helpers 2026-05-26 12:27:56 +02:00
lontium-lt8713sx.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
lontium-lt8912b.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
lontium-lt9211.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
lontium-lt9611.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
lontium-lt9611uxc.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
lvds-codec.c drm/panel: of_drm_find_panel() return a counted reference 2026-07-20 15:07:22 +02:00
Makefile drm/bridge: Move legacy bridge driver out of imx directory for multi-platform use 2026-04-09 14:10:21 +02:00
megachips-stdpxxxx-ge-b850v3-fw.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
microchip-lvds.c drm/bridge: microchip-lvds: Add atomic bridge state handlers 2026-07-15 09:46:02 +02:00
nwl-dsi.c drm/bridge: nwl-dsi: Switch to atomic_create_state 2026-06-22 11:24:30 +02:00
nwl-dsi.h drm/bridge: nwl-dsi: Use vsync/hsync polarity from display mode 2024-08-19 15:36:47 +02:00
nxp-ptn3460.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
of-display-mode-bridge.c drm/bridge: of-display-mode-bridge: Add atomic bridge state handlers 2026-07-15 09:46:04 +02:00
panel.c drm/panel: of_drm_find_panel() return a counted reference 2026-07-20 15:07:22 +02:00
parade-ps8622.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
parade-ps8640.c Linux 7.2 2026-08-20 10:58:44 +10:00
samsung-dsim.c drm/panel: of_drm_find_panel() return a counted reference 2026-07-20 15:07:22 +02:00
sii902x.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
sii9234.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
sil-sii8620.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
sil-sii8620.h
simple-bridge.c drm/bridge: simple-bridge: Switch to atomic bridge callbacks 2026-07-15 09:46:06 +02:00
ssd2825.c drm/panel: of_drm_find_panel() return a counted reference 2026-07-20 15:07:22 +02:00
tc358762.c drm/bridge: tc358762: use devm for bridge registration and DSI attach 2026-07-27 13:14:02 +02:00
tc358764.c drm/bridge: tc358764: use devm for bridge registration and DSI attach 2026-07-27 13:14:02 +02:00
tc358767.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
tc358768.c drm/bridge: tc358768: Enforce input bus flags via atomic_check 2026-09-09 11:03:46 +02:00
tc358775.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
tda998x_drv.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
th1520-dw-hdmi.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
thc63lvd1024.c drm/bridge: thc63lvd1024: Switch to atomic bridge callbacks 2026-07-15 09:46:09 +02:00
ti-dlpc3433.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
ti-sn65dsi83.c drm/bridge: ti-sn65dsi83: Fix error handling in sn65dsi83_reset_work() 2026-09-09 17:07:54 +02:00
ti-sn65dsi86.c drm/bridge: ti-sn65dsi86: Remove redundant dev_err_probe() 2026-07-30 14:05:00 -07:00
ti-tdp158.c drm/bridge: ti-tdp158: Switch to atomic_create_state 2026-06-22 11:24:40 +02:00
ti-tfp410.c drm/bridge: Use named initializers for arrays of i2c_device_data 2026-07-27 15:24:28 +02:00
ti-tpd12s015.c drm/bridge: ti-tpd12s015: Add atomic bridge state handlers 2026-07-15 09:46:08 +02:00
waveshare-dsi.c drm/panel: of_drm_find_panel() return a counted reference 2026-07-20 15:07:22 +02:00