[PATCH v6] backlight: led-backlight: add devlink to supplier LEDs
Herve Codina
herve.codina at bootlin.com
Tue May 20 06:05:08 UTC 2025
Hi Luca,
On Mon, 19 May 2025 22:19:11 +0200
Luca Ceresoli <luca.ceresoli at bootlin.com> wrote:
> led-backlight is a consumer of one or multiple LED class devices, but
> devlink is currently unable to create correct supplier-producer links when
> the supplier is a class device. It creates instead a link where the
> supplier is the parent of the expected device.
>
> One consequence is that removal order is not correctly enforced.
>
> Issues happen for example with the following sections in a device tree
> overlay:
>
> // An LED driver chip
> pca9632 at 62 {
> compatible = "nxp,pca9632";
> reg = <0x62>;
>
> // ...
>
> addon_led_pwm: led-pwm at 3 {
> reg = <3>;
> label = "addon:led:pwm";
> };
> };
>
> backlight-addon {
> compatible = "led-backlight";
> leds = <&addon_led_pwm>;
> brightness-levels = <255>;
> default-brightness-level = <255>;
> };
>
> In this example, the devlink should be created between the backlight-addon
> (consumer) and the pca9632 at 62 (supplier). Instead it is created between the
> backlight-addon (consumer) and the parent of the pca9632 at 62, which is
> typically the I2C bus adapter.
>
> On removal of the above overlay, the LED driver can be removed before the
> backlight device, resulting in:
>
> Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
> ...
> Call trace:
> led_put+0xe0/0x140
> devm_led_release+0x6c/0x98
>
> Another way to reproduce the bug without any device tree overlays is
> unbinding the LED class device (pca9632 at 62) before unbinding the consumer
> (backlight-addon):
>
> echo 11-0062 >/sys/bus/i2c/drivers/leds-pca963x/unbind
> echo ...backlight-dock >/sys/bus/platform/drivers/led-backlight/unbind
>
> Fix by adding a devlink between the consuming led-backlight device and the
> supplying LED device, as other drivers and subsystems do as well.
>
> Tested-by: Alexander Sverdlin <alexander.sverdlin at siemens.com>
> Fixes: ae232e45acf9 ("backlight: add led-backlight driver")
> Signed-off-by: Luca Ceresoli <luca.ceresoli at bootlin.com>
Reviewed-by: Herve Codina <herve.codina at bootlin.com>
Best regards,
Hervé
More information about the dri-devel
mailing list