[RFC 00/15] Add basic suspend-resume support for AM33XX
Daniel Mack
zonque at gmail.com
Fri Nov 2 18:16:53 EDT 2012
On 02.11.2012 13:32, Vaibhav Bedia wrote:
> This patch series adds support for suspend-resume on AM33XX.
Thanks a lot for working on this!
[...]
> [root at arago /]# echo 1 > ./sys/devices/ocp.2/wkup_m3.4/firmware/am335x-pm-firmware.bin/loading
> [root at arago /]# cat binary_blob > ./sys/devices/ocp.2/wkup_m3.4/firmware/am335x-pm-firmware.bin/data
> [root at arago /]# echo 0 > ./sys/devices/ocp.2/wkup_m3.4/firmware/am335x-pm-firmware.bin/loading
> [ 28.770356] Copied the M3 firmware to UMEM
> [ 28.778178] omap_hwmod: wkup_m3: _wait_target_disable failed
> [root at arago /]# echo mem > /sys/power/state
> [ 32.959753] PM: Syncing filesystems ... done.
> [ 32.988434] Freezing user space processes ... (elapsed 0.02 seconds) done.
> [ 33.016120] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
> [ 33.047607] Suspending console(s) (use no_console_suspend to debug)
> [ 33.070420] PM: suspend of devices complete after 11.538 msecs
> [ 33.074095] PM: late suspend of devices complete after 3.651 msecs
> [ 33.079135] PM: noirq suspend of devices complete after 5.011 msecs
> [ 33.079196] Disabling non-boot CPUs ...
> [ 33.083923] GFX domain entered low power state
> [ 33.083973] Successfully transitioned to low power state
> [ 33.087132] PM: noirq resume of devices complete after 2.663 msecs
> [ 33.090629] PM: early resume of devices complete after 2.346 msecs
> [ 33.097607] PM: resume of devices complete after 6.951 msecs
> [ 33.155869] Restarting tasks ... done.
> [root at arago /]#
>
> All the patches have been run through checkpatch and i have also
> tried a few OMAP build configs that Paul uses to ensure that these
> patches do not introduce any new build warnings/errors for the OMAP
> family.
>
> A few TODOs
> 0. Test all the patches on OMAP platforms like BeagleBoard
I'm testing this on a custom AM33xx board, and with
"no_console_suspend", I get the following:
# echo mem >/sys/power/state
[ 27.306144] PM: Syncing filesystems ... done.
[ 27.335524] Freezing user space processes ... (elapsed 0.01 seconds)
done.
[ 27.361603] Freezing remaining freezable tasks ... (elapsed 0.02
seconds) done.
[ 27.408269] ------------[ cut here ]------------
[ 27.413147] WARNING: at drivers/net/ethernet/ti/cpsw.c:298
cpsw_rx_handler+0xbd/0xdc()
[ 27.421438] Modules linked in: ipv6
[ 27.425158] [<c0010d85>] (unwind_backtrace+0x1/0x9c) from
[<c0319f77>] (dump_stack+0xb/0xc)
[ 27.433932] [<c0319f77>] (dump_stack+0xb/0xc) from [<c00266a3>]
(warn_slowpath_common+0x33/0x48)
[ 27.443149] [<c00266a3>] (warn_slowpath_common+0x33/0x48) from
[<c00266c9>] (warn_slowpath_null+0x11/0x14)
[ 27.453273] [<c00266c9>] (warn_slowpath_null+0x11/0x14) from
[<c020f4b9>] (cpsw_rx_handler+0xbd/0xdc)
[ 27.462943] [<c020f4b9>] (cpsw_rx_handler+0xbd/0xdc) from
[<c020d773>] (__cpdma_chan_free+0x83/0x90)
[ 27.472519] [<c020d773>] (__cpdma_chan_free+0x83/0x90) from
[<c020d815>] (__cpdma_chan_process+0x95/0xb8)
[ 27.482550] [<c020d815>] (__cpdma_chan_process+0x95/0xb8) from
[<c020d8ff>] (cpdma_chan_stop+0x93/0x110)
[ 27.492490] [<c020d8ff>] (cpdma_chan_stop+0x93/0x110) from
[<c020d9ab>] (cpdma_ctlr_stop+0x2f/0x6c)
[ 27.501975] [<c020d9ab>] (cpdma_ctlr_stop+0x2f/0x6c) from
[<c020f033>] (cpsw_ndo_stop+0x2b/0x128)
[ 27.511278] [<c020f033>] (cpsw_ndo_stop+0x2b/0x128) from [<c020f145>]
(cpsw_suspend+0x15/0x20)
[ 27.520311] [<c020f145>] (cpsw_suspend+0x15/0x20) from [<c01cce83>]
(platform_pm_suspend+0x13/0x28)
[ 27.529809] [<c01cce83>] (platform_pm_suspend+0x13/0x28) from
[<c01cfb8b>] (dpm_run_callback.clone.6+0x1f/0x78)
[ 27.540390] [<c01cfb8b>] (dpm_run_callback.clone.6+0x1f/0x78) from
[<c01d0337>] (__device_suspend+0xb3/0x168)
[ 27.550789] [<c01d0337>] (__device_suspend+0xb3/0x168) from
[<c01d0a3d>] (dpm_suspend+0x45/0x178)
[ 27.560095] [<c01d0a3d>] (dpm_suspend+0x45/0x178) from [<c01d0d15>]
(dpm_suspend_start+0x39/0x44)
[ 27.569404] [<c01d0d15>] (dpm_suspend_start+0x39/0x44) from
[<c0046fdd>] (suspend_devices_and_enter+0x31/0x148)
[ 27.579981] [<c0046fdd>] (suspend_devices_and_enter+0x31/0x148) from
[<c0047203>] (pm_suspend+0x10f/0x170)
[ 27.590103] [<c0047203>] (pm_suspend+0x10f/0x170) from [<c004693f>]
(state_store+0x43/0x7c)
[ 27.598870] [<c004693f>] (state_store+0x43/0x7c) from [<c019500d>]
(kobj_attr_store+0x9/0x10)
[ 27.607828] [<c019500d>] (kobj_attr_store+0x9/0x10) from [<c00cdb2d>]
(sysfs_write_file+0xb5/0x104)
[ 27.617319] [<c00cdb2d>] (sysfs_write_file+0xb5/0x104) from
[<c008cb5b>] (vfs_write+0x77/0x110)
[ 27.626442] [<c008cb5b>] (vfs_write+0x77/0x110) from [<c008cd75>]
(sys_write+0x2d/0x48)
[ 27.634844] [<c008cd75>] (sys_write+0x2d/0x48) from [<c000cfc1>]
(ret_fast_syscall+0x1/0x50)
[ 27.643683] ---[ end trace f2a0c58ea7742606 ]---
[ 27.650834] PM: suspend of devices complete after 253.597 msecs
[ 27.660392] PM: late suspend of devices complete after 3.253 msecs
[ 27.674504] omap_hwmod: cpgmac0: _wait_target_disable failed
And the power consumption does not drop noticable at this point.
What event did you use to bring the system back to life? I tried a GPIO
button which has "linux,wakeup" set and is connected to GPIO bank 0, but
without success.
Thanks,
Daniel
More information about the linux-arm-kernel
mailing list