Re: [PATCH] i2c: i2c-qcom-geni: Fix suspend clock handling

From: Wolfram Sang
Date: Tue Jul 31 2018 - 15:20:35 EST


On Mon, Jul 09, 2018 at 04:49:37PM -0700, Evan Green wrote:
> pm_runtime_suspended can return 0 even if the last runtime power
> management function called in the device was a suspend call. This
> trips up the i2c-qcom-geni's suspend_noirq accounting, which was
> trying to use the function to determine if it should disable clocks
> or if that had already been done.
>
> The fix is to track whether or not clocks have been enabled explicitly
> in the driver with a new member. While in there, also honor the return
> value of geni_se_resources_off, which can technically fail.
>
> An example of the warning generated during suspend:
> [ 68.314733] WARNING: CPU: 0 PID: 1990 at drivers/clk/clk.c:595 clk_core_disable+0x28/0x200
> [ 68.464576] Call trace:
> [ 68.554410] [<ffffff80083f0ed0>] clk_core_disable+0x28/0x200
> [ 68.560244] [<ffffff80083f349c>] clk_disable+0x38/0x4c
> [ 68.565541] [<ffffff8008408910>] geni_se_resources_off+0x40/0x74
> [ 68.571731] [<ffffff800862aadc>] geni_i2c_runtime_suspend+0x2c/0x3c
> [ 68.578185] [<ffffff800862ae6c>] geni_i2c_suspend_noirq+0x38/0x68
> [ 68.584475] [<ffffff800852bd40>] dpm_run_callback+0x104/0x210
> [ 68.590404] [<ffffff800852c3d4>] __device_suspend_noirq+0x158/0x1a8
> [ 68.596859] [<ffffff800852dff0>] dpm_noirq_suspend_devices+0x180/0x38c
> [ 68.603594] [<ffffff80080fdebc>] suspend_devices_and_enter+0x49c/0x964
> [ 68.610321] [<ffffff80080fea14>] pm_suspend+0x690/0x6e0
> [ 68.615712] [<ffffff80080fc930>] state_store+0xd4/0xf8
> [ 68.621014] [<ffffff80088a57f0>] kobj_attr_store+0x18/0x28
> [ 68.626672] [<ffffff8008297a54>] sysfs_kf_write+0x5c/0x68
> [ 68.632240] [<ffffff8008296a00>] kernfs_fop_write+0x174/0x1b8
> [ 68.638177] [<ffffff800821a2c4>] __vfs_write+0x58/0x160
> [ 68.643567] [<ffffff800821a5d8>] vfs_write+0xcc/0x184
> [ 68.648780] [<ffffff800821a850>] SyS_write+0x64/0xb4
>
> Signed-off-by: Evan Green <evgreen@xxxxxxxxxxxx>

Applied to for-next (squashed into the main driver), thanks!

Attachment: signature.asc
Description: PGP signature