On Fri, 14 Aug 2026 16:09:04 +0200 Andrew Lunn wrote:
On Fri, Aug 14, 2026 at 01:01:02PM +0200, Oleksij Rempel wrote:
quoted
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
rtl83xx_reset_assert() and rtl83xx_reset_deassert() are only called from
the probe path, which may sleep and is not timing-critical. When the
reset GPIO is provided by a sleeping controller such as an I2C I/O
expander, gpiod_set_value() warns:
Switch both helpers to gpiod_set_value_cansleep() so such a reset GPIO can
be used without triggering the warning.
The reset GPIO has been driven with the non-sleeping gpiod_set_value()
since the driver was added in v4.19. The call has since been refactored
across several files - from realtek-smi.c / realtek-mdio.c into the common
rtl83xx.c module and then into the rtl83xx_reset_assert() and
rtl83xx_reset_deassert() helpers (both in v6.9). This patch therefore
applies as-is only to kernels that carry those helpers (v6.9+); older
stable kernels need the same gpiod_set_value_cansleep() conversion at the
corresponding open-coded call sites.
This is one of those fuzzy cases. It never worked, so this is not a
regression. Nobody has needed it up until now. So it probably should
be considered a new feature, and merged via net-next.
Sounds like it's a false positive, but it's a WARN, so if it hits on
real platforms -- I think it's a real fix?