Thread (1 message) 1 message, 1 author, 2008-02-03

Re: sleepy linux self-test

From: Ingo Molnar <hidden>
Date: 2008-02-03 05:54:29

* Ingo Molnar [off-list ref] wrote:
 [   23.893598] Calling initcall 0xc0c518b0: be_sleepy+0x0/0x170()
 [   23.901601] PM: no wakelarm-capable RTC
 [   23.905599] initcall 0xc0c518b0: be_sleepy+0x0/0x170() returned 0.
 [   23.910879] initcall 0xc0c518b0 ran for 3 msecs: be_sleepy+0x0/0x170()

so close, yet so far away :-)
good news: the suspend+resume self-test works perfectly now! :-)

[   24.018541] Calling initcall 0xc0c70a40: be_sleepy+0x0/0x170()
[   24.023780] PM: wakealarm test with Suspend-to-RAM
[   24.027503] PM: Syncing filesystems ... done.
[   24.032177] PM: Preparing system for mem sleep
[   .........]
[   30.317160] initcall 0xc0c70a40: be_sleepy+0x0/0x170() returned 0.
[   30.321593] initcall 0xc0c70a40 ran for 6289 msecs: be_sleepy+0x0/0x170()

that's a successful suspend+resume cycle, all automatic!

now, this was _totally_ non-obvious to set up. (config attached) I had 
the (surely incorrect) impression that the new RTC code does everything 
it can to keep itself not used ;-) It did not complain that it's not the 
default RTC driver, and it did not complain that it's configured in a 
way that makes it functionally inferior.

Please dont be that shy and give us a really prominent option that does 
something like:

   CONFIG_USE_THE_COOL_NEW_RTC_CODE=y

with all its bells and whistles, and punch out the old 
drivers/char/rtc.c RTC driver if this option is enabled. Believe me, 
people _want_ to run your code on all the PC distros too. (and as a 
side-effect all the non-PC platforms are helped too)

Small feature request: could you please measure the duration 
suspend+resume cycle and print out the result to the kernel console like 
this:

   INFO: suspend+resume test succeeded and took 1.289 seconds.

such a message would be useful in flagging suspend+resume delay 
regressions. (and to automate the bisection of such regressions, etc.) 
(Please keep the millioseconds portion too - that way i can follow the 
finer details of suspend+resume performance over time as well.)
 
For example recently someone introduced a 5-10 seconds delay into the 
suspend+resume cycle (yeah, that bloke was me), so it would also be nice 
to add some hard limit on how much it takes:

   WARNING: suspend+resume test took more than 5 seconds.

and print a stack trace via WARN_ON(1), so that kerneloops.org can pick 
up such regressions immediately. This would be dependent on this 
self-test option.

please also rename CONFIG_PM_WAKEALARM_TEST to something more 
descriptive, such as: CONFIG_SUSPEND_SELF_TEST=y.

another set of small usability feature requests: please also add a boot 
option to disable/enable the suspend self-test, and allow the test to be 
built into the kernel but disabled by default. Perhaps even a sysctl to 
activate it runtime. That way distros can build it in by default but can 
keep it disabled.

	Ingo

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help