Bug 42941

Summary: Resume from suspend to memory leaves display blank on Lenovo Ideapad U455
Product: Drivers Reporter: Igor Murzov (e-mail)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: NEW ---    
Severity: normal CC: coolx67, drivers_video-dri, lenb
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.3.0-rc7+ Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg output
output of lspci -vvv

Description Igor Murzov 2012-03-16 18:39:49 UTC
Created attachment 72610 [details]
dmesg output

Hardware: Lenovo Ideapad U455 laptop with AMD Athlon Neo processor and two video cards: Radeon HD 3200 and Radeon HD 4500.

Description: when system resumes from suspend to memory (`echo mem > /sys/power/state`) system resumes fine as i can log into it via ssh and display turns on, but the display stays black showing nothing. However it's possible to make display show a picture by switching video cards with vga_switcheroo.

Steps to reproduce attached dmesg log (see my comments below):
[1]# mount -t debugfs none /sys/kernel/debug
[2]# cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:01:05.0
1:DIS: :Pwr:0000:02:00.0
[3]# echo mem > /sys/power/state
[4]# cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:01:05.0
1:DIS: :Pwr:0000:02:00.0
[5]# echo DIS > /sys/kernel/debug/vgaswitcheroo/switch
[6]# echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
[7]# cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:01:05.0
1:DIS: :Off:0000:02:00.0
[8]# echo mem > /sys/power/state
[9]# cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:01:05.0
1:DIS: :Off:0000:02:00.0
[10]# echo DIS > /sys/kernel/debug/vgaswitcheroo/switch
[11]# echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

Comments:
[2] This shows the state of the video cards before suspend.
[3] Suspend worked fine, but display was blank after resume.
[4] This shows the state of the video cards after resume.
[5] That command made display to show the picture.
[7] This shows the state of the video cards before second suspend, when only IGD card was active.
[8] Suspend worked fine, but resume took a lot of time:
 PM: resume devices took 82.256 seconds
 ------------[ cut here ]------------
 WARNING: at kernel/power/suspend_test.c:53 suspend_test_finish+0x86/0x90()
 Hardware name: 20046                           
 Component: resume devices, time: 82256
 Modules linked in: btusb bluetooth snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss ipv6 ext2 mbcache cpufreq_ondemand powernow_k8 freq_table mperf lp parport_pc parport fuse radeon brcmsmac ttm mac80211 drm_kms_helper joydev snd_hda_codec_hdmi ohci_hcd snd_hda_codec_conexant brcmutil ssb snd_hda_intel drm mmc_core snd_hda_codec sp5100_tco cfg80211 sg ideapad_laptop agpgart psmouse atl1c thermal snd_hwdep processor video crc8 thermal_sys pcmcia snd_pcm snd_timer cordic rtc_cmos pcmcia_core shpchp sparse_keymap evdev ehci_hcd i2c_piix4 snd k8temp i2c_algo_bit bcma rfkill i2c_core serio_raw soundcore snd_page_alloc battery ac hwmon button loop btrfs [last unloaded: pcmcia_rsrc]
 Pid: 1834, comm: bash Not tainted 3.3.0-rc7+ #36
 Call Trace:
  [<ffffffff8103fe3f>] warn_slowpath_common+0x7f/0xc0
  [<ffffffff8103ff36>] warn_slowpath_fmt+0x46/0x50
  [<ffffffff8107fc96>] suspend_test_finish+0x86/0x90
  [<ffffffff8107f9a1>] suspend_devices_and_enter+0x101/0x1e0
  [<ffffffff8107fb51>] enter_state+0xd1/0x110
  [<ffffffff8107e4c7>] state_store+0xb7/0x130
  [<ffffffff812623cf>] kobj_attr_store+0xf/0x30
  [<ffffffff811b0d22>] sysfs_write_file+0xf2/0x180
  [<ffffffff81149793>] vfs_write+0xb3/0x180
  [<ffffffff81149aba>] sys_write+0x4a/0x90
  [<ffffffff8153f829>] system_call_fastpath+0x16/0x1b
 ---[ end trace 6802c35567ce73fa ]---
 PM: Finishing wakeup.

[9] This shows the state of the video cards after second resume.
[10] That command turned display off and that's what appeared in dmesg output:
 radeon: switched on
 radeon 0000:02:00.0: enabling device (0000 -> 0003)
 radeon 0000:02:00.0: Wait for MC idle timedout !
 radeon 0000:02:00.0: Wait for MC idle timedout !
 [drm] PCIE GART of 512M enabled (table at 0x0000000000040000).
 radeon 0000:02:00.0: WB enabled
 [drm] fence driver on ring 0 use gpu addr 0x20000c00 and cpu addr 0xffff8800a4523c00
 [drm:r600_ring_test] *ERROR* radeon: ring 0 test failed (scratch(0x8500)=0xFFFFFFFF)
 [drm:rv770_resume] *ERROR* r600 startup failed on resume
 fbcon: Remapping primary device, fb1, to tty 1-63
 radeon: switched off
[11] That command made display to show the picture.

Notes:
* I have read Documentation/power/basic-pm-debugging.txt and made all described tests and all of them were successful.
* I have tried different quirks with `pm-suspend --quirk-*`, but none of them helped.
Comment 1 Igor Murzov 2012-03-16 18:43:00 UTC
Created attachment 72611 [details]
output of lspci -vvv
Comment 2 Len Brown 2012-03-27 02:06:15 UTC
1:05.0 VGA compatible controller: ATI Technologies Inc RS780M/RS780MN [Radeon HD 3200 Graphics] (prog-if 00 [VGA controller])

The AMD Radeon driver is responsible for resuming graphics on this platform.
Comment 3 roman 2018-03-07 12:47:42 UTC
Does this still happen??