kernel-testers.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found] <20090129125855.GA4597@alice>
@ 2009-01-29 22:12 ` Rafael J. Wysocki
       [not found]   ` <200901292312.44884.rjw-KKrjLPT3xs0@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Rafael J. Wysocki @ 2009-01-29 22:12 UTC (permalink / raw)
  To: Eric Sesterhenn
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

On Thursday 29 January 2009, Eric Sesterhenn wrote:
> hi,
> 
> on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> 
> Dmesg of startup
> http://www.cccmz.de/~snakebyte/200.log
> .config
> http://www.cccmz.de/~snakebyte/config_200
> 
> When testing the devices 
> 
> root@computer-desktop:/sys/power# echo devices > pm_test 

What happens if you replace 'devices' with 'core' ?

If the same, what happens without the matroxfb driver?

> root@computer-desktop:/sys/power# echo standby > state
> 
> I get this message: 
> 
> [  174.177445] PM: Preparing system for standby sleep
> [  174.182706] Freezing user space processes ... (elapsed 0.00 seconds) done.
> [  174.186096] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
> [  174.186903] PM: Entering standby sleep
> [  174.620476] sd 2:0:0:0: [sda] Synchronizing SCSI cache
> [  174.621453] sd 2:0:0:0: [sda] Stopping disk
> [  174.743784] serial 00:08: disabled
> [  174.744389] matroxfb 0000:01:00.0: PCI INT A disabled
> 
> and the system does not seem to properly suspend / neither wakeup
> 
> root@computer-desktop:~# lspci
> 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
> 00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
> 00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)
> 00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
> 00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
> 00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02)
> 00:0a.0 Ethernet controller: Intel Corporation 82556 EtherExpress PRO/100 Smart (rev 03)
> 00:0c.0 SCSI storage controller: Adaptec AIC-7861 (rev 03)
> 00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
> 00:12.0 Multimedia audio controller: Rockwell International Device 4310
> 00:12.1 Communication controller: Rockwell International Riptide HSF 56k PCI Modem
> 00:12.2 Input device controller: Rockwell International Device 4312
> 01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200 AGP (rev 03)
> 
> root@computer-desktop:~# lsmod
> Module                  Size  Used by
> nfsd                  217580  13 
> exportfs                4608  1 nfsd
> nfs                   253896  1 
> lockd                  66984  2 nfsd,nfs
> nfs_acl                 3328  2 nfsd,nfs
> auth_rpcgss            36160  2 nfsd,nfs
> sunrpc                185716  16 nfsd,nfs,lockd,nfs_acl,auth_rpcgss
> ipv6                  252276  10 
> fuse                   54188  1 
> unix                   25404  96
> 
> root@computer-desktop:/usr/src/linux# cat /proc/cpuinfo 
> processor	: 0
> vendor_id	: GenuineIntel
> cpu family	: 6
> model		: 8
> model name	: Pentium III (Coppermine)
> stepping	: 3
> cpu MHz		: 697.840
> cache size	: 256 KB
> fdiv_bug	: no
> hlt_bug		: no
> f00f_bug	: no
> coma_bug	: no
> fpu		: yes
> fpu_exception	: yes
> cpuid level	: 2
> wp		: yes
> flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
> bogomips	: 1395.68
> clflush size	: 32
> power management:
> 
> 
> After PM_VERBOSE enabled the log changes to this:
> 
> [ 1968.407273] PM: Syncing filesystems ... done.
> [ 1968.424490] PM: Preparing system for standby sleep
> [ 1968.431142] Freezing user space processes ... (elapsed 0.00 seconds) done.
> [ 1968.434866] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
> [ 1968.435887] PM: Entering standby sleep
> [ 1968.436580] agpgart-intel 0000:00:00.0: preparing suspend
> [ 1968.436683] pci 0000:00:01.0: preparing suspend
> [ 1968.436788] pci 0000:00:07.0: preparing suspend
> [ 1968.436877] ata_piix 0000:00:07.1: preparing suspend
> [ 1968.436998] uhci_hcd 0000:00:07.2: preparing suspend
> [ 1968.437091] piix4_smbus 0000:00:07.3: preparing suspend
> [ 1968.437213] pci 0000:00:0a.0: preparing suspend
> [ 1968.437301] aic7xxx 0000:00:0c.0: preparing suspend
> [ 1968.437420] 8139too 0000:00:0e.0: preparing suspend
> [ 1968.437511] RIPTIDE 0000:00:12.0: preparing suspend
> [ 1968.437617] pci 0000:00:12.1: preparing suspend
> [ 1968.437705] pci 0000:00:12.2: preparing suspend
> [ 1968.437807] matroxfb 0000:01:00.0: preparing suspend
> [ 1968.438056] platform pcspkr: preparing suspend
> [ 1968.438166] platform microcode: preparing suspend
> [ 1968.438321] vga16fb vga16fb.0: preparing suspend
> [ 1968.442065] serial8250 serial8250: preparing suspend
> [ 1968.442857] usb usb1: preparing type suspend, may wakeup
> [ 1968.442995] i8042 i8042: preparing suspend
> [ 1968.443144] rtc-test rtc-test.0: preparing suspend
> [ 1968.443256] rtc-test rtc-test.1: preparing suspend
> [ 1968.443785] ac97 0-0:unknown codec: legacy suspend
> [ 1968.443960] fschmd 3-0073: legacy suspend
> [ 1968.444151] rtc rtc2: legacy class suspend
> [ 1968.444252] rtc-test rtc-test.1: suspend
> [ 1968.444351] rtc rtc1: legacy class suspend
> [ 1968.444501] rtc-test rtc-test.0: suspend
> [ 1968.444638] rtc rtc0: legacy class suspend
> [ 1968.444883] atkbd serio0: legacy suspend
> [ 1968.872096] i8042 i8042: suspend
> [ 1968.872384] usb usb1: type suspend, may wakeup
> [ 1968.872581] sd 2:0:0:0: legacy suspend
> [ 1968.872881] sd 2:0:0:0: [sda] Synchronizing SCSI cache
> [ 1968.873883] sd 2:0:0:0: [sda] Stopping disk
> [ 1968.992131] scsi 1:0:0:0: legacy suspend
> [ 1968.992852] serial8250 serial8250: suspend
> [ 1968.992997] drm card0: legacy class suspend
> [ 1968.996728] vga16fb vga16fb.0: suspend
> [ 1968.996920] platform microcode: suspend
> [ 1968.997059] platform pcspkr: suspend
> [ 1968.997256] serial 00:08: legacy suspend
> [ 1968.998043] serial 00:08: disabled
> [ 1968.998213] pnp 00:07: legacy suspend
> [ 1968.998343] i8042 kbd 00:06: legacy suspend
> [ 1968.998498] pnp 00:05: legacy suspend
> [ 1968.998626] pnp 00:04: legacy suspend
> [ 1968.998754] rtc_cmos 00:03: legacy suspend, may wakeup
> [ 1968.998980] pnp 00:02: legacy suspend
> [ 1968.999109] system 00:01: legacy suspend
> [ 1968.999262] pnp 00:00: legacy suspend
> [ 1968.999410] matroxfb 0000:01:00.0: suspend
> [ 1968.999737] matroxfb 0000:01:00.0: PCI INT A disabled
> 
> I am not sure if a bisection makes sense
> with all those suspend bugs.

No, it doesn't. :-(

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found]   ` <200901292312.44884.rjw-KKrjLPT3xs0@public.gmane.org>
@ 2009-01-30 12:46     ` Eric Sesterhenn
  2009-01-30 21:15       ` Rafael J. Wysocki
  0 siblings, 1 reply; 12+ messages in thread
From: Eric Sesterhenn @ 2009-01-30 12:46 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

* Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > hi,
> > 
> > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > 
> > Dmesg of startup
> > http://www.cccmz.de/~snakebyte/200.log
> > .config
> > http://www.cccmz.de/~snakebyte/config_200
> > 
> > When testing the devices 
> > 
> > root@computer-desktop:/sys/power# echo devices > pm_test 
> 
> What happens if you replace 'devices' with 'core' ?

no change, it hangs after matroxfb

root@computer-desktop:/sys/power# echo core > pm_test 
root@computer-desktop:/sys/power# echo standby > state

[  220.808462] PM: Syncing filesystems ... done.
[  220.825735] PM: Preparing system for standby sleep
[  220.832295] Freezing user space processes ... (elapsed 0.00 seconds)
done.
[  220.835975] Freezing remaining freezable tasks ... (elapsed 0.00
seconds) done.
[  220.837080] PM: Entering standby sleep
[  220.837709] agpgart-intel 0000:00:00.0: preparing suspend
[  220.837816] pci 0000:00:01.0: preparing suspend
[  220.837925] pci 0000:00:07.0: preparing suspend
[  220.838018] ata_piix 0000:00:07.1: preparing suspend
[  220.838141] uhci_hcd 0000:00:07.2: preparing suspend
[  220.838238] piix4_smbus 0000:00:07.3: preparing suspend
[  220.838363] pci 0000:00:0a.0: preparing suspend
[  220.838455] aic7xxx 0000:00:0c.0: preparing suspend
[  220.838577] 8139too 0000:00:0e.0: preparing suspend
[  220.838672] RIPTIDE 0000:00:12.0: preparing suspend
[  220.838794] pci 0000:00:12.1: preparing suspend
[  220.838886] pci 0000:00:12.2: preparing suspend
[  220.838992] matroxfb 0000:01:00.0: preparing suspend
[  220.839246] platform pcspkr: preparing suspend
[  220.839360] platform microcode: preparing suspend
[  220.839518] vga16fb vga16fb.0: preparing suspend
[  220.843272] serial8250 serial8250: preparing suspend
[  220.844125] usb usb1: preparing type suspend, may wakeup
[  220.844269] i8042 i8042: preparing suspend
[  220.844417] rtc-test rtc-test.0: preparing suspend
[  220.844533] rtc-test rtc-test.1: preparing suspend
[  220.845060] ac97 0-0:unknown codec: legacy suspend
[  220.845241] fschmd 3-0073: legacy suspend
[  220.845374] rtc rtc2: legacy class suspend
[  220.845478] rtc-test rtc-test.1: suspend
[  220.845580] rtc rtc1: legacy class suspend
[  220.845735] rtc-test rtc-test.0: suspend
[  220.845870] rtc rtc0: legacy class suspend
[  220.846122] serio serio0: legacy suspend
[  220.846324] i8042 i8042: suspend
[  220.846774] usb usb1: type suspend, may wakeup
[  220.846976] sd 2:0:0:0: legacy suspend
[  220.847282] sd 2:0:0:0: [sda] Synchronizing SCSI cache
[  220.848305] sd 2:0:0:0: [sda] Stopping disk
[  220.965924] scsi 1:0:0:0: legacy suspend
[  220.966646] serial8250 serial8250: suspend
[  220.966798] drm card0: legacy class suspend
[  220.970528] vga16fb vga16fb.0: suspend
[  220.970724] platform microcode: suspend
[  220.970869] platform pcspkr: suspend
[  220.971072] serial 00:08: legacy suspend
[  220.971871] serial 00:08: disabled
[  220.972110] pnp 00:07: legacy suspend
[  220.972249] i8042 kbd 00:06: legacy suspend
[  220.972413] pnp 00:05: legacy suspend
[  220.972547] pnp 00:04: legacy suspend
[  220.972681] rtc_cmos 00:03: legacy suspend, may wakeup
[  220.972914] pnp 00:02: legacy suspend
[  220.973050] system 00:01: legacy suspend
[  220.973209] pnp 00:00: legacy suspend
[  220.973363] matroxfb 0000:01:00.0: suspend
[  220.973694] matroxfb 0000:01:00.0: PCI INT A disabled

> If the same, what happens without the matroxfb driver?

It gets a bit further, suspend seems to complete,
but hangs during resume


[  753.618066] PM: Syncing filesystems ... done.
[  753.643958] PM: Preparing system for standby sleep
[  753.660491] Freezing user space processes ... (elapsed 0.00 seconds)
done.
[  753.664452] Freezing remaining freezable tasks ... (elapsed 0.00
seconds) done.
[  753.665783] PM: Entering standby sleep
[  753.666556] agpgart-intel 0000:00:00.0: preparing suspend
[  753.666777] pci 0000:00:01.0: preparing suspend
[  753.666987] pci 0000:00:07.0: preparing suspend
[  753.667185] ata_piix 0000:00:07.1: preparing suspend
[  753.667420] uhci_hcd 0000:00:07.2: preparing suspend
[  753.667625] piix4_smbus 0000:00:07.3: preparing suspend
[  753.667863] pci 0000:00:0a.0: preparing suspend
[  753.668131] aic7xxx 0000:00:0c.0: preparing suspend
[  753.668337] 8139too 0000:00:0e.0: preparing suspend
[  753.668569] RIPTIDE 0000:00:12.0: preparing suspend
[  753.668771] pci 0000:00:12.1: preparing suspend
[  753.668982] pci 0000:00:12.2: preparing suspend
[  753.669179] pci 0000:01:00.0: preparing suspend
[  753.669539] platform pcspkr: preparing suspend
[  753.669756] platform microcode: preparing suspend
[  753.669993] vga16fb vga16fb.0: preparing suspend
[  753.674075] serial8250 serial8250: preparing suspend
[  753.675018] usb usb1: preparing type suspend, may wakeup
[  753.675272] i8042 i8042: preparing suspend
[  753.675528] rtc-test rtc-test.0: preparing suspend
[  753.675753] rtc-test rtc-test.1: preparing suspend
[  753.676448] ac97 0-0:unknown codec: legacy suspend
[  753.676740] fschmd 0-0073: legacy suspend
[  753.676955] rtc rtc2: legacy class suspend
[  753.677166] rtc-test rtc-test.1: suspend
[  753.677365] rtc rtc1: legacy class suspend
[  753.683332] rtc-test rtc-test.0: suspend
[  753.689205] rtc rtc0: legacy class suspend
[  753.694915] atkbd serio0: legacy suspend
[  754.128100] i8042 i8042: suspend
[  754.133805] usb usb1: type suspend, may wakeup
[  754.139399] sd 2:0:0:0: legacy suspend
[  754.145221] sd 2:0:0:0: [sda] Synchronizing SCSI cache
[  754.151717] sd 2:0:0:0: [sda] Stopping disk
[  754.274990] scsi 1:0:0:0: legacy suspend
[  754.281243] serial8250 serial8250: suspend
[  754.286805] drm card0: legacy class suspend
[  754.296202] vga16fb vga16fb.0: suspend
[  754.301830] platform microcode: suspend
[  754.307463] platform pcspkr: suspend
[  754.313077] serial 00:08: legacy suspend
[  754.319331] serial 00:08: disabled
[  754.324945] pnp 00:07: legacy suspend
[  754.330555] i8042 kbd 00:06: legacy suspend
[  754.336173] pnp 00:05: legacy suspend
[  754.341726] pnp 00:04: legacy suspend
[  754.347186] rtc_cmos 00:03: legacy suspend, may wakeup
[  754.352794] pnp 00:02: legacy suspend
[  754.358162] system 00:01: legacy suspend
[  754.363547] pnp 00:00: legacy suspend
[  754.368987] pci 0000:01:00.0: suspend
[  754.374641] pci 0000:01:00.0: PCI INT A disabled
[  754.396162] pci 0000:00:12.2: suspend
[  754.416089] pci 0000:00:12.1: suspend
[  754.436088] RIPTIDE 0000:00:12.0: suspend
[  754.442619] RIPTIDE 0000:00:12.0: PCI INT A disabled
[  754.448788] ACPI handle has no context!
[  754.468088] 8139too 0000:00:0e.0: suspend
[  760.226866] ata2.00: ACPI cmd c6/00:10:00:00:00:a0 succeeded
[  760.238259] RIPTIDE 0000:00:12.0: resume
[  760.249475] ata2.00: ACPI cmd 91/00:3f:00:00:00:af succeeded
[  760.264115] RIPTIDE 0000:00:12.0: restoring config space at offset
0xf (was 0x1ff, writing 0x10b)
[  760.286261] RIPTIDE 0000:00:12.0: restoring config space at offset
0x4 (was 0x1, writing 0xe001)
[  760.308472] RIPTIDE 0000:00:12.0: restoring config space at offset
0x3 (was 0x800000, writing 0x804000)
[  760.331698] RIPTIDE 0000:00:12.0: restoring config space at offset
0x1 (was 0x2900000, writing 0x2900101)
[  760.355924] RIPTIDE 0000:00:12.0: PCI INT A -> Link[LNKA] -> GSI 11
(level, low) -> IRQ 11
[  761.042233] pci 0000:00:12.1: resume
[  761.054092] pci 0000:00:12.1: PME# disabled
[  761.065818] pci 0000:00:12.2: resume
[  761.076931] pci 0000:00:12.2: PME# disabled
[  761.087950] pci 0000:01:00.0: resume
[  761.098465] pci 0000:01:00.0: PME# disabled
[  761.108609] ata2.00: configured for UDMA/33
[  761.124376] pci 0000:01:00.0: enabling device (0000 -> 0002)

Greetings, Eric

> > root@computer-desktop:/sys/power# echo standby > state
> > 
> > I get this message: 
> > 
> > [  174.177445] PM: Preparing system for standby sleep
> > [  174.182706] Freezing user space processes ... (elapsed 0.00 seconds) done.
> > [  174.186096] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
> > [  174.186903] PM: Entering standby sleep
> > [  174.620476] sd 2:0:0:0: [sda] Synchronizing SCSI cache
> > [  174.621453] sd 2:0:0:0: [sda] Stopping disk
> > [  174.743784] serial 00:08: disabled
> > [  174.744389] matroxfb 0000:01:00.0: PCI INT A disabled
> > 
> > and the system does not seem to properly suspend / neither wakeup
> > 
> > root@computer-desktop:~# lspci
> > 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
> > 00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
> > 00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)
> > 00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
> > 00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
> > 00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02)
> > 00:0a.0 Ethernet controller: Intel Corporation 82556 EtherExpress PRO/100 Smart (rev 03)
> > 00:0c.0 SCSI storage controller: Adaptec AIC-7861 (rev 03)
> > 00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
> > 00:12.0 Multimedia audio controller: Rockwell International Device 4310
> > 00:12.1 Communication controller: Rockwell International Riptide HSF 56k PCI Modem
> > 00:12.2 Input device controller: Rockwell International Device 4312
> > 01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200 AGP (rev 03)
> > 
> > root@computer-desktop:~# lsmod
> > Module                  Size  Used by
> > nfsd                  217580  13 
> > exportfs                4608  1 nfsd
> > nfs                   253896  1 
> > lockd                  66984  2 nfsd,nfs
> > nfs_acl                 3328  2 nfsd,nfs
> > auth_rpcgss            36160  2 nfsd,nfs
> > sunrpc                185716  16 nfsd,nfs,lockd,nfs_acl,auth_rpcgss
> > ipv6                  252276  10 
> > fuse                   54188  1 
> > unix                   25404  96
> > 
> > root@computer-desktop:/usr/src/linux# cat /proc/cpuinfo 
> > processor	: 0
> > vendor_id	: GenuineIntel
> > cpu family	: 6
> > model		: 8
> > model name	: Pentium III (Coppermine)
> > stepping	: 3
> > cpu MHz		: 697.840
> > cache size	: 256 KB
> > fdiv_bug	: no
> > hlt_bug		: no
> > f00f_bug	: no
> > coma_bug	: no
> > fpu		: yes
> > fpu_exception	: yes
> > cpuid level	: 2
> > wp		: yes
> > flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
> > bogomips	: 1395.68
> > clflush size	: 32
> > power management:
> > 
> > 
> > After PM_VERBOSE enabled the log changes to this:
> > 
> > [ 1968.407273] PM: Syncing filesystems ... done.
> > [ 1968.424490] PM: Preparing system for standby sleep
> > [ 1968.431142] Freezing user space processes ... (elapsed 0.00 seconds) done.
> > [ 1968.434866] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
> > [ 1968.435887] PM: Entering standby sleep
> > [ 1968.436580] agpgart-intel 0000:00:00.0: preparing suspend
> > [ 1968.436683] pci 0000:00:01.0: preparing suspend
> > [ 1968.436788] pci 0000:00:07.0: preparing suspend
> > [ 1968.436877] ata_piix 0000:00:07.1: preparing suspend
> > [ 1968.436998] uhci_hcd 0000:00:07.2: preparing suspend
> > [ 1968.437091] piix4_smbus 0000:00:07.3: preparing suspend
> > [ 1968.437213] pci 0000:00:0a.0: preparing suspend
> > [ 1968.437301] aic7xxx 0000:00:0c.0: preparing suspend
> > [ 1968.437420] 8139too 0000:00:0e.0: preparing suspend
> > [ 1968.437511] RIPTIDE 0000:00:12.0: preparing suspend
> > [ 1968.437617] pci 0000:00:12.1: preparing suspend
> > [ 1968.437705] pci 0000:00:12.2: preparing suspend
> > [ 1968.437807] matroxfb 0000:01:00.0: preparing suspend
> > [ 1968.438056] platform pcspkr: preparing suspend
> > [ 1968.438166] platform microcode: preparing suspend
> > [ 1968.438321] vga16fb vga16fb.0: preparing suspend
> > [ 1968.442065] serial8250 serial8250: preparing suspend
> > [ 1968.442857] usb usb1: preparing type suspend, may wakeup
> > [ 1968.442995] i8042 i8042: preparing suspend
> > [ 1968.443144] rtc-test rtc-test.0: preparing suspend
> > [ 1968.443256] rtc-test rtc-test.1: preparing suspend
> > [ 1968.443785] ac97 0-0:unknown codec: legacy suspend
> > [ 1968.443960] fschmd 3-0073: legacy suspend
> > [ 1968.444151] rtc rtc2: legacy class suspend
> > [ 1968.444252] rtc-test rtc-test.1: suspend
> > [ 1968.444351] rtc rtc1: legacy class suspend
> > [ 1968.444501] rtc-test rtc-test.0: suspend
> > [ 1968.444638] rtc rtc0: legacy class suspend
> > [ 1968.444883] atkbd serio0: legacy suspend
> > [ 1968.872096] i8042 i8042: suspend
> > [ 1968.872384] usb usb1: type suspend, may wakeup
> > [ 1968.872581] sd 2:0:0:0: legacy suspend
> > [ 1968.872881] sd 2:0:0:0: [sda] Synchronizing SCSI cache
> > [ 1968.873883] sd 2:0:0:0: [sda] Stopping disk
> > [ 1968.992131] scsi 1:0:0:0: legacy suspend
> > [ 1968.992852] serial8250 serial8250: suspend
> > [ 1968.992997] drm card0: legacy class suspend
> > [ 1968.996728] vga16fb vga16fb.0: suspend
> > [ 1968.996920] platform microcode: suspend
> > [ 1968.997059] platform pcspkr: suspend
> > [ 1968.997256] serial 00:08: legacy suspend
> > [ 1968.998043] serial 00:08: disabled
> > [ 1968.998213] pnp 00:07: legacy suspend
> > [ 1968.998343] i8042 kbd 00:06: legacy suspend
> > [ 1968.998498] pnp 00:05: legacy suspend
> > [ 1968.998626] pnp 00:04: legacy suspend
> > [ 1968.998754] rtc_cmos 00:03: legacy suspend, may wakeup
> > [ 1968.998980] pnp 00:02: legacy suspend
> > [ 1968.999109] system 00:01: legacy suspend
> > [ 1968.999262] pnp 00:00: legacy suspend
> > [ 1968.999410] matroxfb 0000:01:00.0: suspend
> > [ 1968.999737] matroxfb 0000:01:00.0: PCI INT A disabled
> > 
> > I am not sure if a bisection makes sense
> > with all those suspend bugs.
> 
> No, it doesn't. :-(
> 
> Thanks,
> Rafael

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
  2009-01-30 12:46     ` Eric Sesterhenn
@ 2009-01-30 21:15       ` Rafael J. Wysocki
       [not found]         ` <200901302215.28057.rjw-KKrjLPT3xs0@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Rafael J. Wysocki @ 2009-01-30 21:15 UTC (permalink / raw)
  To: Eric Sesterhenn
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

On Friday 30 January 2009, Eric Sesterhenn wrote:
> * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > > hi,
> > > 
> > > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > > 
> > > Dmesg of startup
> > > http://www.cccmz.de/~snakebyte/200.log
> > > .config
> > > http://www.cccmz.de/~snakebyte/config_200
> > > 
> > > When testing the devices 
> > > 
> > > root@computer-desktop:/sys/power# echo devices > pm_test 
> > 
> > What happens if you replace 'devices' with 'core' ?
> 
> no change, it hangs after matroxfb
> 
> root@computer-desktop:/sys/power# echo core > pm_test 
> root@computer-desktop:/sys/power# echo standby > state
> 
[--snip--]
> 
> > If the same, what happens without the matroxfb driver?
> 
> It gets a bit further, suspend seems to complete,
> but hangs during resume

Please check if the appended patch helps.

Thanks,
Rafael

---
 drivers/pci/pci-driver.c |   13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

Index: linux-2.6/drivers/pci/pci-driver.c
===================================================================
--- linux-2.6.orig/drivers/pci/pci-driver.c
+++ linux-2.6/drivers/pci/pci-driver.c
@@ -445,11 +445,11 @@ static void pci_pm_default_suspend_gener
 	pci_save_state(pci_dev);
 }
 
-static void pci_pm_default_suspend(struct pci_dev *pci_dev)
+static void pci_pm_default_suspend(struct pci_dev *pci_dev, bool prepare)
 {
 	pci_pm_default_suspend_generic(pci_dev);
 
-	if (!pci_is_bridge(pci_dev))
+	if (prepare && !pci_is_bridge(pci_dev))
 		pci_prepare_to_sleep(pci_dev);
 
 	pci_fixup_device(pci_fixup_suspend, pci_dev);
@@ -509,7 +509,7 @@ static int pci_pm_suspend(struct device 
 	}
 
 	if (!error)
-		pci_pm_default_suspend(pci_dev);
+		pci_pm_default_suspend(pci_dev, drv && drv->pm);
 
 	return error;
 }
@@ -669,16 +669,13 @@ static int pci_pm_poweroff(struct device
 	if (pci_has_legacy_pm_support(pci_dev))
 		return pci_legacy_suspend(dev, PMSG_HIBERNATE);
 
-	if (!drv || !drv->pm)
-		return 0;
-
-	if (drv->pm->poweroff) {
+	if (drv && drv->pm && drv->pm->poweroff) {
 		error = drv->pm->poweroff(dev);
 		suspend_report_result(drv->pm->poweroff, error);
 	}
 
 	if (!error)
-		pci_pm_default_suspend(pci_dev);
+		pci_pm_default_suspend(pci_dev, drv && drv->pm);
 
 	return error;
 }

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found]         ` <200901302215.28057.rjw-KKrjLPT3xs0@public.gmane.org>
@ 2009-01-30 22:03           ` Rafael J. Wysocki
       [not found]             ` <200901302303.23143.rjw-KKrjLPT3xs0@public.gmane.org>
  2009-01-30 22:06           ` Eric Sesterhenn
  1 sibling, 1 reply; 12+ messages in thread
From: Rafael J. Wysocki @ 2009-01-30 22:03 UTC (permalink / raw)
  To: Eric Sesterhenn
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

On Friday 30 January 2009, Rafael J. Wysocki wrote:
> On Friday 30 January 2009, Eric Sesterhenn wrote:
> > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > > > hi,
> > > > 
> > > > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > > > 
> > > > Dmesg of startup
> > > > http://www.cccmz.de/~snakebyte/200.log
> > > > .config
> > > > http://www.cccmz.de/~snakebyte/config_200
> > > > 
> > > > When testing the devices 
> > > > 
> > > > root@computer-desktop:/sys/power# echo devices > pm_test 
> > > 
> > > What happens if you replace 'devices' with 'core' ?
> > 
> > no change, it hangs after matroxfb
> > 
> > root@computer-desktop:/sys/power# echo core > pm_test 
> > root@computer-desktop:/sys/power# echo standby > state
> > 
> [--snip--]
> > 
> > > If the same, what happens without the matroxfb driver?
> > 
> > It gets a bit further, suspend seems to complete,
> > but hangs during resume
> 
> Please check if the appended patch helps.

Sorry, wrong version.

Please try this one instead.

Thanks,
Rafael

---
 drivers/pci/pci-driver.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Index: linux-2.6/drivers/pci/pci-driver.c
===================================================================
--- linux-2.6.orig/drivers/pci/pci-driver.c
+++ linux-2.6/drivers/pci/pci-driver.c
@@ -443,11 +443,11 @@ static void pci_pm_default_suspend_gener
 	pci_save_state(pci_dev);
 }
 
-static void pci_pm_default_suspend(struct pci_dev *pci_dev)
+static void pci_pm_default_suspend(struct pci_dev *pci_dev, bool prepare)
 {
 	pci_pm_default_suspend_generic(pci_dev);
 
-	if (!pci_is_bridge(pci_dev))
+	if (prepare && !pci_is_bridge(pci_dev))
 		pci_prepare_to_sleep(pci_dev);
 
 	pci_fixup_device(pci_fixup_suspend, pci_dev);
@@ -507,7 +507,7 @@ static int pci_pm_suspend(struct device 
 	}
 
 	if (!error)
-		pci_pm_default_suspend(pci_dev);
+		pci_pm_default_suspend(pci_dev, drv && drv->pm);
 
 	return error;
 }
@@ -666,7 +666,7 @@ static int pci_pm_poweroff(struct device
 	}
 
 	if (!error)
-		pci_pm_default_suspend(pci_dev);
+		pci_pm_default_suspend(pci_dev, drv && drv->pm);
 
 	return error;
 }

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found]         ` <200901302215.28057.rjw-KKrjLPT3xs0@public.gmane.org>
  2009-01-30 22:03           ` Rafael J. Wysocki
@ 2009-01-30 22:06           ` Eric Sesterhenn
  2009-01-30 22:27             ` Rafael J. Wysocki
  1 sibling, 1 reply; 12+ messages in thread
From: Eric Sesterhenn @ 2009-01-30 22:06 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

* Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> On Friday 30 January 2009, Eric Sesterhenn wrote:
> > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > > > hi,
> > > > 
> > > > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > > > 
> > > > Dmesg of startup
> > > > http://www.cccmz.de/~snakebyte/200.log
> > > > .config
> > > > http://www.cccmz.de/~snakebyte/config_200
> > > > 
> > > > When testing the devices 
> > > > 
> > > > root@computer-desktop:/sys/power# echo devices > pm_test 
> > > 
> > > What happens if you replace 'devices' with 'core' ?
> > 
> > no change, it hangs after matroxfb
> > 
> > root@computer-desktop:/sys/power# echo core > pm_test 
> > root@computer-desktop:/sys/power# echo standby > state
> > 
> [--snip--]
> > 
> > > If the same, what happens without the matroxfb driver?
> > 
> > It gets a bit further, suspend seems to complete,
> > but hangs during resume
> 
> Please check if the appended patch helps.

It does help in both cases (with matroxfb enabled and disabled)
thanks.

> ---
>  drivers/pci/pci-driver.c |   13 +++++--------
>  1 file changed, 5 insertions(+), 8 deletions(-)
> 
> Index: linux-2.6/drivers/pci/pci-driver.c
> ===================================================================
> --- linux-2.6.orig/drivers/pci/pci-driver.c
> +++ linux-2.6/drivers/pci/pci-driver.c
> @@ -445,11 +445,11 @@ static void pci_pm_default_suspend_gener
>  	pci_save_state(pci_dev);
>  }
>  
> -static void pci_pm_default_suspend(struct pci_dev *pci_dev)
> +static void pci_pm_default_suspend(struct pci_dev *pci_dev, bool prepare)
>  {
>  	pci_pm_default_suspend_generic(pci_dev);
>  
> -	if (!pci_is_bridge(pci_dev))
> +	if (prepare && !pci_is_bridge(pci_dev))
>  		pci_prepare_to_sleep(pci_dev);
>  
>  	pci_fixup_device(pci_fixup_suspend, pci_dev);
> @@ -509,7 +509,7 @@ static int pci_pm_suspend(struct device 
>  	}
>  
>  	if (!error)
> -		pci_pm_default_suspend(pci_dev);
> +		pci_pm_default_suspend(pci_dev, drv && drv->pm);
>  
>  	return error;
>  }
> @@ -669,16 +669,13 @@ static int pci_pm_poweroff(struct device
>  	if (pci_has_legacy_pm_support(pci_dev))
>  		return pci_legacy_suspend(dev, PMSG_HIBERNATE);
>  
> -	if (!drv || !drv->pm)
> -		return 0;
> -
> -	if (drv->pm->poweroff) {
> +	if (drv && drv->pm && drv->pm->poweroff) {
>  		error = drv->pm->poweroff(dev);
>  		suspend_report_result(drv->pm->poweroff, error);
>  	}
>  
>  	if (!error)
> -		pci_pm_default_suspend(pci_dev);
> +		pci_pm_default_suspend(pci_dev, drv && drv->pm);
>  
>  	return error;
>  }

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found]             ` <200901302303.23143.rjw-KKrjLPT3xs0@public.gmane.org>
@ 2009-01-30 22:09               ` Eric Sesterhenn
  0 siblings, 0 replies; 12+ messages in thread
From: Eric Sesterhenn @ 2009-01-30 22:09 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

* Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> On Friday 30 January 2009, Rafael J. Wysocki wrote:
> > On Friday 30 January 2009, Eric Sesterhenn wrote:
> > > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > > On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > > > > hi,
> > > > > 
> > > > > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > > > > 
> > > > > Dmesg of startup
> > > > > http://www.cccmz.de/~snakebyte/200.log
> > > > > .config
> > > > > http://www.cccmz.de/~snakebyte/config_200
> > > > > 
> > > > > When testing the devices 
> > > > > 
> > > > > root@computer-desktop:/sys/power# echo devices > pm_test 
> > > > 
> > > > What happens if you replace 'devices' with 'core' ?
> > > 
> > > no change, it hangs after matroxfb
> > > 
> > > root@computer-desktop:/sys/power# echo core > pm_test 
> > > root@computer-desktop:/sys/power# echo standby > state
> > > 
> > [--snip--]
> > > 
> > > > If the same, what happens without the matroxfb driver?
> > > 
> > > It gets a bit further, suspend seems to complete,
> > > but hangs during resume
> > 
> > Please check if the appended patch helps.
> 
> Sorry, wrong version.
> 
> Please try this one instead.

looks similar, I resolved the conflicts of the other one
by hand. Thanks

> Thanks,
> Rafael
> 
> ---
>  drivers/pci/pci-driver.c |    8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> Index: linux-2.6/drivers/pci/pci-driver.c
> ===================================================================
> --- linux-2.6.orig/drivers/pci/pci-driver.c
> +++ linux-2.6/drivers/pci/pci-driver.c
> @@ -443,11 +443,11 @@ static void pci_pm_default_suspend_gener
>  	pci_save_state(pci_dev);
>  }
>  
> -static void pci_pm_default_suspend(struct pci_dev *pci_dev)
> +static void pci_pm_default_suspend(struct pci_dev *pci_dev, bool prepare)
>  {
>  	pci_pm_default_suspend_generic(pci_dev);
>  
> -	if (!pci_is_bridge(pci_dev))
> +	if (prepare && !pci_is_bridge(pci_dev))
>  		pci_prepare_to_sleep(pci_dev);
>  
>  	pci_fixup_device(pci_fixup_suspend, pci_dev);
> @@ -507,7 +507,7 @@ static int pci_pm_suspend(struct device 
>  	}
>  
>  	if (!error)
> -		pci_pm_default_suspend(pci_dev);
> +		pci_pm_default_suspend(pci_dev, drv && drv->pm);
>  
>  	return error;
>  }
> @@ -666,7 +666,7 @@ static int pci_pm_poweroff(struct device
>  	}
>  
>  	if (!error)
> -		pci_pm_default_suspend(pci_dev);
> +		pci_pm_default_suspend(pci_dev, drv && drv->pm);
>  
>  	return error;
>  }

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
  2009-01-30 22:06           ` Eric Sesterhenn
@ 2009-01-30 22:27             ` Rafael J. Wysocki
       [not found]               ` <200901302327.50887.rjw-KKrjLPT3xs0@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Rafael J. Wysocki @ 2009-01-30 22:27 UTC (permalink / raw)
  To: Eric Sesterhenn
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

On Friday 30 January 2009, Eric Sesterhenn wrote:
> * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > On Friday 30 January 2009, Eric Sesterhenn wrote:
> > > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > > On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > > > > hi,
> > > > > 
> > > > > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > > > > 
> > > > > Dmesg of startup
> > > > > http://www.cccmz.de/~snakebyte/200.log
> > > > > .config
> > > > > http://www.cccmz.de/~snakebyte/config_200
> > > > > 
> > > > > When testing the devices 
> > > > > 
> > > > > root@computer-desktop:/sys/power# echo devices > pm_test 
> > > > 
> > > > What happens if you replace 'devices' with 'core' ?
> > > 
> > > no change, it hangs after matroxfb
> > > 
> > > root@computer-desktop:/sys/power# echo core > pm_test 
> > > root@computer-desktop:/sys/power# echo standby > state
> > > 
> > [--snip--]
> > > 
> > > > If the same, what happens without the matroxfb driver?
> > > 
> > > It gets a bit further, suspend seems to complete,
> > > but hangs during resume
> > 
> > Please check if the appended patch helps.
> 
> It does help in both cases (with matroxfb enabled and disabled)
> thanks.

What machine is that?

Rafael

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found]               ` <200901302327.50887.rjw-KKrjLPT3xs0@public.gmane.org>
@ 2009-01-30 22:31                 ` Eric Sesterhenn
  2009-01-30 22:59                   ` Rafael J. Wysocki
  0 siblings, 1 reply; 12+ messages in thread
From: Eric Sesterhenn @ 2009-01-30 22:31 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

* Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> On Friday 30 January 2009, Eric Sesterhenn wrote:
> > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > On Friday 30 January 2009, Eric Sesterhenn wrote:
> > > > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > > > On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > > > > > hi,
> > > > > > 
> > > > > > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > > > > > 
> > > > > > Dmesg of startup
> > > > > > http://www.cccmz.de/~snakebyte/200.log
> > > > > > .config
> > > > > > http://www.cccmz.de/~snakebyte/config_200
> > > > > > 
> > > > > > When testing the devices 
> > > > > > 
> > > > > > root@computer-desktop:/sys/power# echo devices > pm_test 
> > > > > 
> > > > > What happens if you replace 'devices' with 'core' ?
> > > > 
> > > > no change, it hangs after matroxfb
> > > > 
> > > > root@computer-desktop:/sys/power# echo core > pm_test 
> > > > root@computer-desktop:/sys/power# echo standby > state
> > > > 
> > > [--snip--]
> > > > 
> > > > > If the same, what happens without the matroxfb driver?
> > > > 
> > > > It gets a bit further, suspend seems to complete,
> > > > but hangs during resume
> > > 
> > > Please check if the appended patch helps.
> > 
> > It does help in both cases (with matroxfb enabled and disabled)
> > thanks.
> 
> What machine is that?

I mean the driver enabled in .config.

box is one of my kernel testgrounds running ubuntu intrepid,
for .config and dmesg see the links above

root@computer-desktop:~# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 8
model name	: Pentium III (Coppermine)
stepping	: 3
cpu MHz		: 697.819
cache size	: 256 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca
cmov pat pse36 mmx fxsr sse
bogomips	: 1395.63
clflush size	: 32
power management:

root@computer-desktop:~# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host
bridge (rev 03)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP
bridge (rev 03)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev
01)
00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev
01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02)
00:0a.0 Ethernet controller: Intel Corporation 82556 EtherExpress
PRO/100 Smart (rev 03)
00:0c.0 SCSI storage controller: Adaptec AIC-7861 (rev 03)
00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL-8139/8139C/8139C+ (rev 10)
00:12.0 Multimedia audio controller: Rockwell International Device 4310
00:12.1 Communication controller: Rockwell International Riptide HSF 56k
PCI Modem
00:12.2 Input device controller: Rockwell International Device 4312
01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G200 AGP
(rev 03)

If you need any other information, just let me know

Greetings, Eric

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
  2009-01-30 22:31                 ` Eric Sesterhenn
@ 2009-01-30 22:59                   ` Rafael J. Wysocki
       [not found]                     ` <200901302359.18309.rjw-KKrjLPT3xs0@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Rafael J. Wysocki @ 2009-01-30 22:59 UTC (permalink / raw)
  To: Eric Sesterhenn
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

On Friday 30 January 2009, Eric Sesterhenn wrote:
> * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > On Friday 30 January 2009, Eric Sesterhenn wrote:
> > > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > > On Friday 30 January 2009, Eric Sesterhenn wrote:
> > > > > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > > > > On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > > > > > > hi,
> > > > > > > 
> > > > > > > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > > > > > > 
> > > > > > > Dmesg of startup
> > > > > > > http://www.cccmz.de/~snakebyte/200.log
> > > > > > > .config
> > > > > > > http://www.cccmz.de/~snakebyte/config_200
> > > > > > > 
> > > > > > > When testing the devices 
> > > > > > > 
> > > > > > > root@computer-desktop:/sys/power# echo devices > pm_test 
> > > > > > 
> > > > > > What happens if you replace 'devices' with 'core' ?
> > > > > 
> > > > > no change, it hangs after matroxfb
> > > > > 
> > > > > root@computer-desktop:/sys/power# echo core > pm_test 
> > > > > root@computer-desktop:/sys/power# echo standby > state
> > > > > 
> > > > [--snip--]
> > > > > 
> > > > > > If the same, what happens without the matroxfb driver?
> > > > > 
> > > > > It gets a bit further, suspend seems to complete,
> > > > > but hangs during resume
> > > > 
> > > > Please check if the appended patch helps.
> > > 
> > > It does help in both cases (with matroxfb enabled and disabled)
> > > thanks.
> > 
> > What machine is that?
> 
> I mean the driver enabled in .config.
> 
> box is one of my kernel testgrounds running ubuntu intrepid,
> for .config and dmesg see the links above

Ah, so this is just a desktop.  OK, thanks.

I have prepared a final fix that I'd like to push for merging.  Can you please
test it (it won't apply cleanly to the current -git, but should be easy to fix
up)?

Rafael

---
From: Rafael J. Wysocki <rjw-KKrjLPT3xs0@public.gmane.org>
Subject: PCI PM: Fix handling of devices without drivers

Suspend to RAM is reported to break on some machines as a result of
attempting to put one of driverless PCI devices into a low power
state.  Avoid that by not attepmting to power manage driverless
devices during suspend.

Fix up pci_pm_poweroff() after a previous incomplete fix for the same
thing during hibernation.

Signed-off-by: Rafael J. Wysocki <rjw-KKrjLPT3xs0@public.gmane.org>
---
 drivers/pci/pci-driver.c |   27 ++++++++++++---------------
 1 file changed, 12 insertions(+), 15 deletions(-)

Index: linux-2.6/drivers/pci/pci-driver.c
===================================================================
--- linux-2.6.orig/drivers/pci/pci-driver.c
+++ linux-2.6/drivers/pci/pci-driver.c
@@ -445,11 +445,11 @@ static void pci_pm_default_suspend_gener
 	pci_save_state(pci_dev);
 }
 
-static void pci_pm_default_suspend(struct pci_dev *pci_dev)
+static void pci_pm_default_suspend(struct pci_dev *pci_dev, bool prepare)
 {
 	pci_pm_default_suspend_generic(pci_dev);
 
-	if (!pci_is_bridge(pci_dev))
+	if (prepare && !pci_is_bridge(pci_dev))
 		pci_prepare_to_sleep(pci_dev);
 
 	pci_fixup_device(pci_fixup_suspend, pci_dev);
@@ -497,19 +497,19 @@ static void pci_pm_complete(struct devic
 static int pci_pm_suspend(struct device *dev)
 {
 	struct pci_dev *pci_dev = to_pci_dev(dev);
-	struct device_driver *drv = dev->driver;
+	struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
 	int error = 0;
 
 	if (pci_has_legacy_pm_support(pci_dev))
 		return pci_legacy_suspend(dev, PMSG_SUSPEND);
 
-	if (drv && drv->pm && drv->pm->suspend) {
-		error = drv->pm->suspend(dev);
-		suspend_report_result(drv->pm->suspend, error);
+	if (pm && pm->suspend) {
+		error = pm->suspend(dev);
+		suspend_report_result(pm->suspend, error);
 	}
 
 	if (!error)
-		pci_pm_default_suspend(pci_dev);
+		pci_pm_default_suspend(pci_dev, !!pm);
 
 	return error;
 }
@@ -663,22 +663,19 @@ static int pci_pm_thaw(struct device *de
 static int pci_pm_poweroff(struct device *dev)
 {
 	struct pci_dev *pci_dev = to_pci_dev(dev);
-	struct device_driver *drv = dev->driver;
+	struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
 	int error = 0;
 
 	if (pci_has_legacy_pm_support(pci_dev))
 		return pci_legacy_suspend(dev, PMSG_HIBERNATE);
 
-	if (!drv || !drv->pm)
-		return 0;
-
-	if (drv->pm->poweroff) {
-		error = drv->pm->poweroff(dev);
-		suspend_report_result(drv->pm->poweroff, error);
+	if (pm && pm->poweroff) {
+		error = pm->poweroff(dev);
+		suspend_report_result(pm->poweroff, error);
 	}
 
 	if (!error)
-		pci_pm_default_suspend(pci_dev);
+		pci_pm_default_suspend(pci_dev, !!pm);
 
 	return error;
 }

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found]                     ` <200901302359.18309.rjw-KKrjLPT3xs0@public.gmane.org>
@ 2009-01-30 23:21                       ` Alan Stern
       [not found]                         ` <Pine.LNX.4.44L0.0901301818400.2785-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
  2009-01-30 23:36                       ` Eric Sesterhenn
  1 sibling, 1 reply; 12+ messages in thread
From: Alan Stern @ 2009-01-30 23:21 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Eric Sesterhenn,
	linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Kernel Testers, vandrove-hnqZr3NxcozrBKCeMvbIDA

On Fri, 30 Jan 2009, Rafael J. Wysocki wrote:

> Suspend to RAM is reported to break on some machines as a result of
> attempting to put one of driverless PCI devices into a low power
> state.  Avoid that by not attepmting to power manage driverless
> devices during suspend.

Just out of curiosity, what would happen if one of these troublesome
devices _did_ have a driver?  Would suspend still be broken?  Would you
then blame the driver instead of the PCI core?  Or would the driver be
smart enough to avoid putting the device in a low-power state?  But
doesn't that defeat the purpose of suspending in the first place?

Alan Stern

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found]                     ` <200901302359.18309.rjw-KKrjLPT3xs0@public.gmane.org>
  2009-01-30 23:21                       ` Alan Stern
@ 2009-01-30 23:36                       ` Eric Sesterhenn
  1 sibling, 0 replies; 12+ messages in thread
From: Eric Sesterhenn @ 2009-01-30 23:36 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	vandrove-hnqZr3NxcozrBKCeMvbIDA, Kernel Testers

* Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> On Friday 30 January 2009, Eric Sesterhenn wrote:
> > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > On Friday 30 January 2009, Eric Sesterhenn wrote:
> > > > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > > > On Friday 30 January 2009, Eric Sesterhenn wrote:
> > > > > > * Rafael J. Wysocki (rjw-KKrjLPT3xs0@public.gmane.org) wrote:
> > > > > > > On Thursday 29 January 2009, Eric Sesterhenn wrote:
> > > > > > > > hi,
> > > > > > > > 
> > > > > > > > on this box standby worked with 2.6.28, but is broken with 2.6.29-rc3.
> > > > > > > > 
> > > > > > > > Dmesg of startup
> > > > > > > > http://www.cccmz.de/~snakebyte/200.log
> > > > > > > > .config
> > > > > > > > http://www.cccmz.de/~snakebyte/config_200
> > > > > > > > 
> > > > > > > > When testing the devices 
> > > > > > > > 
> > > > > > > > root@computer-desktop:/sys/power# echo devices > pm_test 
> > > > > > > 
> > > > > > > What happens if you replace 'devices' with 'core' ?
> > > > > > 
> > > > > > no change, it hangs after matroxfb
> > > > > > 
> > > > > > root@computer-desktop:/sys/power# echo core > pm_test 
> > > > > > root@computer-desktop:/sys/power# echo standby > state
> > > > > > 
> > > > > [--snip--]
> > > > > > 
> > > > > > > If the same, what happens without the matroxfb driver?
> > > > > > 
> > > > > > It gets a bit further, suspend seems to complete,
> > > > > > but hangs during resume
> > > > > 
> > > > > Please check if the appended patch helps.
> > > > 
> > > > It does help in both cases (with matroxfb enabled and disabled)
> > > > thanks.
> > > 
> > > What machine is that?
> > 
> > I mean the driver enabled in .config.
> > 
> > box is one of my kernel testgrounds running ubuntu intrepid,
> > for .config and dmesg see the links above
> 
> Ah, so this is just a desktop.  OK, thanks.
> 
> I have prepared a final fix that I'd like to push for merging.  Can you please
> test it (it won't apply cleanly to the current -git, but should be easy to fix
> up)?

works for me, thanks

Eric

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [linux-pm] Suspend regression, hang after matroxfb
       [not found]                         ` <Pine.LNX.4.44L0.0901301818400.2785-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
@ 2009-01-30 23:40                           ` Rafael J. Wysocki
  0 siblings, 0 replies; 12+ messages in thread
From: Rafael J. Wysocki @ 2009-01-30 23:40 UTC (permalink / raw)
  To: Alan Stern
  Cc: Eric Sesterhenn,
	linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
	Kernel Testers, vandrove-hnqZr3NxcozrBKCeMvbIDA

On Saturday 31 January 2009, Alan Stern wrote:
> On Fri, 30 Jan 2009, Rafael J. Wysocki wrote:
> 
> > Suspend to RAM is reported to break on some machines as a result of
> > attempting to put one of driverless PCI devices into a low power
> > state.  Avoid that by not attepmting to power manage driverless
> > devices during suspend.
> 
> Just out of curiosity, what would happen if one of these troublesome
> devices _did_ have a driver?  Would suspend still be broken?

That depends on what the driver would do to the device in its suspend callback.

> Would you then blame the driver instead of the PCI core?

Probably both.  I'd try to find the root cause and presumably blacklist
the device this way or another.

> Or would the driver be smart enough to avoid putting the device in a
> low-power state?

I think that putting devices into low power states should better be done by
the core.  In this particular case, we can add some quirks to the core so
that it can handle those devices correctly.  I don't think adding such quirks
to drivers would be a good idea.

> But doesn't that defeat the purpose of suspending in the first place?

If the entire system goes into a sleep state, the platform will probably remove
power from the device anyway, so it doesn't really matter too much.  It is
going to matter for run-time power saving, though.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2009-01-30 23:40 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20090129125855.GA4597@alice>
2009-01-29 22:12 ` [linux-pm] Suspend regression, hang after matroxfb Rafael J. Wysocki
     [not found]   ` <200901292312.44884.rjw-KKrjLPT3xs0@public.gmane.org>
2009-01-30 12:46     ` Eric Sesterhenn
2009-01-30 21:15       ` Rafael J. Wysocki
     [not found]         ` <200901302215.28057.rjw-KKrjLPT3xs0@public.gmane.org>
2009-01-30 22:03           ` Rafael J. Wysocki
     [not found]             ` <200901302303.23143.rjw-KKrjLPT3xs0@public.gmane.org>
2009-01-30 22:09               ` Eric Sesterhenn
2009-01-30 22:06           ` Eric Sesterhenn
2009-01-30 22:27             ` Rafael J. Wysocki
     [not found]               ` <200901302327.50887.rjw-KKrjLPT3xs0@public.gmane.org>
2009-01-30 22:31                 ` Eric Sesterhenn
2009-01-30 22:59                   ` Rafael J. Wysocki
     [not found]                     ` <200901302359.18309.rjw-KKrjLPT3xs0@public.gmane.org>
2009-01-30 23:21                       ` Alan Stern
     [not found]                         ` <Pine.LNX.4.44L0.0901301818400.2785-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2009-01-30 23:40                           ` Rafael J. Wysocki
2009-01-30 23:36                       ` Eric Sesterhenn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).