[PATCH] clocksource/drivers/timer-ti-dm: Fix suspend and resume for am3 and am4

Carlos Hernandez ceh at ti.com
Mon Jul 20 09:56:50 EDT 2020


On 7/17/20 5:34 PM, Carlos Hernandez wrote:
>
>
> On 7/17/20 6:29 AM, Daniel Lezcano wrote:
>> On 13/07/2020 18:26, Tony Lindgren wrote:
>>> Carlos Hernandez<ceh at ti.com>  reported that we now have a suspend and
>>> resume regresssion on am3 and am4 compared to the earlier kernels. While
>>> suspend and resume works with v5.8-rc3, we now get errors with rtcwake:
>>>
>>> pm33xx pm33xx: PM: Could not transition all powerdomains to target state
>>> ...
>>> rtcwake: write error
>>>
>>> This is because we now fail to idle the system timer clocks that the
>>> idle code checks and the error gets propagated to the rtcwake.
>>>
>>> Turns out there are several issues that need to be fixed:
>>>
>>> 1. Ignore no-idle and no-reset configured timers for the ti-sysc
>>>     interconnect target driver as otherwise it will keep the system timer
>>>     clocks enabled
>>>
>>> 2. Toggle the system timer functional clock for suspend for am3 and am4
>>>     (but not for clocksource on am3)
>>>
>>> 3. Only reconfigure type1 timers in dmtimer_systimer_disable()
>>>
>>> 4. Use of_machine_is_compatible() instead of of_device_is_compatible()
>>>     for checking the SoC type
>>>
>>> Fixes: 52762fbd1c47 ("clocksource/drivers/timer-ti-dm: Add clockevent and clocksource support")
>>> Reported-by: Carlos Hernandez<ceh at ti.com>
>>> Signed-off-by: Tony Lindgren<tony at atomide.com>
>>> ---
>> Carlos, were you able to test this patch ?
>
> Tested the patch on top of 5.8-rc5.
>
> cbdb2617290d (HEAD) clocksource/drivers/timer-ti-dm: Fix suspend and 
> resume for am3 and am4
> 11ba468877bb (tag: v5.8-rc5) Linux 5.8-rc5
>
> It works on am335x-evm but fails on am437x-evm
>
> am3:
>
> [ 122.541423] PM: suspend entry (deep)
> [ 122.545498] Filesystems sync: 0.000 seconds
> [ 122.549711] PM: Preparing system for sleep (deep)
> [ 122.564217] Freezing user space processes ... (elapsed 0.003 
> seconds) done.
> [ 122.575110] OOM killer disabled.
> [ 122.578370] Freezing remaining freezable tasks ... (elapsed 0.001 
> seconds) done.
> [ 122.587604] PM: Suspending system (deep)
> [ 122.591572] printk: Suspending console(s) (use no_console_suspend to 
> debug)
> [ 122.735877] cpsw 4a100000.ethernet eth0: Link is Down
> [ 122.742365] PM: suspend of devices complete after 142.546 msecs
> [ 122.742397] PM: start suspend of devices complete after 143.777 msecs
> [ 122.748722] PM: late suspend of devices complete after 6.257 msecs
> [ 122.754662] PM: noirq suspend of devices complete after 5.632 msecs
> [ 122.754689] Disabling non-boot CPUs ...
> [ 122.754715] pm33xx pm33xx: PM: Successfully put all powerdomains to 
> target state
> [ 122.754715] PM: Wakeup source RTC Alarm
> [ 122.766169] ti-sysc 4a101200.target-module: OCP softreset timed out
> [ 122.769222] PM: noirq resume of devices complete after 14.367 msecs
> [ 122.772956] PM: early resume of devices complete after 3.428 msecs
> [ 122.775749] cpsw 4a100000.ethernet: initializing cpsw version 1.12 (0)
> [ 122.857132] Qualcomm Atheros AR8031/AR8033 4a101000.mdio:00: 
> attached PHY driver [Qualcomm Atheros AR8031/AR8033] 
> (mii_bus:phy_addr=4a101000.mdio:00, irq=POLL)
> [ 122.874236] ti-sysc 4802a000.target-module: OCP softreset timed out
> [ 122.879559] PM: Timekeeping suspended for 18.212 seconds
> [ 122.994120] PM: resume of devices complete after 221.091 msecs
> [ 123.101133] PM: Finishing wakeup.
> [ 123.104493] OOM killer enabled.
> [ 123.107657] Restarting tasks ... done.
> [ 123.168294] PM: suspend exit
> [ 126.005262] cpsw 4a100000.ethernet eth0: Link is Up - 1Gbps/Full - 
> flow control off
> [ 122.742365] PM: suspend of devices complete after 142.546 msecs
>
>
> am4:
>
> |TRACE LOG|Inside do_cmd:CMD=echo 1 > /sys/kernel/debug/pm_debug/enable_off_mode|
> |TRACE LOG|suspend function: power_state: mem|
> |TRACE LOG|suspend function: max_stime: 10|
> |TRACE LOG|suspend function: max_atime: 5|
> |TRACE LOG|suspend function: iterations: 2|
> |TRACE LOG|suspend function: usb_remove: 0|
> |TRACE LOG|suspend function: usb_module: |
> |TRACE LOG|===suspend iteration 0===|
> sh1577:1590898691->1590898692(1):: wakeup - 9 sec 0 msec
> sh1577:1590898691->1590898692(1):: Use rtc to suspend resume, adding 10 secs to suspend time
> rtcwake: wakeup from "mem" using /dev/rtc0 at Sun May 31 04:18:33 2020
> [  106.401004] PM: suspend entry (deep)
> [  106.420151] Filesystems sync: 0.015 seconds
> [  106.424598] PM: Preparing system for sleep (deep)
> [  106.434312] Freezing user space processes ... (elapsed 0.001 seconds) done.
> [  106.442808] OOM killer disabled.
> [  106.446152] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
> [  106.454894] PM: Suspending system (deep)
> [  106.458893] printk: Suspending console(s) (use no_console_suspend to debug)
> CCCCCCCC** 1196 printk messages dropped **
> [  107.379605] [<c0573bd8>] (gic_handle_irq) from [<c0100b6c>] (__irq_svc+0x6c/0x90)
> ** 41 printk messages dropped **
> [  107.412635] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W         5.8.0-rc5-00001-gcbdb2617290d #1
> ** 37 printk messages dropped **
> [  107.429822] [<c0198358>] (handle_irq_event) from [<c019cdf8>] (handle_fasteoi_irq+0xc4/0x188)
> ** 37 printk messages dropped **
> [  107.446915] [<c09573f8>] (cpu_idle_poll) from [<c016d0e4>] (do_idle+0x7c/0x2b4)
> [  107.446946] [<c016d0e4>] (do_idle) from [<c016d5d4>] (cpu_startup_entry+0x18/0x1c)
> ** 34 printk messages dropped **
> [  107.479851] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W         5.8.0-rc5-00001-gcbdb2617290d #1
> ** 42 printk messages dropped **
> [  107.497182] Exception stack(0xc0e01f10 to 0xc0e01f58)
> [  107.497202] 1f00:                                     000429e8 00000000 c0e00000 00000001
> ** 34 printk messages dropped **
> [  107.514208] ---[ end trace c18ea2591ccbc697 ]---
> [  107.524884] usb 1-1: reset high-speed USB device number 2 using xhci-hcd
> ** 34 printk messages dropped **
> [  107.547126] [<c0111b08>] (unwind_backtrace) from [<c010ba54>] (show_stack+0x10/0x14)
> [  107.547164] [<c010ba54>] (show_stack) from [<c055ad98>] (dump_stack+0xc4/0xe0)
> ** 42 printk messages dropped **
> [  107.564441] 1e60: c0e00000 00000002 ffffb4d5 c0e01e88 c013f95c c01012fc 60000153 ffffffff
> [  107.564473] [<c0100b6c>] (__irq_svc) from [<c01012fc>] (__do_softirq+0x7c/0x390)
> ** 43 printk messages dropped **
> [  107.597112] 44000000.ocp:L3 Custom Error: MASTER DSS TARGET GPMC (Read): Data Access in User mode during Functional access
> ** 34 printk messages dropped **
> [  107.614456] [<c0138a40>] (__warn) from [<c0138e08>] (warn_slowpath_fmt+0x90/0xc0)
> [  107.614491] [<c0138e08>] (warn_slowpath_fmt) from [<c057581c>] (l3_interrupt_handler+0x250/0x370)
> ** 42 printk messages dropped **
> [  107.631781] [<c016d0e4>] (do_idle) from [<c016d5d4>] (cpu_startup_entry+0x18/0x1c)
> ** 35 printk messages dropped **
> [  107.664649] Hardware name: Generic AM43 (Flattened Device Tree)
> [  107.664711] [<c0111b08>] (unwind_backtrace) from [<c010ba54>] (show_stack+0x10/0x14)
> ** 42 printk messages dropped **
> [  107.682068] 1f20: c0e00000 c0e05234 c0ec3b9c c0e05234 00000000 c0d48a40 c0d766b0 c0e055e0
> [  107.682089] 1f40: 00000000 c0e01f60 c0957380 c09573d0 20000153 ffffffff
> ** 38 printk messages dropped **
> [  107.720215] CPU: 0 PID: 1604 Comm: rtcwake Tainted: G        W         5.8.0-rc5-00001-gcbdb2617290d #1
> ** 44 printk messages dropped **
> [  107.734583] CPU: 0 PID: 1604 Comm: rtcwake Tainted: G        W         5.8.0-rc5-00001-gcbdb2617290d #1
> [  107.734594] Hardware name: Generic AM43 (Flattened Device Tree)
> ** 39 printk messages dropped **
> [  107.747964] ti-sysc 44e0b000.target-module: OCP softreset timed out
>
> -- 
> Carlos

-- 
Carlos




More information about the linux-arm-kernel mailing list