Created attachment 48442 [details]
initial dmesg output
When resuming from suspend-to-ram, I get a single blinking cursor in the upper left corner of my monitor for roughly a minute (it looks like a framebuffer console, not 80x25 console). After the minute is up, X11 returns and I have this warning in dmesg. I have attached the dmesg during suspend/resume.
[43422.427702] PM: resume of devices complete after 60806.888 msecs
[43422.427826] PM: resume devices took 60.810 seconds
[43422.427827] ------------[ cut here ]------------
[43422.427831] WARNING: at /home/kernel-ppa/COD/linux/kernel/power/suspend_test.c:53 suspend_test_finish+0x89/0x90()
[43422.427833] Hardware name: EX58-UD5
[43422.427833] Component: resume devices, time: 60810
[43422.427834] Modules linked in: ip6table_filter ip6_tables ipt_MASQUERADE binfmt_misc iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp kvm_intel kvm parport_pc ppdev radeon snd_hda_codec_hdmi snd_hda_codec_realtek ttm drm_kms_helper drm snd_hda_intel snd_hda_codec i2c_algo_bit snd_hwdep snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device snd i7core_edac edac_core soundcore snd_page_alloc serio_raw lp parport hid_apple usbhid firewire_ohci firewire_core ahci hid r8169 libahci crc_itu_t pata_jmicron
[43422.427855] Pid: 4408, comm: pm-suspend Not tainted 2.6.38-020638rc4-generic #201102081010
[43422.427857] Call Trace:
[43422.427859] [<ffffffff810a41c9>] ? suspend_test_finish+0x89/0x90
[43422.427862] [<ffffffff810a41c9>] ? suspend_test_finish+0x89/0x90
[43422.427865] [<ffffffff810642a0>] ? warn_slowpath_common+0x90/0xc0
[43422.427867] [<ffffffff810643ce>] ? warn_slowpath_fmt+0x6e/0x70
[43422.427870] [<ffffffff81037d59>] ? default_spin_lock_flags+0x9/0x10
[43422.427873] [<ffffffff812cc837>] ? kobject_put+0x27/0x60
[43422.427875] [<ffffffff813a0687>] ? put_device+0x17/0x20
[43422.427878] [<ffffffff813aa262>] ? dpm_complete+0x112/0x120
[43422.427880] [<ffffffff810a41c9>] ? suspend_test_finish+0x89/0x90
[43422.427883] [<ffffffff810a3f51>] ? suspend_devices_and_enter+0xb1/0x160
[43422.427885] [<ffffffff810a40e1>] ? enter_state+0xe1/0xf0
[43422.427887] [<ffffffff810a34a4>] ? state_store+0xb4/0xf0
[43422.427889] [<ffffffff812cc597>] ? kobj_attr_store+0x17/0x20
[43422.427891] [<ffffffff811cc26f>] ? flush_write_buffer+0x5f/0x90
[43422.427893] [<ffffffff811cc6a6>] ? sysfs_write_file+0x66/0xa0
[43422.427896] [<ffffffff8115ea6c>] ? vfs_write+0xcc/0x180
[43422.427897] [<ffffffff8115f0c5>] ? sys_write+0x55/0x90
[43422.427899] [<ffffffff8100c002>] ? system_call_fastpath+0x16/0x1b
[43422.427901] ---[ end trace d273af22dde85b81 ]---
[43422.427929] PM: Finishing wakeup.
I did not see this problem when running Ubuntu 9.04, 10.04, or 10.10 kernels. It only started after moving to mainline kernels for other debugging. I used pre-compiled packages: http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.38-rc4-natty/
I run x86-64.
The warning only means that resume takes more time than it probably
should. If you want it to go away, please unset
CONFIG_PM_TEST_SUSPEND in your kernel .config.
However, it shows that the resume of devices on your system took about
1 minute, which is really too much (should be about 5 sec.).
Probably one of the device drivers takes much time to resume and you can
figure out which one by booting with initcall_debug in the kernel command
line and checking dmesg output after a suspend/resume cycle.
Created attachment 48472 [details]
dmesg with initcall_debug
Yes, five seconds is about how long it used to take to resume before upgrading. (Still takes around sixty seconds with -rc5 as well, so version number updated.)
Rafael, thanks to your suggestion, I found that the problem was due to missing RTL8169 firmware: http://kerneltrap.org/mailarchive/linux-netdev/2011/1/4/6292795
Simply copying the correct firmware from dwmw2's linux-firmware git repository into /lib/firmware/ fixed the problem!
dwmw2's repository information: http://lwn.net/Articles/294308/
I'm closing this with INVALID just because it appears all the code is there, it just needed firmware files. Reasonable enough.