public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]   ` <200711142248.59547.rjw@sisk.pl>
@ 2007-11-15 23:59     ` Jiri Slaby
       [not found]     ` <473CDD6D.8080008@gmail.com>
  1 sibling, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-15 23:59 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Andrew Morton, linux-kernel, Linux-pm mailing list

On 11/14/2007 10:48 PM, Rafael J. Wysocki wrote:
> On Wednesday, 14 of November 2007, Jiri Slaby wrote:
>> On 11/14/2007 02:59 AM, Andrew Morton wrote:
>>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.24-rc2/2.6.24-rc2-mm1/
>> Doesn't suspend for me (neither broken-out-2007-11-13-04-14 did) on x86_64.
>> echo mem >/sys/power/state
>> causes shut down of disk(s) and blinking cursor on 1,1 position.
>> The last working was 2.6.23-rc8-mm2. I haven't tested
>> 2.6.23-mm1, since it didn't work for me.
> 
> Does the current mainline work?

Yes.

The offending -mm patch is
gregkh-driver-pm-acquire-device-locks-prior-to-suspending.patch

2.6.24-rc2-mm1 minus it works just fine; PROVE_LOCKING shows nothing new when
the patch is applied.

regards,
-- 
Jiri Slaby (jirislaby@gmail.com)
Faculty of Informatics, Masaryk University

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]     ` <473CDD6D.8080008@gmail.com>
@ 2007-11-16  0:38       ` Greg KH
  0 siblings, 0 replies; 26+ messages in thread
From: Greg KH @ 2007-11-16  0:38 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, linux-kernel, Linux-pm mailing list

On Fri, Nov 16, 2007 at 12:59:41AM +0100, Jiri Slaby wrote:
> On 11/14/2007 10:48 PM, Rafael J. Wysocki wrote:
> > On Wednesday, 14 of November 2007, Jiri Slaby wrote:
> >> On 11/14/2007 02:59 AM, Andrew Morton wrote:
> >>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.24-rc2/2.6.24-rc2-mm1/
> >> Doesn't suspend for me (neither broken-out-2007-11-13-04-14 did) on x86_64.
> >> echo mem >/sys/power/state
> >> causes shut down of disk(s) and blinking cursor on 1,1 position.
> >> The last working was 2.6.23-rc8-mm2. I haven't tested
> >> 2.6.23-mm1, since it didn't work for me.
> > 
> > Does the current mainline work?
> 
> Yes.
> 
> The offending -mm patch is
> gregkh-driver-pm-acquire-device-locks-prior-to-suspending.patch
> 
> 2.6.24-rc2-mm1 minus it works just fine; PROVE_LOCKING shows nothing new when
> the patch is applied.

Thanks for tracking this down.  Alan, any thoughts?

thanks,

greg k-h

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] <20071116003836.GA24490@kroah.com>
@ 2007-11-16 16:10 ` Alan Stern
  0 siblings, 0 replies; 26+ messages in thread
From: Alan Stern @ 2007-11-16 16:10 UTC (permalink / raw)
  To: Greg KH; +Cc: Andrew Morton, Linux-pm mailing list, Jiri Slaby, linux-kernel

On Thu, 15 Nov 2007, Greg KH wrote:

> > The offending -mm patch is
> > gregkh-driver-pm-acquire-device-locks-prior-to-suspending.patch
> > 
> > 2.6.24-rc2-mm1 minus it works just fine; PROVE_LOCKING shows nothing new when
> > the patch is applied.
> 
> Thanks for tracking this down.  Alan, any thoughts?

It's a driver problem somewhere.  Probably not one of the most common 
drivers because I don't see the same problem here (but then I'm not 
testing -mm).

The thing to do is figure out which driver is causing the problem.
Jiri, try enabling CONFIG_DEBUG_DRIVER.  If there's also a config 
option to prevent the console from being suspended, set it as well.  
Then you should be able to tell which driver is making trouble.

Alan Stern

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] <Pine.LNX.4.44L0.0711161058170.2738-100000@iolanthe.rowland.org>
@ 2007-11-17 15:08 ` Jiri Slaby
       [not found] ` <473F03DF.4020306@gmail.com>
  1 sibling, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-17 15:08 UTC (permalink / raw)
  To: Alan Stern; +Cc: Jiri Slaby, linux-kernel, Andrew Morton, Linux-pm mailing list

On 11/16/2007 05:10 PM, Alan Stern wrote:
> On Thu, 15 Nov 2007, Greg KH wrote:
> 
>>> The offending -mm patch is
>>> gregkh-driver-pm-acquire-device-locks-prior-to-suspending.patch
>>>
>>> 2.6.24-rc2-mm1 minus it works just fine; PROVE_LOCKING shows nothing new when
>>> the patch is applied.
>> Thanks for tracking this down.  Alan, any thoughts?
> 
> It's a driver problem somewhere.  Probably not one of the most common 
> drivers because I don't see the same problem here (but then I'm not 
> testing -mm).
> 
> The thing to do is figure out which driver is causing the problem.
> Jiri, try enabling CONFIG_DEBUG_DRIVER.  

Sadly no output.

> If there's also a config 
> option to prevent the console from being suspended, set it as well.  

no_suspend_console kernel parameter has no effect (why?).

> Then you should be able to tell which driver is making trouble.

I think no unusual hardware inside:

00:00.0 Host bridge: Intel Corporation 82G33/G31/P35 Express DRAM Controller
(rev 02)
        Subsystem: Intel Corporation 82G33/G31/P35 Express DRAM Controller
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort+ >SERR- <PERR-
        Latency: 0
        Capabilities: [e0] Vendor Specific Information
00: 86 80 c0 29 06 00 90 20 02 00 00 06 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 c0 29
30: 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00

00:02.0 VGA compatible controller: Intel Corporation 82G33/G31 Express
Integrated Graphics Controller (rev 02) (prog-if 00 [VGA])
        Subsystem: Intel Corporation 82G33/G31 Express Integrated Graphics
Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at ffa80000 (32-bit, non-prefetchable) [size=512K]
        Region 1: I/O ports at ec00 [size=8]
        Region 2: Memory at d0000000 (32-bit, prefetchable) [size=256M]
        Region 3: Memory at ff900000 (32-bit, non-prefetchable) [size=1M]
        Capabilities: [90] Message Signalled Interrupts: Mask- 64bit- Queue=0/0
Enable-
                Address: 00000000  Data: 0000
        Capabilities: [d0] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00: 86 80 c2 29 07 00 90 00 02 00 00 03 00 00 00 00
10: 00 00 a8 ff 01 ec 00 00 08 00 00 d0 00 00 90 ff
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 c2 29
30: 00 00 00 00 90 00 00 00 00 00 00 00 0a 01 00 00

00:03.0 Communication controller: Intel Corporation 82G33/G31/P35 Express MEI
Controller (rev 02)
        Subsystem: Intel Corporation 82G33/G31/P35 Express MEI Controller
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at ffa7bc00 (64-bit, non-prefetchable) [size=16]
        Capabilities: [50] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [8c] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0
Enable-
                Address: 0000000000000000  Data: 0000
00: 86 80 c4 29 06 00 10 00 02 00 80 07 00 00 80 00
10: 04 bc a7 ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 c4 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 01 00 00

00:03.2 IDE interface: Intel Corporation 82G33/G31/P35 Express PT IDER
Controller (rev 02) (prog-if 85 [Master SecO PriO])
        Subsystem: Intel Corporation 82G33/G31/P35 Express PT IDER Controller
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin C routed to IRQ 12
        Region 0: I/O ports at e880 [size=8]
        Region 1: I/O ports at e800 [size=4]
        Region 2: I/O ports at e480 [size=8]
        Region 3: I/O ports at e400 [size=4]
        Region 4: I/O ports at e080 [size=16]
        Capabilities: [c8] Power Management version 3
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [d0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0
Enable-
                Address: 0000000000000000  Data: 0000
00: 86 80 c6 29 05 00 b0 00 02 85 01 01 00 00 00 00
10: 81 e8 00 00 01 e8 00 00 81 e4 00 00 01 e4 00 00
20: 81 e0 00 00 00 00 00 00 00 00 00 00 86 80 c6 29
30: 00 00 00 00 c8 00 00 00 00 00 00 00 0c 03 00 00

00:03.3 Serial controller: Intel Corporation 82G33/G31/P35 Express Serial KT
Controller (rev 02) (prog-if 02 [16550])
        Subsystem: Intel Corporation 82G33/G31/P35 Express Serial KT Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin B routed to IRQ 17
        Region 0: I/O ports at e000 [size=8]
        Region 1: Memory at ffa7a000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [c8] Power Management version 3
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [d0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0
Enable-
                Address: 0000000000000000  Data: 0000
00: 86 80 c7 29 07 00 b0 00 02 02 00 07 00 00 00 00
10: 01 e0 00 00 00 a0 a7 ff 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 c7 29
30: 00 00 00 00 c8 00 00 00 00 00 00 00 05 02 00 00

00:19.0 Ethernet controller: Intel Corporation 82566DM-2 Gigabit Network
Connection (rev 02)
        Subsystem: Intel Corporation Unknown device 0000
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin A routed to IRQ 318
        Region 0: Memory at ffa40000 (32-bit, non-prefetchable) [size=128K]
        Region 1: Memory at ffa79000 (32-bit, non-prefetchable) [size=4K]
        Region 2: I/O ports at dc00 [size=32]
        Capabilities: [c8] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [d0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0
Enable+
                Address: 00000000fee0300c  Data: 4191
        Capabilities: [e0] Vendor Specific Information
00: 86 80 bd 10 07 04 10 00 02 00 00 02 00 00 00 00
10: 00 00 a4 ff 00 90 a7 ff 01 dc 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
30: 00 00 00 00 c8 00 00 00 00 00 00 00 0f 01 00 00

00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI
Controller #4 (rev 02) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin A routed to IRQ 16
        Region 4: I/O ports at d880 [size=32]
        Capabilities: [50] Vendor Specific Information
00: 86 80 37 29 05 00 90 02 02 00 03 0c 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 81 d8 00 00 00 00 00 00 00 00 00 00 86 80 37 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 01 00 00

00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI
Controller #5 (rev 02) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin B routed to IRQ 21
        Region 4: I/O ports at d800 [size=32]
        Capabilities: [50] Vendor Specific Information
00: 86 80 38 29 05 00 90 02 02 00 03 0c 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 d8 00 00 00 00 00 00 00 00 00 00 86 80 38 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 0e 02 00 00

00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI
Controller #6 (rev 02) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin C routed to IRQ 18
        Region 4: I/O ports at d480 [size=32]
        Capabilities: [50] Vendor Specific Information
00: 86 80 39 29 05 00 90 02 02 00 03 0c 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 81 d4 00 00 00 00 00 00 00 00 00 00 86 80 39 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 0c 03 00 00

00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI
Controller #2 (rev 02) (prog-if 20 [EHCI])
        Subsystem: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin D routed to IRQ 19
        Region 0: Memory at ffa7b400 (32-bit, non-prefetchable) [size=1K]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [58] Debug port
        Capabilities: [98] Vendor Specific Information
00: 86 80 3c 29 06 00 90 02 02 20 03 0c 00 00 00 00
10: 00 b4 a7 ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 3c 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 03 04 00 00

00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller
(rev 02)
        Subsystem: Intel Corporation 82801I (ICH9 Family) HD Audio Controller
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
        Latency: 0, Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 22
        Region 0: Memory at ffa70000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0
Enable-
                Address: 0000000000000000  Data: 0000
        Capabilities: [70] Express Unknown type IRQ 0
                Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
                Device: Latency L0s <64ns, L1 <1us
                Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
                Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
                Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
                Link: Supported Speed unknown, Width x0, ASPM unknown, Port 0
                Link: Latency L0s <64ns, L1 <1us
                Link: ASPM Disabled CommClk- ExtSynch-
                Link: Speed unknown, Width x0
        Capabilities: [100] Virtual Channel
        Capabilities: [130] Unknown (5)
00: 86 80 3e 29 06 00 10 00 02 00 03 04 08 00 00 00
10: 04 00 a7 ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 3e 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 07 01 00 00

00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI
Controller #1 (rev 02) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin A routed to IRQ 23
        Region 4: I/O ports at d400 [size=32]
        Capabilities: [50] Vendor Specific Information
00: 86 80 34 29 05 00 90 02 02 00 03 0c 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 d4 00 00 00 00 00 00 00 00 00 00 86 80 34 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 01 00 00

00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI
Controller #2 (rev 02) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin B routed to IRQ 19
        Region 4: I/O ports at d080 [size=32]
        Capabilities: [50] Vendor Specific Information
00: 86 80 35 29 05 00 90 02 02 00 03 0c 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 81 d0 00 00 00 00 00 00 00 00 00 00 86 80 35 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 03 02 00 00

00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI
Controller #3 (rev 02) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin D routed to IRQ 16
        Region 4: I/O ports at d000 [size=32]
        Capabilities: [50] Vendor Specific Information
00: 86 80 36 29 05 00 90 02 02 00 03 0c 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 d0 00 00 00 00 00 00 00 00 00 00 86 80 36 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 04 00 00

00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI
Controller #1 (rev 02) (prog-if 20 [EHCI])
        Subsystem: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin A routed to IRQ 23
        Region 0: Memory at ffa7b000 (32-bit, non-prefetchable) [size=1K]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [58] Debug port
        Capabilities: [98] Vendor Specific Information
00: 86 80 3a 29 06 00 90 02 02 20 03 0c 00 00 00 00
10: 00 b0 a7 ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 3a 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 01 00 00

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92) (prog-if 01
[Subtractive decode])
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
        Latency: 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=32
        Memory behind bridge: ff600000-ff6fffff
        Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort+ <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
        Capabilities: [50] Subsystem: Intel Corporation 82801 PCI Bridge
00: 86 80 4e 24 06 01 10 00 92 01 04 06 00 00 01 00
10: 00 00 00 00 00 00 00 00 00 01 01 20 f0 00 80 22
20: 60 ff 60 ff f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 50 00 00 00 00 00 00 00 ff 00 02 00

00:1f.0 ISA bridge: Intel Corporation Unknown device 2910 (rev 02)
        Subsystem: Intel Corporation Unknown device 2910
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Capabilities: [e0] Vendor Specific Information
00: 86 80 10 29 07 00 10 02 02 00 01 06 00 00 80 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 10 29
30: 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00

00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port
SATA AHCI Controller (rev 02) (prog-if 01 [AHCI 1.0])
        Subsystem: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA
AHCI Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin B routed to IRQ 319
        Region 0: I/O ports at cc00 [size=8]
        Region 1: I/O ports at c880 [size=4]
        Region 2: I/O ports at c800 [size=8]
        Region 3: I/O ports at c480 [size=4]
        Region 4: I/O ports at c400 [size=32]
        Region 5: Memory at ffa78800 (32-bit, non-prefetchable) [size=2K]
        Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/4
Enable+
                Address: fee0300c  Data: 4169
        Capabilities: [70] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot+,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [a8] #12 [0010]
        Capabilities: [b0] Vendor Specific Information
00: 86 80 22 29 07 04 b0 02 02 01 06 01 00 00 00 00
10: 01 cc 00 00 81 c8 00 00 01 c8 00 00 81 c4 00 00
20: 01 c4 00 00 00 88 a7 ff 00 00 00 00 86 80 22 29
30: 00 00 00 00 80 00 00 00 00 00 00 00 03 02 00 00

00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
        Subsystem: Intel Corporation 82801I (ICH9 Family) SMBus Controller
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin C routed to IRQ 18
        Region 0: Memory at ffa7b800 (64-bit, non-prefetchable) [size=256]
        Region 4: I/O ports at 0400 [size=32]
00: 86 80 30 29 03 00 80 02 02 00 05 0c 00 00 00 00
10: 04 b8 a7 ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 04 00 00 00 00 00 00 00 00 00 00 86 80 30 29
30: 00 00 00 00 00 00 00 00 00 00 00 00 03 03 00 00

00:1f.5 IDE interface: Intel Corporation 82801I (ICH9 Family) 2 port SATA IDE
Controller (rev 02) (prog-if 85 [Master SecO PriO])
        Subsystem: Intel Corporation 82801I (ICH9 Family) 2 port SATA IDE Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin B routed to IRQ 19
        Region 0: I/O ports at c000 [size=8]
        Region 1: I/O ports at bc00 [size=4]
        Region 2: I/O ports at b880 [size=8]
        Region 3: I/O ports at b800 [size=4]
        Region 4: I/O ports at b480 [size=16]
        Region 5: I/O ports at b400 [size=16]
        Capabilities: [70] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [b0] Vendor Specific Information
00: 86 80 26 29 07 00 b0 02 02 85 01 01 00 00 00 00
10: 01 c0 00 00 01 bc 00 00 81 b8 00 00 01 b8 00 00
20: 81 b4 00 00 01 b4 00 00 00 00 00 00 86 80 26 29
30: 00 00 00 00 70 00 00 00 00 00 00 00 03 02 00 00

00:1f.6 Signal processing controller: Intel Corporation 82801I (ICH9 Family)
Thermal Subsystem (rev 02)
        Subsystem: Intel Corporation 82801I (ICH9 Family) Thermal Subsystem
        Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR-
        Interrupt: pin C routed to IRQ 12
        Region 0: Memory at ffa6f000 (64-bit, non-prefetchable) [size=4K]
        Capabilities: [50] Power Management version 3
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00: 86 80 32 29 02 00 10 00 02 00 80 11 00 00 00 00
10: 04 f0 a6 ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 32 29
30: 00 00 00 00 50 00 00 00 00 00 00 00 0c 03 00 00

01:00.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC
(rev 01)
        Subsystem: Wistron NeWeb Corp. CM9 Wireless a/b/g MiniPCI Adapter
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr-
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
        Latency: 168 (2500ns min, 7000ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at ff6f0000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=2 PME-
00: 8c 16 13 00 16 00 90 02 01 00 00 02 08 a8 00 00
10: 00 00 6f ff 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 01 50 00 00 5f 18 12 10
30: 00 00 00 00 44 00 00 00 00 00 00 00 0e 01 0a 1c






Plugged usb devices:

Bus 004 Device 007: ID 045e:00f0 Microsoft Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x045e Microsoft Corp.
  idProduct          0x00f0
  bcdDevice            1.01
  iManufacturer           1 Microsoft Corporation
  iProduct                2 Microsoft � Laser Mouse 6000
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Devices
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode           33 US
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      59
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              10

Bus 004 Device 006: ID 0458:004c KYE Systems Corp. (Mouse Systems) Slimstar Pro
Keyboard
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0458 KYE Systems Corp. (Mouse Systems)
  idProduct          0x004c Slimstar Pro Keyboard
  bcdDevice            1.01
  iManufacturer           1 ABBHOME
  iProduct                2 USB Keyboard
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower               50mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Devices
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Devices
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     104
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10

Bus 004 Device 005: ID 04b4:2050 Cypress Semiconductor Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         0 Full speed (or root) hub
  bMaxPacketSize0         8
  idVendor           0x04b4 Cypress Semiconductor Corp.
  idProduct          0x2050
  bcdDevice            0.01
  iManufacturer           1 Bella Corporation
  iProduct                2 GBella Corporation DV Keyboard
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0001  1x 1 bytes
        bInterval             255
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             3
  wHubCharacteristic 0x000d
    Per-port power switching
    Compound device
    Per-port overcurrent protection
  bPwrOn2PwrGood       50 * 2 milli seconds
  bHubContrCurrent     25 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0x60
 Hub Port Status:
   Port 1: 0000.0103 power enable connect
   Port 2: 0000.0303 lowspeed power enable connect
   Port 3: 0000.0100 power

regards,
-- 
Jiri Slaby (jirislaby@gmail.com)
Faculty of Informatics, Masaryk University

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] ` <473F03DF.4020306@gmail.com>
@ 2007-11-17 15:12   ` Jiri Slaby
  2007-11-17 16:13   ` Alan Stern
  2007-11-17 20:37   ` Rafael J. Wysocki
  2 siblings, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-17 15:12 UTC (permalink / raw)
  To: Alan Stern; +Cc: Andrew Morton, linux-kernel, Linux-pm mailing list

On 11/17/2007 04:08 PM, Jiri Slaby wrote:
> On 11/16/2007 05:10 PM, Alan Stern wrote:
>> If there's also a config 
>> option to prevent the console from being suspended, set it as well.  
> 
> no_suspend_console kernel parameter has no effect (why?).

Eh, no, this (/proc/cmdline):
ro root=/dev/md1 reboo1 vga=1 2 no_console_suspend

regards,
-- 
Jiri Slaby (jirislaby@gmail.com)
Faculty of Informatics, Masaryk University

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] ` <473F03DF.4020306@gmail.com>
  2007-11-17 15:12   ` Jiri Slaby
@ 2007-11-17 16:13   ` Alan Stern
  2007-11-17 20:37   ` Rafael J. Wysocki
  2 siblings, 0 replies; 26+ messages in thread
From: Alan Stern @ 2007-11-17 16:13 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, linux-kernel, Linux-pm mailing list

On Sat, 17 Nov 2007, Jiri Slaby wrote:

> > The thing to do is figure out which driver is causing the problem.
> > Jiri, try enabling CONFIG_DEBUG_DRIVER.  
> 
> Sadly no output.

Guess I'll have to try running 2.6.24-rc2-mm1 on my own system.  In the 
meantime, you can try adding some printk statements to 
drivers/base/power/main.c.  In particular, see whether 
lock_all_devices() gets called from device_suspend(), whether it 
returns, and how far dpm_suspend() manages to get.

Alan Stern

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] ` <473F03DF.4020306@gmail.com>
  2007-11-17 15:12   ` Jiri Slaby
  2007-11-17 16:13   ` Alan Stern
@ 2007-11-17 20:37   ` Rafael J. Wysocki
  2 siblings, 0 replies; 26+ messages in thread
From: Rafael J. Wysocki @ 2007-11-17 20:37 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, linux-kernel, Linux-pm mailing list

On Saturday, 17 of November 2007, Jiri Slaby wrote:
> On 11/16/2007 05:10 PM, Alan Stern wrote:
> > On Thu, 15 Nov 2007, Greg KH wrote:
> > 
> >>> The offending -mm patch is
> >>> gregkh-driver-pm-acquire-device-locks-prior-to-suspending.patch
> >>>
> >>> 2.6.24-rc2-mm1 minus it works just fine; PROVE_LOCKING shows nothing new when
> >>> the patch is applied.
> >> Thanks for tracking this down.  Alan, any thoughts?
> > 
> > It's a driver problem somewhere.  Probably not one of the most common 
> > drivers because I don't see the same problem here (but then I'm not 
> > testing -mm).
> > 
> > The thing to do is figure out which driver is causing the problem.
> > Jiri, try enabling CONFIG_DEBUG_DRIVER.  
> 
> Sadly no output.
> 
> > If there's also a config 
> > option to prevent the console from being suspended, set it as well.  
> 
> no_suspend_console kernel parameter has no effect (why?).

I'm not sure.

Please try to set CONFIG_PM_VERBOSE.

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] <200711172137.18784.rjw@sisk.pl>
@ 2007-11-17 21:58 ` Alan Stern
  0 siblings, 0 replies; 26+ messages in thread
From: Alan Stern @ 2007-11-17 21:58 UTC (permalink / raw)
  To: Jiri Slaby, Andrew Morton; +Cc: Linux-pm mailing list, Kernel development list

On Sat, 17 Nov 2007, Rafael J. Wysocki wrote:

> On Saturday, 17 of November 2007, Jiri Slaby wrote:
> > On 11/16/2007 05:10 PM, Alan Stern wrote:
> > > On Thu, 15 Nov 2007, Greg KH wrote:
> > > 
> > >>> The offending -mm patch is
> > >>> gregkh-driver-pm-acquire-device-locks-prior-to-suspending.patch
> > >>>
> > >>> 2.6.24-rc2-mm1 minus it works just fine; PROVE_LOCKING shows nothing new when
> > >>> the patch is applied.
> > >> Thanks for tracking this down.  Alan, any thoughts?
> > > 
> > > It's a driver problem somewhere.  Probably not one of the most common 
> > > drivers because I don't see the same problem here (but then I'm not 
> > > testing -mm).
> > > 
> > > The thing to do is figure out which driver is causing the problem.
> > > Jiri, try enabling CONFIG_DEBUG_DRIVER.  
> > 
> > Sadly no output.
> > 
> > > If there's also a config 
> > > option to prevent the console from being suspended, set it as well.  
> > 
> > no_suspend_console kernel parameter has no effect (why?).
> 
> I'm not sure.
> 
> Please try to set CONFIG_PM_VERBOSE.

I finally got 2.6.24-rc2-mm1 working.  Andrew, how come those two
recent patches from Greg and Kay (the ones changing alloc_disk_node()  
and system_bus_init()) aren't in your hot-fixes directory?

There's still a problem.  During bootup I get this:

	floppy0: Floppy io-port 0x03f2 in use

That's not supposed to happen; the floppy disk should be working 
perfectly.  Is this a known problem?

Back to the main topic...  My system hibernates and resumes with no
apparent problem.  Jiri, it looks like you'll have to do some debug
tracing of the routines in drivers/base/power/main.c.

Alan Stern

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] <Pine.LNX.4.44L0.0711171649100.7748-100000@netrider.rowland.org>
@ 2007-11-18 12:42 ` Jiri Slaby
       [not found] ` <4740332A.80002@gmail.com>
  1 sibling, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-18 12:42 UTC (permalink / raw)
  To: Alan Stern; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

Alan Stern napsal(a):
> On Sat, 17 Nov 2007, Rafael J. Wysocki wrote:
>> On Saturday, 17 of November 2007, Jiri Slaby wrote:
>>> On 11/16/2007 05:10 PM, Alan Stern wrote:
>>>> The thing to do is figure out which driver is causing the problem.
>>>> Jiri, try enabling CONFIG_DEBUG_DRIVER.  
>>> Sadly no output.

Nice update scripts wiped kern.* from syslog config file out, hence no
output before.

> Back to the main topic...  My system hibernates and resumes with no
> apparent problem.  Jiri, it looks like you'll have to do some debug
> tracing of the routines in drivers/base/power/main.c.

Beside this two nothing strange:

dpm_suspend: b 00:06
WARNING: at /home/l/latest/bughunt/kernel/resource.c:185 __release_resource()

Call Trace:
 [<ffffffff8023f7b5>] release_resource+0xb5/0xf0
 [<ffffffff8036cda0>] pnp_release_resources+0x70/0x130
 [<ffffffff8036db85>] pnp_stop_dev+0x45/0x90
 [<ffffffff8036c942>] pnp_bus_suspend+0x92/0xb0
 [<ffffffff803b9f73>] suspend_device+0x113/0x180
 [<ffffffff803ba330>] device_suspend+0x200/0x320
 [<ffffffff80266905>] suspend_devices_and_enter+0xa5/0x170
 [<ffffffff80266bd9>] enter_state+0x209/0x270
 [<ffffffff80266cef>] state_store+0xaf/0xf0
 [<ffffffff8032ca67>] kobj_attr_store+0x17/0x20
 [<ffffffff802e459e>] sysfs_write_file+0xce/0x140
 [<ffffffff80299cc7>] vfs_write+0xc7/0x170
 [<ffffffff8029a360>] sys_write+0x50/0x90
 [<ffffffff8020bcde>] system_call+0x7e/0x83

WARNING: at /home/l/latest/bughunt/kernel/resource.c:189 __release_resource()

Call Trace:
 [<ffffffff8023f7e0>] release_resource+0xe0/0xf0
 [<ffffffff8036cda0>] pnp_release_resources+0x70/0x130
 [<ffffffff8036db85>] pnp_stop_dev+0x45/0x90
 [<ffffffff8036c942>] pnp_bus_suspend+0x92/0xb0
 [<ffffffff803b9f73>] suspend_device+0x113/0x180
 [<ffffffff803ba330>] device_suspend+0x200/0x320
 [<ffffffff80266905>] suspend_devices_and_enter+0xa5/0x170
 [<ffffffff80266bd9>] enter_state+0x209/0x270
 [<ffffffff80266cef>] state_store+0xaf/0xf0
 [<ffffffff8032ca67>] kobj_attr_store+0x17/0x20
 [<ffffffff802e459e>] sysfs_write_file+0xce/0x140
 [<ffffffff80299cc7>] vfs_write+0xc7/0x170
 [<ffffffff8029a360>] sys_write+0x50/0x90
 [<ffffffff8020bcde>] system_call+0x7e/0x83
...
dpm_suspend: b 0000:00:1f.5
ACPI Error (psargs-0355): [FZHD] Namespace lookup failure, AE_NOT_FOUND
ACPI Error (psparse-0537): Method parse/execution failed
[\_SB_.PCI0.SAT1.CHN0._GTM] (Node FFFF81007D000220), AE_NOT_FOUND
ACPI Error (psargs-0355): [FZHD] Namespace lookup failure, AE_NOT_FOUND
ACPI Error (psparse-0537): Method parse/execution failed
[\_SB_.PCI0.SAT1.CHN1._GTM] (Node FFFF81007D000360), AE_NOT_FOUND



It's stuck at _cpu_down (enter_state -> suspend_devices_and_enter ->
disable_nonboot_cpus -> _cpu_down) after calling raw_notifier_call_chain

        printk("%s: s\n", __func__);
        /* Wait for it to sleep (leaving idle task). */
        while (!idle_cpu(cpu))
                yield();

        printk("%s: t\n", __func__);
        /* This actually kills the CPU. */
        __cpu_die(cpu);

        printk("%s: u\n", __func__);
        BUBAK=1;
        /* CPU is completely dead: tell everyone.  Too late to complain. */
        if (raw_notifier_call_chain(&cpu_chain, CPU_DEAD | mod,
                                    hcpu) == NOTIFY_BAD)
                BUG();
        BUBAK=0;

        printk("%s: v\n", __func__);


See shot of prints here:
http://www.fi.muni.cz/~xslaby/sklad/susp_hang1.png

notifier_call_chain looks like:
        while (nb && nr_to_call) {
                next_nb = rcu_dereference(nb->next);
                ret = nb->notifier_call(nb, val, v);
                if (unlikely(BUBAK && cnt < 20 && (ret != lastr ||
                                lastp != nb->notifier_call))) {
                        printk("%s: c %p %d\n", __func__, nb->notifier_call,
                                        ret);
                        lastr = ret;
                        lastp = nb->notifier_call;
                        cnt++;
                }

                if (nr_calls)
                        (*nr_calls)++;

                if ((ret & NOTIFY_STOP_MASK) == NOTIFY_STOP_MASK)
                        break;
                nb = next_nb;
                nr_to_call--;
        }

System.map is here if you are curoius what are the pointers from the snapshot:
http://www.fi.muni.cz/~xslaby/sklad/System.map

regards,
-- 
http://www.fi.muni.cz/~xslaby/            Jiri Slaby
faculty of informatics, masaryk university, brno, cz

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] ` <4740332A.80002@gmail.com>
@ 2007-11-18 13:06   ` Jiri Slaby
       [not found]   ` <474038C9.3040002@gmail.com>
  1 sibling, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-18 13:06 UTC (permalink / raw)
  To: Alan Stern; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On 11/18/2007 01:42 PM, Jiri Slaby wrote:
> See shot of prints here:
> http://www.fi.muni.cz/~xslaby/sklad/susp_hang1.png

BTW output from that tree minus the patch:
_cpu_down: s
_cpu_down: t
CPU 1 is now offline
SMP alternatives: switching to UP code
_cpu_down: u
notifier_call_chain: c FFFFFFFF80232370 1
notifier_call_chain: c FFFFFFFF8026EF10 1
notifier_call_chain: c FFFFFFFF8024B8F0 1
notifier_call_chain: c FFFFFFFF802419E0 1
notifier_call_chain: c FFFFFFFF80255B50 1
notifier_call_chain: c FFFFFFFF80250C40 1
notifier_call_chain: c FFFFFFFF8028E8F0 1
notifier_call_chain: c FFFFFFFF802B59C0 1
notifier_call_chain: c FFFFFFFF80323460 1
notifier_call_chain: c FFFFFFFF80270990 0
notifier_call_chain: c FFFFFFFF8023D5D0 1
notifier_call_chain: c FFFFFFFF80266090 1
notifier_call_chain: c FFFFFFFF802320A0 1
notifier_call_chain: c FFFFFFFF80249DA0 1
notifier_call_chain: c FFFFFFFF80318440 1
notifier_call_chain: c FFFFFFFF8047BE80 1
notifier_call_chain: c FFFFFFFF80212F40 0
notifier_call_chain: c FFFFFFFF80216350 1
notifier_call_chain: c FFFFFFFF80217220 1
notifier_call_chain: c FFFFFFFF80218120 1
_cpu_down: v
_cpu_down: w
_cpu_down: x
_cpu_down: y
_cpu_down: z
disable_nonboot_cpus: 3 0

regards,
-- 
Jiri Slaby (jirislaby@gmail.com)
Faculty of Informatics, Masaryk University

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]   ` <474038C9.3040002@gmail.com>
@ 2007-11-18 13:42     ` Rafael J. Wysocki
       [not found]     ` <200711181442.09917.rjw@sisk.pl>
  1 sibling, 0 replies; 26+ messages in thread
From: Rafael J. Wysocki @ 2007-11-18 13:42 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On Sunday, 18 of November 2007, Jiri Slaby wrote:
> On 11/18/2007 01:42 PM, Jiri Slaby wrote:
> > See shot of prints here:
> > http://www.fi.muni.cz/~xslaby/sklad/susp_hang1.png
> 
> BTW output from that tree minus the patch:

Hm, it looks like one of the CPU hotplug notifiers is doing something wrong.

Can you try to see what happens (with the patch applied) if
thermal_throttle_cpu_callback() is not registered?

> _cpu_down: s
> _cpu_down: t
> CPU 1 is now offline
> SMP alternatives: switching to UP code
> _cpu_down: u
> notifier_call_chain: c FFFFFFFF80232370 1
> notifier_call_chain: c FFFFFFFF8026EF10 1
> notifier_call_chain: c FFFFFFFF8024B8F0 1
> notifier_call_chain: c FFFFFFFF802419E0 1
> notifier_call_chain: c FFFFFFFF80255B50 1
> notifier_call_chain: c FFFFFFFF80250C40 1
> notifier_call_chain: c FFFFFFFF8028E8F0 1
> notifier_call_chain: c FFFFFFFF802B59C0 1
> notifier_call_chain: c FFFFFFFF80323460 1
> notifier_call_chain: c FFFFFFFF80270990 0
> notifier_call_chain: c FFFFFFFF8023D5D0 1
> notifier_call_chain: c FFFFFFFF80266090 1
> notifier_call_chain: c FFFFFFFF802320A0 1
> notifier_call_chain: c FFFFFFFF80249DA0 1
> notifier_call_chain: c FFFFFFFF80318440 1
> notifier_call_chain: c FFFFFFFF8047BE80 1
> notifier_call_chain: c FFFFFFFF80212F40 0
> notifier_call_chain: c FFFFFFFF80216350 1
> notifier_call_chain: c FFFFFFFF80217220 1
> notifier_call_chain: c FFFFFFFF80218120 1
> _cpu_down: v
> _cpu_down: w
> _cpu_down: x
> _cpu_down: y
> _cpu_down: z
> disable_nonboot_cpus: 3 0

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]     ` <200711181442.09917.rjw@sisk.pl>
@ 2007-11-18 13:53       ` Jiri Slaby
       [not found]       ` <474043EC.4000700@gmail.com>
  1 sibling, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-18 13:53 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On 11/18/2007 02:42 PM, Rafael J. Wysocki wrote:
> On Sunday, 18 of November 2007, Jiri Slaby wrote:
>> On 11/18/2007 01:42 PM, Jiri Slaby wrote:
>>> See shot of prints here:
>>> http://www.fi.muni.cz/~xslaby/sklad/susp_hang1.png
>> BTW output from that tree minus the patch:
> 
> Hm, it looks like one of the CPU hotplug notifiers is doing something wrong.
> 
> Can you try to see what happens (with the patch applied) if
> thermal_throttle_cpu_callback() is not registered?

After commenting out
//device_initcall(thermal_throttle_init_device);
it looks like this:
http://www.fi.muni.cz/~xslaby/sklad/susp_hang2.png

regards,
-- 
Jiri Slaby (jirislaby@gmail.com)
Faculty of Informatics, Masaryk University

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]         ` <200711181603.26522.rjw@sisk.pl>
@ 2007-11-18 14:49           ` Jiri Slaby
       [not found]           ` <474050EC.5080507@gmail.com>
  1 sibling, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-18 14:49 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On 11/18/2007 04:03 PM, Rafael J. Wysocki wrote:
> Can you also make the new System-map available, please?

Sure:
http://www.fi.muni.cz/~xslaby/sklad/System.map1

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]       ` <474043EC.4000700@gmail.com>
       [not found]         ` <200711181603.26522.rjw@sisk.pl>
@ 2007-11-18 15:03         ` Rafael J. Wysocki
  1 sibling, 0 replies; 26+ messages in thread
From: Rafael J. Wysocki @ 2007-11-18 15:03 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On Sunday, 18 of November 2007, Jiri Slaby wrote:
> On 11/18/2007 02:42 PM, Rafael J. Wysocki wrote:
> > On Sunday, 18 of November 2007, Jiri Slaby wrote:
> >> On 11/18/2007 01:42 PM, Jiri Slaby wrote:
> >>> See shot of prints here:
> >>> http://www.fi.muni.cz/~xslaby/sklad/susp_hang1.png
> >> BTW output from that tree minus the patch:
> > 
> > Hm, it looks like one of the CPU hotplug notifiers is doing something wrong.
> > 
> > Can you try to see what happens (with the patch applied) if
> > thermal_throttle_cpu_callback() is not registered?
> 
> After commenting out
> //device_initcall(thermal_throttle_init_device);
> it looks like this:
> http://www.fi.muni.cz/~xslaby/sklad/susp_hang2.png

Can you also make the new System-map available, please?

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]             ` <200711181623.20029.rjwysocki@sisk.pl>
@ 2007-11-18 15:15               ` Jiri Slaby
  0 siblings, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-18 15:15 UTC (permalink / raw)
  To: "Rafał J. Wysocki"
  Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On 11/18/2007 04:23 PM, Rafał J. Wysocki wrote:
> On Sunday, 18 of November 2007, Jiri Slaby wrote:
>> On 11/18/2007 04:03 PM, Rafael J. Wysocki wrote:
>>> Can you also make the new System-map available, please?
>> Sure:
>> http://www.fi.muni.cz/~xslaby/sklad/System.map1
> 
> The last notifier called in http://www.fi.muni.cz/~xslaby/sklad/susp_hang2.png

Last... Note, that it's only first 20 invokations of notifiers, there are
bazillion of them when I remove the condition '< 20'.

> is apparently cpu_swap_callback() which is not called in
> http://www.fi.muni.cz/~xslaby/sklad/susp_hang1.png .
> 
> Can you verify that cpu_swap_callback() gets called if the patch is not
> applied?

Does this still apply?

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]           ` <474050EC.5080507@gmail.com>
       [not found]             ` <200711181623.20029.rjwysocki@sisk.pl>
@ 2007-11-18 15:23             ` Rafał J. Wysocki
  1 sibling, 0 replies; 26+ messages in thread
From: Rafał J. Wysocki @ 2007-11-18 15:23 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On Sunday, 18 of November 2007, Jiri Slaby wrote:
> On 11/18/2007 04:03 PM, Rafael J. Wysocki wrote:
> > Can you also make the new System-map available, please?
> 
> Sure:
> http://www.fi.muni.cz/~xslaby/sklad/System.map1

The last notifier called in http://www.fi.muni.cz/~xslaby/sklad/susp_hang2.png
is apparently cpu_swap_callback() which is not called in
http://www.fi.muni.cz/~xslaby/sklad/susp_hang1.png .

Can you verify that cpu_swap_callback() gets called if the patch is not
applied?

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] <4740570A.5030101@gmail.com>
@ 2007-11-18 17:07 ` Alan Stern
  0 siblings, 0 replies; 26+ messages in thread
From: Alan Stern @ 2007-11-18 17:07 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On Sun, 18 Nov 2007, Jiri Slaby wrote:

> On 11/18/2007 04:23 PM, Rafał J. Wysocki wrote:
> > On Sunday, 18 of November 2007, Jiri Slaby wrote:
> >> On 11/18/2007 04:03 PM, Rafael J. Wysocki wrote:
> >>> Can you also make the new System-map available, please?
> >> Sure:
> >> http://www.fi.muni.cz/~xslaby/sklad/System.map1
> > 
> > The last notifier called in http://www.fi.muni.cz/~xslaby/sklad/susp_hang2.png
> 
> Last... Note, that it's only first 20 invokations of notifiers, there are
> bazillion of them when I remove the condition '< 20'.
> 
> > is apparently cpu_swap_callback() which is not called in
> > http://www.fi.muni.cz/~xslaby/sklad/susp_hang1.png .
> > 
> > Can you verify that cpu_swap_callback() gets called if the patch is not
> > applied?
> 
> Does this still apply?

You'll get more useful results if you redo your changes to 
notifier_call_chain().  Have it print out the address of the routine 
_before_ making the call, and don't limit it to 20.  That way you'll 
know exactly which notifier routine ends up hanging.

Alan Stern

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] <Pine.LNX.4.44L0.0711181203220.5712-100000@netrider.rowland.org>
@ 2007-11-18 19:09 ` Jiri Slaby
       [not found]   ` <200711182328.00570.rjw@sisk.pl>
                     ` (2 more replies)
  0 siblings, 3 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-18 19:09 UTC (permalink / raw)
  To: Alan Stern; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On 11/18/2007 06:07 PM, Alan Stern wrote:
> You'll get more useful results if you redo your changes to 
> notifier_call_chain().  Have it print out the address of the routine 
> _before_ making the call, and don't limit it to 20.  That way you'll 
> know exactly which notifier routine ends up hanging.

The problem is, that notifier_call_chain is called again and again zillion times
by somebody else...

Anyway you led me to another idea:
* _cpu_down
        printk("%s: u\n", __func__);
        BUBAK=1;
        /* CPU is completely dead: tell everyone.  Too late to complain. */
        if (raw_notifier_call_chain(&cpu_chain, CPU_DEAD | 0x88000 | mod,
                                    hcpu) == NOTIFY_BAD)
                BUG();
        BUBAK=0;
-----
* notifier_call_chain
        unsigned int a = val & 0x88000;
        unsigned int yes = a == 0x88000;

        nb = rcu_dereference(*nl);

        if (a && a != 0x88000)
                printk("Somebody calls with val: %lx\n", val);
        else
                val &= ~0x88000;

        while (nb && nr_to_call) {
                next_nb = rcu_dereference(nb->next);
                if (unlikely(BUBAK && yes))
                        printk("%s: %p\n", __func__, nb->notifier_call);
                ret = nb->notifier_call(nb, val, v);
-----
gives coretemp_cpu_callback -> coretemp_device_remove ->
platform_device_unregister, so coretemp seems to be what I have and you don't.

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]   ` <200711182328.00570.rjw@sisk.pl>
@ 2007-11-18 22:12     ` Jiri Slaby
       [not found]     ` <4740B8E9.4030903@gmail.com>
  1 sibling, 0 replies; 26+ messages in thread
From: Jiri Slaby @ 2007-11-18 22:12 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On 11/18/2007 11:27 PM, Rafael J. Wysocki wrote:
> You can use a global variable to switch the logging only before the CPU
> hotunplug done by the suspend code.  You just need to hack
> disable_nonboot_cpus() for that.

If I understand you correctly, that's what BUBAK variable is there for. But it
is still called again and again while the suspend code runs...

regards,
-- 
Jiri Slaby (jirislaby@gmail.com)
Faculty of Informatics, Masaryk University

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
  2007-11-18 19:09 ` broken suspend [Was: 2.6.24-rc2-mm1] Jiri Slaby
       [not found]   ` <200711182328.00570.rjw@sisk.pl>
@ 2007-11-18 22:27   ` Jiri Slaby
  2007-11-19  3:04     ` Alan Stern
  2007-11-18 22:27   ` Rafael J. Wysocki
  2 siblings, 1 reply; 26+ messages in thread
From: Jiri Slaby @ 2007-11-18 22:27 UTC (permalink / raw)
  To: Alan Stern
  Cc: r.marek, Kernel development list, lm-sensors, Andrew Morton,
	Linux-pm mailing list

Aah, we probably should let coretemp people known.

Whole thread:
http://marc.info/?t=119507205800001&r=1&w=2

On 11/18/2007 08:09 PM, Jiri Slaby wrote:
> On 11/18/2007 06:07 PM, Alan Stern wrote:
>> You'll get more useful results if you redo your changes to 
>> notifier_call_chain().  Have it print out the address of the routine 
>> _before_ making the call, and don't limit it to 20.  That way you'll 
>> know exactly which notifier routine ends up hanging.
> 
> The problem is, that notifier_call_chain is called again and again zillion times
> by somebody else...
> 
> Anyway you led me to another idea:
> * _cpu_down
>         printk("%s: u\n", __func__);
>         BUBAK=1;
>         /* CPU is completely dead: tell everyone.  Too late to complain. */
>         if (raw_notifier_call_chain(&cpu_chain, CPU_DEAD | 0x88000 | mod,
>                                     hcpu) == NOTIFY_BAD)
>                 BUG();
>         BUBAK=0;
> -----
> * notifier_call_chain
>         unsigned int a = val & 0x88000;
>         unsigned int yes = a == 0x88000;
> 
>         nb = rcu_dereference(*nl);
> 
>         if (a && a != 0x88000)
>                 printk("Somebody calls with val: %lx\n", val);
>         else
>                 val &= ~0x88000;
> 
>         while (nb && nr_to_call) {
>                 next_nb = rcu_dereference(nb->next);
>                 if (unlikely(BUBAK && yes))
>                         printk("%s: %p\n", __func__, nb->notifier_call);
>                 ret = nb->notifier_call(nb, val, v);
> -----
> gives coretemp_cpu_callback -> coretemp_device_remove ->
> platform_device_unregister, so coretemp seems to be what I have and you don't.

Just in case you are curious:
http://www.fi.muni.cz/~xslaby/sklad/susp_hang3.diff
produces:
http://www.fi.muni.cz/~xslaby/sklad/susp_hang3.png

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
  2007-11-18 19:09 ` broken suspend [Was: 2.6.24-rc2-mm1] Jiri Slaby
       [not found]   ` <200711182328.00570.rjw@sisk.pl>
  2007-11-18 22:27   ` Jiri Slaby
@ 2007-11-18 22:27   ` Rafael J. Wysocki
  2 siblings, 0 replies; 26+ messages in thread
From: Rafael J. Wysocki @ 2007-11-18 22:27 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On Sunday, 18 of November 2007, Jiri Slaby wrote:
> On 11/18/2007 06:07 PM, Alan Stern wrote:
> > You'll get more useful results if you redo your changes to 
> > notifier_call_chain().  Have it print out the address of the routine 
> > _before_ making the call, and don't limit it to 20.  That way you'll 
> > know exactly which notifier routine ends up hanging.
> 
> The problem is, that notifier_call_chain is called again and again zillion times
> by somebody else...

You can use a global variable to switch the logging only before the CPU
hotunplug done by the suspend code.  You just need to hack
disable_nonboot_cpus() for that.

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found]     ` <4740B8E9.4030903@gmail.com>
@ 2007-11-18 22:42       ` Rafael J. Wysocki
  0 siblings, 0 replies; 26+ messages in thread
From: Rafael J. Wysocki @ 2007-11-18 22:42 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Andrew Morton, Kernel development list, Linux-pm mailing list

On Sunday, 18 of November 2007, Jiri Slaby wrote:
> On 11/18/2007 11:27 PM, Rafael J. Wysocki wrote:
> > You can use a global variable to switch the logging only before the CPU
> > hotunplug done by the suspend code.  You just need to hack
> > disable_nonboot_cpus() for that.
> 
> If I understand you correctly, that's what BUBAK variable is there for.

Ah, yes.

-ETOOTIRED

> But it is still called again and again while the suspend code runs...

You can count the number of calls and then make it print the information for
the last, say, 20 of them.

Greetings,
Rafael

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
  2007-11-18 22:27   ` Jiri Slaby
@ 2007-11-19  3:04     ` Alan Stern
  0 siblings, 0 replies; 26+ messages in thread
From: Alan Stern @ 2007-11-19  3:04 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: r.marek, Kernel development list, lm-sensors, Andrew Morton,
	Linux-pm mailing list

On Sun, 18 Nov 2007, Jiri Slaby wrote:

> > gives coretemp_cpu_callback -> coretemp_device_remove ->
> > platform_device_unregister, so coretemp seems to be what I have and you don't.

Yes.

For the coretemp developers: coretemp_cpu_callback() needs to be more 
careful about what it does.  During a system sleep transition (suspend, 
hibernate, resume) it isn't possible to register or unregister a 
device.  Attempts to register will fail and attempts to unregister will 
block until the system sleep is over -- and for this callback that 
means hanging.

It's not clear what the best way is to fix this.  Perhaps the CPU 
notification should be sent along with a special flag indicating that 
the CPU transition is part of a system sleep (although this seems 
racy).  Perhaps the driver should notice when a system sleep begins, 
and defer all CPU-change handling until after the sleep is over.

Alan Stern

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] <Pine.LNX.4.44L0.0711182156330.22727-100000@netrider.rowland.org>
@ 2007-11-19 20:01 ` Rudolf Marek
       [not found] ` <4741EB91.9080000@assembler.cz>
  1 sibling, 0 replies; 26+ messages in thread
From: Rudolf Marek @ 2007-11-19 20:01 UTC (permalink / raw)
  To: Alan Stern
  Cc: Jiri Slaby, Kernel development list, lm-sensors, Andrew Morton,
	Linux-pm mailing list

Hello all,
>>> gives coretemp_cpu_callback -> coretemp_device_remove ->
>>> platform_device_unregister, so coretemp seems to be what I have and you don't.
> 
> Yes.
> 
> For the coretemp developers: coretemp_cpu_callback() needs to be more 
> careful about what it does.  During a system sleep transition (suspend, 
> hibernate, resume) it isn't possible to register or unregister a 
> device.  Attempts to register will fail and attempts to unregister will 
> block until the system sleep is over -- and for this callback that 
> means hanging.

Well I wrote the driver. Thanks for the clarification. If I recall correctly I 
looked how this part should be done from others drivers. Now while checking
what happened to the file, seems Rafael added something related.

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d

> It's not clear what the best way is to fix this.  Perhaps the CPU 
> notification should be sent along with a special flag indicating that 
> the CPU transition is part of a system sleep (although this seems 
> racy).  Perhaps the driver should notice when a system sleep begins, 
> and defer all CPU-change handling until after the sleep is over.

maybe it does exist?  CPU_DOWN_PREPARE ?

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/cpu-hotplug.txt;hb=HEAD

Unfortunately I'm not very familiar with this, calling the 
coretemp_device_remove from CPU_DOWN_PREPARE would help? Looking at microcode 
driver, seems it just hide sysfs interface from user.

Thanks,
Rudolf

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] ` <4741EB91.9080000@assembler.cz>
@ 2007-11-19 20:27   ` Alan Stern
  2007-11-19 21:53   ` Rafael J. Wysocki
  1 sibling, 0 replies; 26+ messages in thread
From: Alan Stern @ 2007-11-19 20:27 UTC (permalink / raw)
  To: Rudolf Marek
  Cc: Jiri Slaby, Kernel development list, lm-sensors, Andrew Morton,
	Linux-pm mailing list

On Mon, 19 Nov 2007, Rudolf Marek wrote:

> Hello all,
> >>> gives coretemp_cpu_callback -> coretemp_device_remove ->
> >>> platform_device_unregister, so coretemp seems to be what I have and you don't.
> > 
> > Yes.
> > 
> > For the coretemp developers: coretemp_cpu_callback() needs to be more 
> > careful about what it does.  During a system sleep transition (suspend, 
> > hibernate, resume) it isn't possible to register or unregister a 
> > device.  Attempts to register will fail and attempts to unregister will 
> > block until the system sleep is over -- and for this callback that 
> > means hanging.
> 
> Well I wrote the driver. Thanks for the clarification. If I recall correctly I 
> looked how this part should be done from others drivers. Now while checking
> what happened to the file, seems Rafael added something related.
> 
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d

That does look like it was meant for exactly this sort of situation.

> > It's not clear what the best way is to fix this.  Perhaps the CPU 
> > notification should be sent along with a special flag indicating that 
> > the CPU transition is part of a system sleep (although this seems 
> > racy).  Perhaps the driver should notice when a system sleep begins, 
> > and defer all CPU-change handling until after the sleep is over.
> 
> maybe it does exist?  CPU_DOWN_PREPARE ?
> 
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/cpu-hotplug.txt;hb=HEAD
> 
> Unfortunately I'm not very familiar with this, calling the 
> coretemp_device_remove from CPU_DOWN_PREPARE would help? Looking at microcode 
> driver, seems it just hide sysfs interface from user.

I'm not sure exactly what you want to do here.  But it seems like a 
waste to unregister the coretemp devices at the start of a system sleep 
and then register them back at the end.

Could you simply leave the devices registered throughout the entire
sleep?  Of course, at the end you would have to check that all the CPUs
really did come back up, and unregister the devices for the CPUs that
are still offline.

Alan Stern

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

* Re: broken suspend [Was: 2.6.24-rc2-mm1]
       [not found] ` <4741EB91.9080000@assembler.cz>
  2007-11-19 20:27   ` Alan Stern
@ 2007-11-19 21:53   ` Rafael J. Wysocki
  1 sibling, 0 replies; 26+ messages in thread
From: Rafael J. Wysocki @ 2007-11-19 21:53 UTC (permalink / raw)
  To: Rudolf Marek
  Cc: Jiri Slaby, Kernel development list, lm-sensors, Andrew Morton,
	Linux-pm mailing list

On Monday, 19 of November 2007, Rudolf Marek wrote:
> Hello all,
> >>> gives coretemp_cpu_callback -> coretemp_device_remove ->
> >>> platform_device_unregister, so coretemp seems to be what I have and you don't.
> > 
> > Yes.
> > 
> > For the coretemp developers: coretemp_cpu_callback() needs to be more 
> > careful about what it does.  During a system sleep transition (suspend, 
> > hibernate, resume) it isn't possible to register or unregister a 
> > device.  Attempts to register will fail and attempts to unregister will 
> > block until the system sleep is over -- and for this callback that 
> > means hanging.
> 
> Well I wrote the driver. Thanks for the clarification. If I recall correctly I 
> looked how this part should be done from others drivers. Now while checking
> what happened to the file, seems Rafael added something related.
> 
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d

Well, in principle you can use the observation that the _FROZEN versions
are used during suspend/hibernation.  Thus, if you only unregister the device
for CPU_DEAD, but you won't do that for CPU_DEAD_FROZEN, it will work as long
as the freezer is there.

> > It's not clear what the best way is to fix this.  Perhaps the CPU 
> > notification should be sent along with a special flag indicating that 
> > the CPU transition is part of a system sleep (although this seems 
> > racy).

In fact, it's already done that way and I don't think it's racy (see above).

Greetings,
Rafael

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

end of thread, other threads:[~2007-11-19 21:53 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <Pine.LNX.4.44L0.0711181203220.5712-100000@netrider.rowland.org>
2007-11-18 19:09 ` broken suspend [Was: 2.6.24-rc2-mm1] Jiri Slaby
     [not found]   ` <200711182328.00570.rjw@sisk.pl>
2007-11-18 22:12     ` Jiri Slaby
     [not found]     ` <4740B8E9.4030903@gmail.com>
2007-11-18 22:42       ` Rafael J. Wysocki
2007-11-18 22:27   ` Jiri Slaby
2007-11-19  3:04     ` Alan Stern
2007-11-18 22:27   ` Rafael J. Wysocki
     [not found] <Pine.LNX.4.44L0.0711182156330.22727-100000@netrider.rowland.org>
2007-11-19 20:01 ` Rudolf Marek
     [not found] ` <4741EB91.9080000@assembler.cz>
2007-11-19 20:27   ` Alan Stern
2007-11-19 21:53   ` Rafael J. Wysocki
     [not found] <4740570A.5030101@gmail.com>
2007-11-18 17:07 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0711171649100.7748-100000@netrider.rowland.org>
2007-11-18 12:42 ` Jiri Slaby
     [not found] ` <4740332A.80002@gmail.com>
2007-11-18 13:06   ` Jiri Slaby
     [not found]   ` <474038C9.3040002@gmail.com>
2007-11-18 13:42     ` Rafael J. Wysocki
     [not found]     ` <200711181442.09917.rjw@sisk.pl>
2007-11-18 13:53       ` Jiri Slaby
     [not found]       ` <474043EC.4000700@gmail.com>
     [not found]         ` <200711181603.26522.rjw@sisk.pl>
2007-11-18 14:49           ` Jiri Slaby
     [not found]           ` <474050EC.5080507@gmail.com>
     [not found]             ` <200711181623.20029.rjwysocki@sisk.pl>
2007-11-18 15:15               ` Jiri Slaby
2007-11-18 15:23             ` Rafał J. Wysocki
2007-11-18 15:03         ` Rafael J. Wysocki
     [not found] <200711172137.18784.rjw@sisk.pl>
2007-11-17 21:58 ` Alan Stern
     [not found] <Pine.LNX.4.44L0.0711161058170.2738-100000@iolanthe.rowland.org>
2007-11-17 15:08 ` Jiri Slaby
     [not found] ` <473F03DF.4020306@gmail.com>
2007-11-17 15:12   ` Jiri Slaby
2007-11-17 16:13   ` Alan Stern
2007-11-17 20:37   ` Rafael J. Wysocki
     [not found] <20071116003836.GA24490@kroah.com>
2007-11-16 16:10 ` Alan Stern
     [not found] <20071113175906.497a1a6a.akpm@linux-foundation.org>
     [not found] ` <473B5987.60904@gmail.com>
     [not found]   ` <200711142248.59547.rjw@sisk.pl>
2007-11-15 23:59     ` Jiri Slaby
     [not found]     ` <473CDD6D.8080008@gmail.com>
2007-11-16  0:38       ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox