[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <OS0PR01MB5922F0553374BB1889E29F6F86A39@OS0PR01MB5922.jpnprd01.prod.outlook.com>
Date: Thu, 23 Sep 2021 13:30:28 +0000
From: Biju Das <biju.das.jz@...renesas.com>
To: Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>,
"wg@...ndegger.com" <wg@...ndegger.com>,
"mkl@...gutronix.de" <mkl@...gutronix.de>
CC: "davem@...emloft.net" <davem@...emloft.net>,
"kuba@...nel.org" <kuba@...nel.org>,
"linux-can@...r.kernel.org" <linux-can@...r.kernel.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"linux-renesas-soc@...r.kernel.org"
<linux-renesas-soc@...r.kernel.org>,
Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>,
Ayumi Nakamichi <ayumi.nakamichi.kf@...esas.com>
Subject: RE: [PATCH] can: rcar_can: Fix suspend/resume
Hi Shimoda-San,
Thanks for the patch. I have tested Wake on LAN(Magic packet) on Hihope RZ/G2M board
and this patches fixes the warning messages reported by kernel during suspend.
Tested-by: Biju Das <biju.das.jz@...renesas.com>
Before applying patch
------------------------
root@...ope-rzg2m:~# ethtool -s eth0 wol g
root@...ope-rzg2m:~# echo mem > /sys/power/state
[ 92.220742] PM: suspend entry (s2idle)
[ 92.228123] Filesystems sync: 0.003 seconds
[ 92.248521] Freezing user space processes ... (elapsed 0.007 seconds) done.
[ 92.263935] OOM killer disabled.
[ 92.267265] Freezing remaining freezable tasks ... (elapsed 0.004 seconds) done.
[ 92.279787] printk: Suspending console(s) (use no_console_suspend to debug)
[ 92.310223] wl1271_sdio mmc2:0001:2: no wilink module was probed
[ 92.541847] ------------[ cut here ]------------
[ 92.541885] can-if1 already disabled
[ 92.541932] WARNING: CPU: 0 PID: 480 at drivers/clk/clk.c:952 clk_core_disable+0x250/0x288
[ 92.541962] CPU: 0 PID: 480 Comm: sh Not tainted 5.15.0-rc1-arm64-renesas-00402-gf0c16ee77cf1 #297
[ 92.541973] Hardware name: HopeRun HiHope RZ/G2M with sub board (DT)
[ 92.541981] pstate: 800000c5 (Nzcv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 92.541990] pc : clk_core_disable+0x250/0x288
[ 92.542000] lr : clk_core_disable+0x250/0x288
[ 92.542008] sp : ffff80001263b980
[ 92.542014] x29: ffff80001263b980 x28: ffff8000114ea508 x27: 0000000000000000
[ 92.542037] x26: ffff8000113b0b48 x25: ffff80001115f000 x24: ffff8000114ea518
[ 92.542057] x23: ffff0005c0b5f010 x22: ffff8000113b0b48 x21: 0000000000000000
[ 92.542077] x20: ffff0005c0d09800 x19: ffff0005c0d09800 x18: 000000000000b948
[ 92.542096] x17: 0000000000000000 x16: 000000000000b94e x15: ffff8000115c5e68
[ 92.542116] x14: fffffffffffc63d7 x13: 0000000000000003 x12: ffff8000113d3e58
[ 92.542135] x11: 0000000000000001 x10: 00000000000000f0 x9 : ffff8000111619e4
[ 92.542154] x8 : ffff0005c67a4380 x7 : 0000000000000002 x6 : 0000000000000000
[ 92.542173] x5 : ffff00063f727bf0 x4 : 0000000000000000 x3 : 0000000000000027
[ 92.542192] x2 : 0000000000000023 x1 : 2b864f21865f9400 x0 : 0000000000000000
[ 92.542212] Call trace:
[ 92.542218] clk_core_disable+0x250/0x288
[ 92.542227] clk_core_disable_lock+0x20/0x38
[ 92.542236] clk_disable+0x1c/0x28
[ 92.542244] rcar_can_suspend+0x74/0xb0
[ 92.542257] dpm_run_callback+0x5c/0x2b8
[ 92.542268] __device_suspend+0x110/0x5d8
[ 92.542276] dpm_suspend+0x124/0x438
[ 92.542284] dpm_suspend_start+0x78/0x90
[ 92.542292] suspend_devices_and_enter+0x10c/0xbb0
[ 92.542304] pm_suspend+0x274/0x338
[ 92.542312] state_store+0x88/0x110
[ 92.542321] kobj_attr_store+0x14/0x28
[ 92.542335] sysfs_kf_write+0x48/0x70
[ 92.542345] kernfs_fop_write_iter+0x118/0x1a8
[ 92.542352] new_sync_write+0xe4/0x180
[ 92.542363] vfs_write+0x29c/0x468
[ 92.542371] ksys_write+0x68/0xf0
[ 92.542379] __arm64_sys_write+0x18/0x20
[ 92.542387] invoke_syscall+0x40/0xf8
[ 92.542398] el0_svc_common.constprop.0+0xf0/0x110
[ 92.542407] do_el0_svc+0x20/0x78
[ 92.542414] el0_svc+0x50/0xe0
[ 92.542423] el0t_64_sync_handler+0xa8/0xb0
[ 92.542431] el0t_64_sync+0x158/0x15c
[ 92.542440] irq event stamp: 46832
[ 92.542445] hardirqs last enabled at (46831): [<ffff800010c960dc>] _raw_spin_unlock_irqrestore+0x8c/0x90
[ 92.542459] hardirqs last disabled at (46832): [<ffff8000105b4964>] clk_enable_lock+0xcc/0x118
[ 92.542469] softirqs last enabled at (42392): [<ffff800010010464>] _stext+0x464/0x5d8
[ 92.542477] softirqs last disabled at (42387): [<ffff80001008f480>] irq_exit+0x198/0x1b8
[ 92.542490] ---[ end trace e2078d4610595648 ]---
[ 92.542527] ------------[ cut here ]------------
[ 92.542532] can-if0 already disabled
[ 92.542556] WARNING: CPU: 0 PID: 480 at drivers/clk/clk.c:952 clk_core_disable+0x250/0x288
[ 92.542569] CPU: 0 PID: 480 Comm: sh Tainted: G W 5.15.0-rc1-arm64-renesas-00402-gf0c16ee77cf1 #297
[ 92.542578] Hardware name: HopeRun HiHope RZ/G2M with sub board (DT)
[ 92.542583] pstate: 800000c5 (Nzcv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 92.542590] pc : clk_core_disable+0x250/0x288
[ 92.542598] lr : clk_core_disable+0x250/0x288
[ 92.542606] sp : ffff80001263b980
[ 92.542611] x29: ffff80001263b980 x28: ffff8000114ea508 x27: 0000000000000000
[ 92.542631] x26: ffff8000113b0b48 x25: ffff80001115f000 x24: ffff8000114ea518
[ 92.542650] x23: ffff0005c0b5d810 x22: ffff8000113b0b48 x21: 0000000000000000
[ 92.542669] x20: ffff0005c0d09900 x19: ffff0005c0d09900 x18: 000000000000b948
[ 92.542688] x17: 0000000000000000 x16: 000000000000b94e x15: ffff8000115c5e68
[ 92.542707] x14: fffffffffffc6ec7 x13: 0000000000000003 x12: ffff8000113d3e58
[ 92.542726] x11: 0000000000000001 x10: 00000000000000f0 x9 : ffff8000111619e4
[ 92.542745] x8 : ffff0005c67a4380 x7 : 0000000000000002 x6 : 0000000000000000
[ 92.542763] x5 : ffff00063f727bf0 x4 : 0000000000000000 x3 : 0000000000000027
[ 92.542782] x2 : 0000000000000023 x1 : 2b864f21865f9400 x0 : 0000000000000000
[ 92.542800] Call trace:
[ 92.542806] clk_core_disable+0x250/0x288
[ 92.542814] clk_core_disable_lock+0x20/0x38
[ 92.542822] clk_disable+0x1c/0x28
[ 92.542828] rcar_can_suspend+0x74/0xb0
[ 92.542837] dpm_run_callback+0x5c/0x2b8
[ 92.542845] __device_suspend+0x110/0x5d8
[ 92.542852] dpm_suspend+0x124/0x438
[ 92.542860] dpm_suspend_start+0x78/0x90
[ 92.542868] suspend_devices_and_enter+0x10c/0xbb0
[ 92.542876] pm_suspend+0x274/0x338
[ 92.542884] state_store+0x88/0x110
[ 92.542892] kobj_attr_store+0x14/0x28
[ 92.542901] sysfs_kf_write+0x48/0x70
[ 92.542908] kernfs_fop_write_iter+0x118/0x1a8
[ 92.542915] new_sync_write+0xe4/0x180
[ 92.542923] vfs_write+0x29c/0x468
[ 92.542930] ksys_write+0x68/0xf0
[ 92.542938] __arm64_sys_write+0x18/0x20
[ 92.542945] invoke_syscall+0x40/0xf8
[ 92.542954] el0_svc_common.constprop.0+0xf0/0x110
[ 92.542962] do_el0_svc+0x20/0x78
[ 92.542969] el0_svc+0x50/0xe0
[ 92.542977] el0t_64_sync_handler+0xa8/0xb0
[ 92.542984] el0t_64_sync+0x158/0x15c
[ 92.542991] irq event stamp: 46852
[ 92.542995] hardirqs last enabled at (46851): [<ffff800010c960dc>] _raw_spin_unlock_irqrestore+0x8c/0x90
[ 92.543004] hardirqs last disabled at (46852): [<ffff8000105b4964>] clk_enable_lock+0xcc/0x118
[ 92.543013] softirqs last enabled at (42392): [<ffff800010010464>] _stext+0x464/0x5d8
[ 92.543020] softirqs last disabled at (42387): [<ffff80001008f480>] irq_exit+0x198/0x1b8
[ 92.543029] ---[ end trace e2078d4610595649 ]---
[ 148.223753] ravb e6800000.ethernet eth0: Link is Down
[ 148.242725] RTL8211E Gigabit Ethernet e6800000.ethernet-ffffffff:00: attached PHY driver (mii_bus:phy_addr=e6800000.ethernet-ffffffff:00, irq=199)
[ 148.809790] OOM killer enabled.
[ 148.813013] Restarting tasks ... done.
[ 148.824071] PM: suspend exit
[ 152.628415] ravb e6800000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
root@...ope-rzg2m:~#
After applying the patch:-
-------------------------
root@...ope-rzg2m:~# ethtool -s eth0 wol g
root@...ope-rzg2m:~# echo mem > /sys/power/state
[ 38.607753] PM: suspend entry (s2idle)
[ 38.616233] Filesystems sync: 0.004 seconds
[ 38.638404] Freezing user space processes ... (elapsed 0.007 seconds) done.
[ 38.654476] OOM killer disabled.
[ 38.657879] Freezing remaining freezable tasks ... (elapsed 0.004 seconds) done.
[ 38.670526] printk: Suspending console(s) (use no_console_suspend to debug)
[ 38.698823] wl1271_sdio mmc2:0001:2: no wilink module was probed
[ 45.828031] ravb e6800000.ethernet eth0: Link is Down
[ 45.846544] RTL8211E Gigabit Ethernet e6800000.ethernet-ffffffff:00: attached PHY driver (mii_bus:phy_addr=e6800000.ethernet-ffffffff:00, irq=199)
[ 45.888434] OOM killer enabled.
[ 45.891614] Restarting tasks ... done.
[ 45.901692] PM: suspend exit
root@...ope-rzg2m:~#
root@...ope-rzg2m:~# [ 49.468617] ravb e6800000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
regards,
Biju
> -----Original Message-----
> From: Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>
> Sent: 21 September 2021 06:20
> To: wg@...ndegger.com; mkl@...gutronix.de
> Cc: davem@...emloft.net; kuba@...nel.org; linux-can@...r.kernel.org;
> netdev@...r.kernel.org; linux-renesas-soc@...r.kernel.org; Yoshihiro
> Shimoda <yoshihiro.shimoda.uh@...esas.com>; Ayumi Nakamichi
> <ayumi.nakamichi.kf@...esas.com>
> Subject: [PATCH] can: rcar_can: Fix suspend/resume
>
> If the driver was not opened, rcar_can_suspend() should not call
> clk_disable() because the clock was not enabled.
>
> Fixes: fd1159318e55 ("can: add Renesas R-Car CAN driver")
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>
> Tested-by: Ayumi Nakamichi <ayumi.nakamichi.kf@...esas.com>
> ---
> drivers/net/can/rcar/rcar_can.c | 21 +++++++++++++--------
> 1 file changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/can/rcar/rcar_can.c
> b/drivers/net/can/rcar/rcar_can.c index 00e4533c8bdd..6b4eefb03044 100644
> --- a/drivers/net/can/rcar/rcar_can.c
> +++ b/drivers/net/can/rcar/rcar_can.c
> @@ -846,10 +846,12 @@ static int __maybe_unused rcar_can_suspend(struct
> device *dev)
> struct rcar_can_priv *priv = netdev_priv(ndev);
> u16 ctlr;
>
> - if (netif_running(ndev)) {
> - netif_stop_queue(ndev);
> - netif_device_detach(ndev);
> - }
> + if (!netif_running(ndev))
> + return 0;
> +
> + netif_stop_queue(ndev);
> + netif_device_detach(ndev);
> +
> ctlr = readw(&priv->regs->ctlr);
> ctlr |= RCAR_CAN_CTLR_CANM_HALT;
> writew(ctlr, &priv->regs->ctlr);
> @@ -858,6 +860,7 @@ static int __maybe_unused rcar_can_suspend(struct
> device *dev)
> priv->can.state = CAN_STATE_SLEEPING;
>
> clk_disable(priv->clk);
> +
> return 0;
> }
>
> @@ -868,6 +871,9 @@ static int __maybe_unused rcar_can_resume(struct
> device *dev)
> u16 ctlr;
> int err;
>
> + if (!netif_running(ndev))
> + return 0;
> +
> err = clk_enable(priv->clk);
> if (err) {
> netdev_err(ndev, "clk_enable() failed, error %d\n", err); @@ -
> 881,10 +887,9 @@ static int __maybe_unused rcar_can_resume(struct device
> *dev)
> writew(ctlr, &priv->regs->ctlr);
> priv->can.state = CAN_STATE_ERROR_ACTIVE;
>
> - if (netif_running(ndev)) {
> - netif_device_attach(ndev);
> - netif_start_queue(ndev);
> - }
> + netif_device_attach(ndev);
> + netif_start_queue(ndev);
> +
> return 0;
> }
>
> --
> 2.25.1
Powered by blists - more mailing lists