[PATCH v2] i2c: xiic: restore runtime PM teardown in remove to fix clk WARN flood

Andi Shyti andi.shyti at kernel.org
Sun Aug 16 09:14:08 PDT 2026


Hi Abdurrahman,

On Fri, Aug 14, 2026 at 11:04:45AM -0700, Abdurrahman Hussain wrote:
> The devres conversion dropped the remove-time runtime PM trailer
> (pm_runtime_disable + pm_runtime_set_suspended +
> pm_runtime_dont_use_autosuspend). devm_pm_runtime_enable's release
> action then calls pm_runtime_dont_use_autosuspend() while runtime PM
> is still enabled, triggering an immediate runtime suspend: the suspend
> callback clk_disable()s the clock that the devm_clk_get_enabled()
> release is about to clk_disable_unprepare(), and every device teardown
> WARNs in clk_core_disable() ("clkN already disabled").

isn't devm_pm_runtime_set_active_enabled() calling
pm_runtime_disable() + pm_runtime_set_suspended() + 
pm_runtime_dont_use_autosuspend() at teardown?

Thanks,
Andi

> Restore the trailer: with runtime PM disabled and the state forced to
> suspended before devres runs, the suspend callback cannot fire and the
> clock enable count stays balanced.
> 
> Fixes: 50c63491ff26 ("i2c: xiic: switch to devres managed APIs")
> Signed-off-by: Abdurrahman Hussain <abdurrahman at nexthop.ai>
> ---
> Changes in v2:
> - Move the Signed-off-by into the commit message proper; v1 had it below
>   the '---' cutter line where it would be dropped on apply (Andy).
> - Link to v1: https://patch.msgid.link/20260813-i2c-xiic-restore-runtime-pm-teardown-v1-1-0e7dfb206790@nexthop.ai
> 
> To: Michal Simek <michal.simek at amd.com>
> To: Andi Shyti <andi.shyti at kernel.org>
> To: Andy Shevchenko <andriy.shevchenko at intel.com>
> To: Abdurrahman Hussain <abdurrahman at nexthop.ai>
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-i2c at vger.kernel.org
> Cc: linux-kernel at vger.kernel.org
> ---
>  drivers/i2c/busses/i2c-xiic.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
> index 3e7735e1dae0..89636ca36915 100644
> --- a/drivers/i2c/busses/i2c-xiic.c
> +++ b/drivers/i2c/busses/i2c-xiic.c
> @@ -1545,6 +1545,9 @@ static void xiic_i2c_remove(struct platform_device *pdev)
>  		xiic_deinit(i2c);
>  
>  	pm_runtime_put_sync(dev);
> +	pm_runtime_disable(dev);
> +	pm_runtime_set_suspended(dev);
> +	pm_runtime_dont_use_autosuspend(dev);
>  }
>  
>  static const struct dev_pm_ops xiic_dev_pm_ops = {
> 
> ---
> base-commit: d58772d8520c7ef247c4b95c9bd76d3a25da9ff5
> change-id: 20260813-i2c-xiic-restore-runtime-pm-teardown-dd0ab1db2c02
> 
> Best regards,
> --  
> Abdurrahman Hussain <abdurrahman at nexthop.ai>
> 



More information about the linux-arm-kernel mailing list