Re: [PATCH] i2c: i2c-s3c2410: fix runtime PM cleanup

From: Andi Shyti

Date: Tue Aug 18 2026 - 11:01:11 EST


Hi Jiawen,

On Tue, Aug 18, 2026 at 05:11:57PM +0400, Jiawen Liu wrote:
> Keep clock enabled until adapter teardown.
>
> The remove path disables the controller clock before unregistering the
> I2C adapter, so adapter teardown can run after the hardware clock has
> already been turned off.
>
> Move I2C teardown before clock release (pm_runtime_disable,
> clk_unprepare) in s3c24xx_i2c_remove.

This last paragraph is actually useless. Perhaps you can write:

"
The remove path disables the controller clock before
unregistering the I2C adapter, so adapter teardown can run after
the hardware clock has been turned off.

Fix the ordering in s3c24xx_i2c_remove() by calling
i2c_del_adapter() before pm_runtime_disable(), keeping the clock
enabled until adapter teardown is complete.
"

This way we also mention that the ordering between PM runtime and
i2c_del_adapter() has also changed.

Does it work for you?

> Signed-off-by: jiawen <1298662399@xxxxxx>

Please, next time write your full name, not "jiawen", but "Jiawen
Liu".

Besides this can also be considered as a fix and needs to add:

Fixes: 34e81ad5f0b6 ("i2c: s3c2410: fix ABBA deadlock by keeping clock prepared")
Cc: <stable@xxxxxxxxxxxxxxx> # v3.19+

No need to resend, unless there are other reviews. Please just
let me know whether the changs I am suggesting work for you.

Thanks,
Andi

> ---
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -1136,11 +1136,9 @@
> {
> struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev);
>
> + i2c_del_adapter(&i2c->adap);
> + pm_runtime_disable(&pdev->dev);
> clk_unprepare(i2c->clk);
> -
> - pm_runtime_disable(&pdev->dev);
> -
> - i2c_del_adapter(&i2c->adap);
> }
>
> static int s3c24xx_i2c_suspend_noirq(struct device *dev)
>