* 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time @ 2010-02-17 18:47 Pedro Ribeiro 2010-02-17 20:11 ` Rafael J. Wysocki 0 siblings, 1 reply; 18+ messages in thread From: Pedro Ribeiro @ 2010-02-17 18:47 UTC (permalink / raw) To: linux-kernel, intel-gfx, Rafael J. Wysocki [-- Attachment #1: Type: text/plain, Size: 576 bytes --] Hi, commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash while aborting hibernation) introduced two new issues which were not present in 2.6.33-rc7: - every second resume from hibernate results in a blank screen - the annoying flash at the end of atomic copy/restore during the hibernate process is back (present in kernels < 2.6.33) The first issue is serious, the second is just an annoyance. Reverting this commit fixes both issues. My platform is Lenovo T400, G45 chipset. lspci is attached, please let me know if you need more info. Regards, Pedro [-- Attachment #2: lspci --] [-- Type: application/octet-stream, Size: 14058 bytes --] 00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07) Subsystem: Lenovo Device 20e0 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx- Latency: 0 Capabilities: <access denied> Kernel driver in use: agpgart-intel 00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07) (prog-if 00 [VGA controller]) Subsystem: Lenovo Device 20e4 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 31 Region 0: Memory at f4400000 (64-bit, non-prefetchable) [size=4M] Region 2: Memory at d0000000 (64-bit, prefetchable) [size=256M] Region 4: I/O ports at 1800 [size=8] Expansion ROM at <unassigned> [disabled] Capabilities: <access denied> Kernel driver in use: i915 00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07) Subsystem: Lenovo Device 20e4 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Region 0: Memory at f4200000 (64-bit, non-prefetchable) [size=1M] Capabilities: <access denied> 00:03.0 Communication controller: Intel Corporation Mobile 4 Series Chipset MEI Controller (rev 07) Subsystem: Lenovo Device 20e6 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 11 Region 0: Memory at fc225800 (64-bit, non-prefetchable) [size=16] Capabilities: <access denied> 00:19.0 Ethernet controller: Intel Corporation 82567LF Gigabit Network Connection (rev 03) Subsystem: Lenovo Device 20ee Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 27 Region 0: Memory at fc000000 (32-bit, non-prefetchable) [size=128K] Region 1: Memory at fc024000 (32-bit, non-prefetchable) [size=4K] Region 2: I/O ports at 1820 [size=32] Capabilities: <access denied> Kernel driver in use: e1000e 00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03) (prog-if 00 [UHCI]) Subsystem: Lenovo Device 20f0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 20 Region 4: I/O ports at 1840 [size=32] Capabilities: <access denied> Kernel driver in use: uhci_hcd 00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03) (prog-if 00 [UHCI]) Subsystem: Lenovo Device 20f0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin B routed to IRQ 21 Region 4: I/O ports at 1860 [size=32] Capabilities: <access denied> Kernel driver in use: uhci_hcd 00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03) (prog-if 00 [UHCI]) Subsystem: Lenovo Device 20f0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin C routed to IRQ 22 Region 4: I/O ports at 1880 [size=32] Capabilities: <access denied> Kernel driver in use: uhci_hcd 00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03) (prog-if 20 [EHCI]) Subsystem: Lenovo Device 20f1 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin D routed to IRQ 23 Region 0: Memory at fc225c00 (32-bit, non-prefetchable) [size=1K] Capabilities: <access denied> Kernel driver in use: ehci_hcd 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03) Subsystem: Lenovo Device 20f2 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin B routed to IRQ 30 Region 0: Memory at fc020000 (64-bit, non-prefetchable) [size=16K] Capabilities: <access denied> Kernel driver in use: HDA Intel 00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Bus: primary=00, secondary=02, subordinate=02, sec-latency=0 I/O behind bridge: 00002000-00002fff Memory behind bridge: c0000000-c01fffff Prefetchable memory behind bridge: 00000000c0200000-00000000c03fffff Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR- BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: <access denied> Kernel driver in use: pcieport 00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Bus: primary=00, secondary=03, subordinate=03, sec-latency=0 I/O behind bridge: 00008000-00008fff Memory behind bridge: f4300000-f43fffff Prefetchable memory behind bridge: 00000000c0400000-00000000c05fffff Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR- BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: <access denied> Kernel driver in use: pcieport 00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 03) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Bus: primary=00, secondary=0d, subordinate=14, sec-latency=0 I/O behind bridge: 00003000-00003fff Memory behind bridge: fa000000-fbffffff Prefetchable memory behind bridge: 00000000f4100000-00000000f41fffff Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR- BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: <access denied> Kernel driver in use: pcieport 00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03) (prog-if 00 [UHCI]) Subsystem: Lenovo Device 20f0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 16 Region 4: I/O ports at 18a0 [size=32] Capabilities: <access denied> Kernel driver in use: uhci_hcd 00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03) (prog-if 00 [UHCI]) Subsystem: Lenovo Device 20f0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin B routed to IRQ 17 Region 4: I/O ports at 18c0 [size=32] Capabilities: <access denied> Kernel driver in use: uhci_hcd 00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03) (prog-if 00 [UHCI]) Subsystem: Lenovo Device 20f0 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin C routed to IRQ 18 Region 4: I/O ports at 18e0 [size=32] Capabilities: <access denied> Kernel driver in use: uhci_hcd 00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03) (prog-if 20 [EHCI]) Subsystem: Lenovo Device 20f1 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin D routed to IRQ 19 Region 0: Memory at fc226000 (32-bit, non-prefetchable) [size=1K] Capabilities: <access denied> Kernel driver in use: ehci_hcd 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93) (prog-if 01 [Subtractive decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Bus: primary=00, secondary=15, subordinate=18, sec-latency=32 I/O behind bridge: 00004000-00007fff Memory behind bridge: f4800000-f7ffffff Prefetchable memory behind bridge: 00000000f0000000-00000000f3ffffff Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR- BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: <access denied> 00:1f.0 ISA bridge: Intel Corporation ICH9M LPC Interface Controller (rev 03) Subsystem: Lenovo Device 20f6 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Capabilities: <access denied> 00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03) (prog-if 01 [AHCI 1.0]) Subsystem: Lenovo Device 20f8 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin B routed to IRQ 28 Region 0: I/O ports at 1818 [size=8] Region 1: I/O ports at 180c [size=4] Region 2: I/O ports at 1810 [size=8] Region 3: I/O ports at 1808 [size=4] Region 4: I/O ports at 1c00 [size=32] Region 5: Memory at fc225000 (32-bit, non-prefetchable) [size=2K] Capabilities: <access denied> Kernel driver in use: ahci 00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03) Subsystem: Lenovo Device 20f9 Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Interrupt: pin A routed to IRQ 23 Region 0: Memory at fc226400 (64-bit, non-prefetchable) [size=256] Region 4: I/O ports at 1c20 [size=32] Kernel driver in use: i801_smbus 03:00.0 Network controller: Intel Corporation PRO/Wireless 5100 AGN [Shiloh] Network Connection Subsystem: Intel Corporation PRO/Wireless 5100AGN Network Connection Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 29 Region 0: Memory at f4300000 (64-bit, non-prefetchable) [size=8K] Capabilities: <access denied> Kernel driver in use: iwlagn 15:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ba) Subsystem: Lenovo Device 20c6 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 32, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 16 Region 0: Memory at f4800000 (32-bit, non-prefetchable) [size=4K] Bus: primary=15, secondary=16, subordinate=17, sec-latency=176 Memory window 0: f0000000-f3fff000 (prefetchable) Memory window 1: c4000000-c7fff000 (prefetchable) I/O window 0: 00004000-000040ff I/O window 1: 00004400-000044ff BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt+ PostWrite+ 16-bit legacy interface ports at 0001 15:00.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 04) (prog-if 10 [OHCI]) Subsystem: Lenovo Device 20c7 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 32 (500ns min, 1000ns max), Cache Line Size: 64 bytes Interrupt: pin B routed to IRQ 17 Region 0: Memory at f4801000 (32-bit, non-prefetchable) [size=2K] Capabilities: <access denied> ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time 2010-02-17 18:47 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time Pedro Ribeiro @ 2010-02-17 20:11 ` Rafael J. Wysocki 2010-02-17 20:52 ` Rafael J. Wysocki 0 siblings, 1 reply; 18+ messages in thread From: Rafael J. Wysocki @ 2010-02-17 20:11 UTC (permalink / raw) To: Pedro Ribeiro; +Cc: linux-kernel, intel-gfx On Wednesday 17 February 2010, Pedro Ribeiro wrote: > Hi, > > commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash > while aborting hibernation) introduced two new issues which were not > present in 2.6.33-rc7: > > - every second resume from hibernate results in a blank screen > - the annoying flash at the end of atomic copy/restore during the > hibernate process is back (present in kernels < 2.6.33) > > The first issue is serious, the second is just an annoyance. The second one is an expected price of fixing the aborted hibernation regression. The first one shouldn't happen, though. I'll see if I can reproduce that locally. Rafael ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time 2010-02-17 20:11 ` Rafael J. Wysocki @ 2010-02-17 20:52 ` Rafael J. Wysocki 2010-02-17 22:10 ` Pedro Ribeiro 0 siblings, 1 reply; 18+ messages in thread From: Rafael J. Wysocki @ 2010-02-17 20:52 UTC (permalink / raw) To: Pedro Ribeiro; +Cc: linux-kernel, dri-devel On Wednesday 17 February 2010, Rafael J. Wysocki wrote: > On Wednesday 17 February 2010, Pedro Ribeiro wrote: > > Hi, > > > > commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash > > while aborting hibernation) introduced two new issues which were not > > present in 2.6.33-rc7: > > > > - every second resume from hibernate results in a blank screen > > - the annoying flash at the end of atomic copy/restore during the > > hibernate process is back (present in kernels < 2.6.33) > > > > The first issue is serious, the second is just an annoyance. > > The second one is an expected price of fixing the aborted hibernation > regression. > > The first one shouldn't happen, though. > > I'll see if I can reproduce that locally. No, I can't. Is the driver compiled directly into the kernel or modular? Rafael ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time 2010-02-17 20:52 ` Rafael J. Wysocki @ 2010-02-17 22:10 ` Pedro Ribeiro 2010-02-17 22:20 ` Rafael J. Wysocki 0 siblings, 1 reply; 18+ messages in thread From: Pedro Ribeiro @ 2010-02-17 22:10 UTC (permalink / raw) To: Rafael J. Wysocki; +Cc: linux-kernel, intel-gfx 2010/2/17 Rafael J. Wysocki <rjw@sisk.pl>: > On Wednesday 17 February 2010, Rafael J. Wysocki wrote: >> On Wednesday 17 February 2010, Pedro Ribeiro wrote: >> > Hi, >> > >> > commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash >> > while aborting hibernation) introduced two new issues which were not >> > present in 2.6.33-rc7: >> > >> > - every second resume from hibernate results in a blank screen >> > - the annoying flash at the end of atomic copy/restore during the >> > hibernate process is back (present in kernels < 2.6.33) >> > >> > The first issue is serious, the second is just an annoyance. >> >> The second one is an expected price of fixing the aborted hibernation >> regression. >> >> The first one shouldn't happen, though. >> >> I'll see if I can reproduce that locally. > > No, I can't. > > Is the driver compiled directly into the kernel or modular? > > Rafael > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > The driver is modular. And sorry, I forgot to tell you I'm using TuxOnIce, it certainly makes a difference. However, every since I reverted that commit I've done 10 test hibernations and no hang so far. Pedro ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time 2010-02-17 22:10 ` Pedro Ribeiro @ 2010-02-17 22:20 ` Rafael J. Wysocki 2010-02-17 22:41 ` Nigel Cunningham ` (2 more replies) 0 siblings, 3 replies; 18+ messages in thread From: Rafael J. Wysocki @ 2010-02-17 22:20 UTC (permalink / raw) To: Pedro Ribeiro; +Cc: linux-kernel, dri-devel On Wednesday 17 February 2010, Pedro Ribeiro wrote: > 2010/2/17 Rafael J. Wysocki <rjw@sisk.pl>: > > On Wednesday 17 February 2010, Rafael J. Wysocki wrote: > >> On Wednesday 17 February 2010, Pedro Ribeiro wrote: > >> > Hi, > >> > > >> > commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash > >> > while aborting hibernation) introduced two new issues which were not > >> > present in 2.6.33-rc7: > >> > > >> > - every second resume from hibernate results in a blank screen > >> > - the annoying flash at the end of atomic copy/restore during the > >> > hibernate process is back (present in kernels < 2.6.33) > >> > > >> > The first issue is serious, the second is just an annoyance. > >> > >> The second one is an expected price of fixing the aborted hibernation > >> regression. > >> > >> The first one shouldn't happen, though. > >> > >> I'll see if I can reproduce that locally. > > > > No, I can't. > > > > Is the driver compiled directly into the kernel or modular? > > The driver is modular. > And sorry, I forgot to tell you I'm using TuxOnIce, it certainly makes > a difference. It shouldn't in fact, although I'm not sure. > However, every since I reverted that commit I've done 10 test > hibernations and no hang so far. First, please try if you can reproduce it with non-modular driver. Second, please check if the appended patch helps. Rafael --- drivers/gpu/drm/i915/i915_drv.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) Index: linux-2.6/drivers/gpu/drm/i915/i915_drv.c =================================================================== --- linux-2.6.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-2.6/drivers/gpu/drm/i915/i915_drv.c @@ -177,6 +177,8 @@ MODULE_DEVICE_TABLE(pci, pciidlist); static int i915_drm_freeze(struct drm_device *dev) { + struct drm_i915_private *dev_priv = dev->dev_private; + pci_save_state(dev->pdev); /* If KMS is active, we do the leavevt stuff here */ @@ -192,17 +194,12 @@ static int i915_drm_freeze(struct drm_de i915_save_state(dev); - return 0; -} - -static void i915_drm_suspend(struct drm_device *dev) -{ - struct drm_i915_private *dev_priv = dev->dev_private; - intel_opregion_free(dev, 1); /* Modeset on resume, not lid events */ dev_priv->modeset_on_lid = 0; + + return 0; } static int i915_suspend(struct drm_device *dev, pm_message_t state) @@ -222,8 +219,6 @@ static int i915_suspend(struct drm_devic if (error) return error; - i915_drm_suspend(dev); - if (state.event == PM_EVENT_SUSPEND) { /* Shut down the device */ pci_disable_device(dev->pdev); @@ -238,6 +233,10 @@ static int i915_drm_thaw(struct drm_devi struct drm_i915_private *dev_priv = dev->dev_private; int error = 0; + i915_restore_state(dev); + + intel_opregion_init(dev, 1); + /* KMS EnterVT equivalent */ if (drm_core_check_feature(dev, DRIVER_MODESET)) { mutex_lock(&dev->struct_mutex); @@ -264,10 +263,6 @@ static int i915_resume(struct drm_device pci_set_master(dev->pdev); - i915_restore_state(dev); - - intel_opregion_init(dev, 1); - return i915_drm_thaw(dev); } @@ -424,8 +419,6 @@ static int i915_pm_suspend(struct device if (error) return error; - i915_drm_suspend(drm_dev); - pci_disable_device(pdev); pci_set_power_state(pdev, PCI_D3hot); @@ -465,13 +458,8 @@ static int i915_pm_poweroff(struct devic { struct pci_dev *pdev = to_pci_dev(dev); struct drm_device *drm_dev = pci_get_drvdata(pdev); - int error; - - error = i915_drm_freeze(drm_dev); - if (!error) - i915_drm_suspend(drm_dev); - return error; + return i915_drm_freeze(drm_dev); } const struct dev_pm_ops i915_pm_ops = { ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time 2010-02-17 22:20 ` Rafael J. Wysocki @ 2010-02-17 22:41 ` Nigel Cunningham 2010-02-18 0:02 ` Tino Keitel 2010-02-18 0:29 ` Pedro Ribeiro 2 siblings, 0 replies; 18+ messages in thread From: Nigel Cunningham @ 2010-02-17 22:41 UTC (permalink / raw) To: Rafael J. Wysocki; +Cc: Pedro Ribeiro, linux-kernel, dri-devel Hi Rafael. Rafael J. Wysocki wrote: > On Wednesday 17 February 2010, Pedro Ribeiro wrote: >> 2010/2/17 Rafael J. Wysocki <rjw@sisk.pl>: >>> On Wednesday 17 February 2010, Rafael J. Wysocki wrote: >>>> On Wednesday 17 February 2010, Pedro Ribeiro wrote: >>>>> Hi, >>>>> >>>>> commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash >>>>> while aborting hibernation) introduced two new issues which were not >>>>> present in 2.6.33-rc7: >>>>> >>>>> - every second resume from hibernate results in a blank screen >>>>> - the annoying flash at the end of atomic copy/restore during the >>>>> hibernate process is back (present in kernels < 2.6.33) >>>>> >>>>> The first issue is serious, the second is just an annoyance. >>>> The second one is an expected price of fixing the aborted hibernation >>>> regression. >>>> >>>> The first one shouldn't happen, though. >>>> >>>> I'll see if I can reproduce that locally. >>> No, I can't. >>> >>> Is the driver compiled directly into the kernel or modular? >> The driver is modular. >> And sorry, I forgot to tell you I'm using TuxOnIce, it certainly makes >> a difference. > > It shouldn't in fact, although I'm not sure. You're right. It shouldn't. I'm using exactly the same driver model calls in exactly the same order, and not changing driver code at all. Regards, Nigel ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time 2010-02-17 22:20 ` Rafael J. Wysocki 2010-02-17 22:41 ` Nigel Cunningham @ 2010-02-18 0:02 ` Tino Keitel 2010-02-18 0:29 ` Pedro Ribeiro 2 siblings, 0 replies; 18+ messages in thread From: Tino Keitel @ 2010-02-18 0:02 UTC (permalink / raw) To: linux-kernel On Wed, Feb 17, 2010 at 23:20:57 +0100, Rafael J. Wysocki wrote: [...] > First, please try if you can reproduce it with non-modular driver. I got hangs at resume on my ThinkPad X61s with i965 graphics and non-modular i915 driver. I got the hangs after suspend to RAM and suspend to disk using TuxOnIce, but not every time. I reverted the commit metioned by Pedro and wasn't able to reproduce the hang after several suspend cycles. I'll also try the attached patch. Regards, Tino ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time 2010-02-17 22:20 ` Rafael J. Wysocki 2010-02-17 22:41 ` Nigel Cunningham 2010-02-18 0:02 ` Tino Keitel @ 2010-02-18 0:29 ` Pedro Ribeiro 2010-02-18 22:06 ` [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting Rafael J. Wysocki 2010-02-18 22:06 ` Rafael J. Wysocki 2 siblings, 2 replies; 18+ messages in thread From: Pedro Ribeiro @ 2010-02-18 0:29 UTC (permalink / raw) To: Rafael J. Wysocki; +Cc: linux-kernel On 17 February 2010 22:20, Rafael J. Wysocki <rjw@sisk.pl> wrote: > On Wednesday 17 February 2010, Pedro Ribeiro wrote: >> 2010/2/17 Rafael J. Wysocki <rjw@sisk.pl>: >> > On Wednesday 17 February 2010, Rafael J. Wysocki wrote: >> >> On Wednesday 17 February 2010, Pedro Ribeiro wrote: >> >> > Hi, >> >> > >> >> > commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash >> >> > while aborting hibernation) introduced two new issues which were not >> >> > present in 2.6.33-rc7: >> >> > >> >> > - every second resume from hibernate results in a blank screen >> >> > - the annoying flash at the end of atomic copy/restore during the >> >> > hibernate process is back (present in kernels < 2.6.33) >> >> > >> >> > The first issue is serious, the second is just an annoyance. >> >> >> >> The second one is an expected price of fixing the aborted hibernation >> >> regression. >> >> >> >> The first one shouldn't happen, though. >> >> >> >> I'll see if I can reproduce that locally. >> > >> > No, I can't. >> > >> > Is the driver compiled directly into the kernel or modular? >> >> The driver is modular. >> And sorry, I forgot to tell you I'm using TuxOnIce, it certainly makes >> a difference. > > It shouldn't in fact, although I'm not sure. > >> However, every since I reverted that commit I've done 10 test >> hibernations and no hang so far. > > First, please try if you can reproduce it with non-modular driver. > > Second, please check if the appended patch helps. > > Rafael > > --- > drivers/gpu/drm/i915/i915_drv.c | 30 +++++++++--------------------- > 1 file changed, 9 insertions(+), 21 deletions(-) > > Index: linux-2.6/drivers/gpu/drm/i915/i915_drv.c > =================================================================== > --- linux-2.6.orig/drivers/gpu/drm/i915/i915_drv.c > +++ linux-2.6/drivers/gpu/drm/i915/i915_drv.c > @@ -177,6 +177,8 @@ MODULE_DEVICE_TABLE(pci, pciidlist); > > static int i915_drm_freeze(struct drm_device *dev) > { > + struct drm_i915_private *dev_priv = dev->dev_private; > + > pci_save_state(dev->pdev); > > /* If KMS is active, we do the leavevt stuff here */ > @@ -192,17 +194,12 @@ static int i915_drm_freeze(struct drm_de > > i915_save_state(dev); > > - return 0; > -} > - > -static void i915_drm_suspend(struct drm_device *dev) > -{ > - struct drm_i915_private *dev_priv = dev->dev_private; > - > intel_opregion_free(dev, 1); > > /* Modeset on resume, not lid events */ > dev_priv->modeset_on_lid = 0; > + > + return 0; > } > > static int i915_suspend(struct drm_device *dev, pm_message_t state) > @@ -222,8 +219,6 @@ static int i915_suspend(struct drm_devic > if (error) > return error; > > - i915_drm_suspend(dev); > - > if (state.event == PM_EVENT_SUSPEND) { > /* Shut down the device */ > pci_disable_device(dev->pdev); > @@ -238,6 +233,10 @@ static int i915_drm_thaw(struct drm_devi > struct drm_i915_private *dev_priv = dev->dev_private; > int error = 0; > > + i915_restore_state(dev); > + > + intel_opregion_init(dev, 1); > + > /* KMS EnterVT equivalent */ > if (drm_core_check_feature(dev, DRIVER_MODESET)) { > mutex_lock(&dev->struct_mutex); > @@ -264,10 +263,6 @@ static int i915_resume(struct drm_device > > pci_set_master(dev->pdev); > > - i915_restore_state(dev); > - > - intel_opregion_init(dev, 1); > - > return i915_drm_thaw(dev); > } > > @@ -424,8 +419,6 @@ static int i915_pm_suspend(struct device > if (error) > return error; > > - i915_drm_suspend(drm_dev); > - > pci_disable_device(pdev); > pci_set_power_state(pdev, PCI_D3hot); > > @@ -465,13 +458,8 @@ static int i915_pm_poweroff(struct devic > { > struct pci_dev *pdev = to_pci_dev(dev); > struct drm_device *drm_dev = pci_get_drvdata(pdev); > - int error; > - > - error = i915_drm_freeze(drm_dev); > - if (!error) > - i915_drm_suspend(drm_dev); > > - return error; > + return i915_drm_freeze(drm_dev); > } > > const struct dev_pm_ops i915_pm_ops = { > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > The patch fixes this issue for me. Thanks for your help. Pedro ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-18 0:29 ` Pedro Ribeiro @ 2010-02-18 22:06 ` Rafael J. Wysocki 2010-02-18 22:06 ` Rafael J. Wysocki 1 sibling, 0 replies; 18+ messages in thread From: Rafael J. Wysocki @ 2010-02-18 22:06 UTC (permalink / raw) To: Pedro Ribeiro, Jesse Barnes, Eric Anholt Cc: pm list, Linus Torvalds, linux-kernel On Thursday 18 February 2010, Pedro Ribeiro wrote: > On 17 February 2010 22:20, Rafael J. Wysocki <rjw@sisk.pl> wrote: > > On Wednesday 17 February 2010, Pedro Ribeiro wrote: > >> 2010/2/17 Rafael J. Wysocki <rjw@sisk.pl>: > >> > On Wednesday 17 February 2010, Rafael J. Wysocki wrote: > >> >> On Wednesday 17 February 2010, Pedro Ribeiro wrote: > >> >> > Hi, > >> >> > > >> >> > commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash > >> >> > while aborting hibernation) introduced two new issues which were not > >> >> > present in 2.6.33-rc7: > >> >> > > >> >> > - every second resume from hibernate results in a blank screen > >> >> > - the annoying flash at the end of atomic copy/restore during the > >> >> > hibernate process is back (present in kernels < 2.6.33) > >> >> > > >> >> > The first issue is serious, the second is just an annoyance. > >> >> > >> >> The second one is an expected price of fixing the aborted hibernation > >> >> regression. > >> >> > >> >> The first one shouldn't happen, though. > >> >> > >> >> I'll see if I can reproduce that locally. > >> > > >> > No, I can't. > >> > > >> > Is the driver compiled directly into the kernel or modular? > >> > >> The driver is modular. > >> And sorry, I forgot to tell you I'm using TuxOnIce, it certainly makes > >> a difference. > > > > It shouldn't in fact, although I'm not sure. > > > >> However, every since I reverted that commit I've done 10 test > >> hibernations and no hang so far. > > > > First, please try if you can reproduce it with non-modular driver. > > > > Second, please check if the appended patch helps. > > > > Rafael > > > > --- > > drivers/gpu/drm/i915/i915_drv.c | 30 +++++++++--------------------- > > 1 file changed, 9 insertions(+), 21 deletions(-) > > > > Index: linux-2.6/drivers/gpu/drm/i915/i915_drv.c > > =================================================================== > > --- linux-2.6.orig/drivers/gpu/drm/i915/i915_drv.c > > +++ linux-2.6/drivers/gpu/drm/i915/i915_drv.c > > @@ -177,6 +177,8 @@ MODULE_DEVICE_TABLE(pci, pciidlist); > > > > static int i915_drm_freeze(struct drm_device *dev) > > { > > + struct drm_i915_private *dev_priv = dev->dev_private; > > + > > pci_save_state(dev->pdev); > > > > /* If KMS is active, we do the leavevt stuff here */ > > @@ -192,17 +194,12 @@ static int i915_drm_freeze(struct drm_de > > > > i915_save_state(dev); > > > > - return 0; > > -} > > - > > -static void i915_drm_suspend(struct drm_device *dev) > > -{ > > - struct drm_i915_private *dev_priv = dev->dev_private; > > - > > intel_opregion_free(dev, 1); > > > > /* Modeset on resume, not lid events */ > > dev_priv->modeset_on_lid = 0; > > + > > + return 0; > > } > > > > static int i915_suspend(struct drm_device *dev, pm_message_t state) > > @@ -222,8 +219,6 @@ static int i915_suspend(struct drm_devic > > if (error) > > return error; > > > > - i915_drm_suspend(dev); > > - > > if (state.event == PM_EVENT_SUSPEND) { > > /* Shut down the device */ > > pci_disable_device(dev->pdev); > > @@ -238,6 +233,10 @@ static int i915_drm_thaw(struct drm_devi > > struct drm_i915_private *dev_priv = dev->dev_private; > > int error = 0; > > > > + i915_restore_state(dev); > > + > > + intel_opregion_init(dev, 1); > > + > > /* KMS EnterVT equivalent */ > > if (drm_core_check_feature(dev, DRIVER_MODESET)) { > > mutex_lock(&dev->struct_mutex); > > @@ -264,10 +263,6 @@ static int i915_resume(struct drm_device > > > > pci_set_master(dev->pdev); > > > > - i915_restore_state(dev); > > - > > - intel_opregion_init(dev, 1); > > - > > return i915_drm_thaw(dev); > > } > > > > @@ -424,8 +419,6 @@ static int i915_pm_suspend(struct device > > if (error) > > return error; > > > > - i915_drm_suspend(drm_dev); > > - > > pci_disable_device(pdev); > > pci_set_power_state(pdev, PCI_D3hot); > > > > @@ -465,13 +458,8 @@ static int i915_pm_poweroff(struct devic > > { > > struct pci_dev *pdev = to_pci_dev(dev); > > struct drm_device *drm_dev = pci_get_drvdata(pdev); > > - int error; > > - > > - error = i915_drm_freeze(drm_dev); > > - if (!error) > > - i915_drm_suspend(drm_dev); > > > > - return error; > > + return i915_drm_freeze(drm_dev); > > } > > > > const struct dev_pm_ops i915_pm_ops = { > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > Please read the FAQ at http://www.tux.org/lkml/ > > > > The patch fixes this issue for me. > > Thanks for your help. OK, thanks for testing, let's submit it appropriately. Jesse, Eric, the appended patch fixes a very recent hibernate regression in i915, please push it to Linus ASAP. Rafael --- From: Rafael J. Wysocki <rjw@sisk.pl> Subject: i915 / PM: Fix hibernate regression caused by suspend/resume splitting Commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash while aborting hibernation) attempted to fix a regression introduced by commit cbda12d77ea590082edb6d30bd342a67ebc459e0 (drm/i915: implement new pm ops for i915), but it went too far trying to split the freeze/suspend and resume/thaw parts of the code. As a result, it introduced another regression, which only is visible on some systems. Fix the problem by merging i915_drm_suspend() with i915_drm_freeze() and moving some code from i915_resume() into i915_drm_thaw(), so that intel_opregion_free() and intel_opregion_init() are also executed in the freeze and thaw code paths, respectively. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Reported-and-tested-by: Pedro Ribeiro <pedrib@gmail.com> --- drivers/gpu/drm/i915/i915_drv.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) Index: linux-2.6/drivers/gpu/drm/i915/i915_drv.c =================================================================== --- linux-2.6.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-2.6/drivers/gpu/drm/i915/i915_drv.c @@ -177,6 +177,8 @@ MODULE_DEVICE_TABLE(pci, pciidlist); static int i915_drm_freeze(struct drm_device *dev) { + struct drm_i915_private *dev_priv = dev->dev_private; + pci_save_state(dev->pdev); /* If KMS is active, we do the leavevt stuff here */ @@ -192,17 +194,12 @@ static int i915_drm_freeze(struct drm_de i915_save_state(dev); - return 0; -} - -static void i915_drm_suspend(struct drm_device *dev) -{ - struct drm_i915_private *dev_priv = dev->dev_private; - intel_opregion_free(dev, 1); /* Modeset on resume, not lid events */ dev_priv->modeset_on_lid = 0; + + return 0; } static int i915_suspend(struct drm_device *dev, pm_message_t state) @@ -222,8 +219,6 @@ static int i915_suspend(struct drm_devic if (error) return error; - i915_drm_suspend(dev); - if (state.event == PM_EVENT_SUSPEND) { /* Shut down the device */ pci_disable_device(dev->pdev); @@ -238,6 +233,10 @@ static int i915_drm_thaw(struct drm_devi struct drm_i915_private *dev_priv = dev->dev_private; int error = 0; + i915_restore_state(dev); + + intel_opregion_init(dev, 1); + /* KMS EnterVT equivalent */ if (drm_core_check_feature(dev, DRIVER_MODESET)) { mutex_lock(&dev->struct_mutex); @@ -264,10 +263,6 @@ static int i915_resume(struct drm_device pci_set_master(dev->pdev); - i915_restore_state(dev); - - intel_opregion_init(dev, 1); - return i915_drm_thaw(dev); } @@ -424,8 +419,6 @@ static int i915_pm_suspend(struct device if (error) return error; - i915_drm_suspend(drm_dev); - pci_disable_device(pdev); pci_set_power_state(pdev, PCI_D3hot); @@ -465,13 +458,8 @@ static int i915_pm_poweroff(struct devic { struct pci_dev *pdev = to_pci_dev(dev); struct drm_device *drm_dev = pci_get_drvdata(pdev); - int error; - - error = i915_drm_freeze(drm_dev); - if (!error) - i915_drm_suspend(drm_dev); - return error; + return i915_drm_freeze(drm_dev); } const struct dev_pm_ops i915_pm_ops = { ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-18 0:29 ` Pedro Ribeiro 2010-02-18 22:06 ` [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting Rafael J. Wysocki @ 2010-02-18 22:06 ` Rafael J. Wysocki 2010-02-19 6:39 ` Tino Keitel ` (3 more replies) 1 sibling, 4 replies; 18+ messages in thread From: Rafael J. Wysocki @ 2010-02-18 22:06 UTC (permalink / raw) To: Pedro Ribeiro, Jesse Barnes, Eric Anholt Cc: linux-kernel, pm list, Linus Torvalds On Thursday 18 February 2010, Pedro Ribeiro wrote: > On 17 February 2010 22:20, Rafael J. Wysocki <rjw@sisk.pl> wrote: > > On Wednesday 17 February 2010, Pedro Ribeiro wrote: > >> 2010/2/17 Rafael J. Wysocki <rjw@sisk.pl>: > >> > On Wednesday 17 February 2010, Rafael J. Wysocki wrote: > >> >> On Wednesday 17 February 2010, Pedro Ribeiro wrote: > >> >> > Hi, > >> >> > > >> >> > commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash > >> >> > while aborting hibernation) introduced two new issues which were not > >> >> > present in 2.6.33-rc7: > >> >> > > >> >> > - every second resume from hibernate results in a blank screen > >> >> > - the annoying flash at the end of atomic copy/restore during the > >> >> > hibernate process is back (present in kernels < 2.6.33) > >> >> > > >> >> > The first issue is serious, the second is just an annoyance. > >> >> > >> >> The second one is an expected price of fixing the aborted hibernation > >> >> regression. > >> >> > >> >> The first one shouldn't happen, though. > >> >> > >> >> I'll see if I can reproduce that locally. > >> > > >> > No, I can't. > >> > > >> > Is the driver compiled directly into the kernel or modular? > >> > >> The driver is modular. > >> And sorry, I forgot to tell you I'm using TuxOnIce, it certainly makes > >> a difference. > > > > It shouldn't in fact, although I'm not sure. > > > >> However, every since I reverted that commit I've done 10 test > >> hibernations and no hang so far. > > > > First, please try if you can reproduce it with non-modular driver. > > > > Second, please check if the appended patch helps. > > > > Rafael > > > > --- > > drivers/gpu/drm/i915/i915_drv.c | 30 +++++++++--------------------- > > 1 file changed, 9 insertions(+), 21 deletions(-) > > > > Index: linux-2.6/drivers/gpu/drm/i915/i915_drv.c > > =================================================================== > > --- linux-2.6.orig/drivers/gpu/drm/i915/i915_drv.c > > +++ linux-2.6/drivers/gpu/drm/i915/i915_drv.c > > @@ -177,6 +177,8 @@ MODULE_DEVICE_TABLE(pci, pciidlist); > > > > static int i915_drm_freeze(struct drm_device *dev) > > { > > + struct drm_i915_private *dev_priv = dev->dev_private; > > + > > pci_save_state(dev->pdev); > > > > /* If KMS is active, we do the leavevt stuff here */ > > @@ -192,17 +194,12 @@ static int i915_drm_freeze(struct drm_de > > > > i915_save_state(dev); > > > > - return 0; > > -} > > - > > -static void i915_drm_suspend(struct drm_device *dev) > > -{ > > - struct drm_i915_private *dev_priv = dev->dev_private; > > - > > intel_opregion_free(dev, 1); > > > > /* Modeset on resume, not lid events */ > > dev_priv->modeset_on_lid = 0; > > + > > + return 0; > > } > > > > static int i915_suspend(struct drm_device *dev, pm_message_t state) > > @@ -222,8 +219,6 @@ static int i915_suspend(struct drm_devic > > if (error) > > return error; > > > > - i915_drm_suspend(dev); > > - > > if (state.event == PM_EVENT_SUSPEND) { > > /* Shut down the device */ > > pci_disable_device(dev->pdev); > > @@ -238,6 +233,10 @@ static int i915_drm_thaw(struct drm_devi > > struct drm_i915_private *dev_priv = dev->dev_private; > > int error = 0; > > > > + i915_restore_state(dev); > > + > > + intel_opregion_init(dev, 1); > > + > > /* KMS EnterVT equivalent */ > > if (drm_core_check_feature(dev, DRIVER_MODESET)) { > > mutex_lock(&dev->struct_mutex); > > @@ -264,10 +263,6 @@ static int i915_resume(struct drm_device > > > > pci_set_master(dev->pdev); > > > > - i915_restore_state(dev); > > - > > - intel_opregion_init(dev, 1); > > - > > return i915_drm_thaw(dev); > > } > > > > @@ -424,8 +419,6 @@ static int i915_pm_suspend(struct device > > if (error) > > return error; > > > > - i915_drm_suspend(drm_dev); > > - > > pci_disable_device(pdev); > > pci_set_power_state(pdev, PCI_D3hot); > > > > @@ -465,13 +458,8 @@ static int i915_pm_poweroff(struct devic > > { > > struct pci_dev *pdev = to_pci_dev(dev); > > struct drm_device *drm_dev = pci_get_drvdata(pdev); > > - int error; > > - > > - error = i915_drm_freeze(drm_dev); > > - if (!error) > > - i915_drm_suspend(drm_dev); > > > > - return error; > > + return i915_drm_freeze(drm_dev); > > } > > > > const struct dev_pm_ops i915_pm_ops = { > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > Please read the FAQ at http://www.tux.org/lkml/ > > > > The patch fixes this issue for me. > > Thanks for your help. OK, thanks for testing, let's submit it appropriately. Jesse, Eric, the appended patch fixes a very recent hibernate regression in i915, please push it to Linus ASAP. Rafael --- From: Rafael J. Wysocki <rjw@sisk.pl> Subject: i915 / PM: Fix hibernate regression caused by suspend/resume splitting Commit 84b79f8d2882b0a84330c04839ed4d3cefd2ff77 (drm/i915: Fix crash while aborting hibernation) attempted to fix a regression introduced by commit cbda12d77ea590082edb6d30bd342a67ebc459e0 (drm/i915: implement new pm ops for i915), but it went too far trying to split the freeze/suspend and resume/thaw parts of the code. As a result, it introduced another regression, which only is visible on some systems. Fix the problem by merging i915_drm_suspend() with i915_drm_freeze() and moving some code from i915_resume() into i915_drm_thaw(), so that intel_opregion_free() and intel_opregion_init() are also executed in the freeze and thaw code paths, respectively. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Reported-and-tested-by: Pedro Ribeiro <pedrib@gmail.com> --- drivers/gpu/drm/i915/i915_drv.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) Index: linux-2.6/drivers/gpu/drm/i915/i915_drv.c =================================================================== --- linux-2.6.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-2.6/drivers/gpu/drm/i915/i915_drv.c @@ -177,6 +177,8 @@ MODULE_DEVICE_TABLE(pci, pciidlist); static int i915_drm_freeze(struct drm_device *dev) { + struct drm_i915_private *dev_priv = dev->dev_private; + pci_save_state(dev->pdev); /* If KMS is active, we do the leavevt stuff here */ @@ -192,17 +194,12 @@ static int i915_drm_freeze(struct drm_de i915_save_state(dev); - return 0; -} - -static void i915_drm_suspend(struct drm_device *dev) -{ - struct drm_i915_private *dev_priv = dev->dev_private; - intel_opregion_free(dev, 1); /* Modeset on resume, not lid events */ dev_priv->modeset_on_lid = 0; + + return 0; } static int i915_suspend(struct drm_device *dev, pm_message_t state) @@ -222,8 +219,6 @@ static int i915_suspend(struct drm_devic if (error) return error; - i915_drm_suspend(dev); - if (state.event == PM_EVENT_SUSPEND) { /* Shut down the device */ pci_disable_device(dev->pdev); @@ -238,6 +233,10 @@ static int i915_drm_thaw(struct drm_devi struct drm_i915_private *dev_priv = dev->dev_private; int error = 0; + i915_restore_state(dev); + + intel_opregion_init(dev, 1); + /* KMS EnterVT equivalent */ if (drm_core_check_feature(dev, DRIVER_MODESET)) { mutex_lock(&dev->struct_mutex); @@ -264,10 +263,6 @@ static int i915_resume(struct drm_device pci_set_master(dev->pdev); - i915_restore_state(dev); - - intel_opregion_init(dev, 1); - return i915_drm_thaw(dev); } @@ -424,8 +419,6 @@ static int i915_pm_suspend(struct device if (error) return error; - i915_drm_suspend(drm_dev); - pci_disable_device(pdev); pci_set_power_state(pdev, PCI_D3hot); @@ -465,13 +458,8 @@ static int i915_pm_poweroff(struct devic { struct pci_dev *pdev = to_pci_dev(dev); struct drm_device *drm_dev = pci_get_drvdata(pdev); - int error; - - error = i915_drm_freeze(drm_dev); - if (!error) - i915_drm_suspend(drm_dev); - return error; + return i915_drm_freeze(drm_dev); } const struct dev_pm_ops i915_pm_ops = { ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-18 22:06 ` Rafael J. Wysocki @ 2010-02-19 6:39 ` Tino Keitel 2010-02-19 6:39 ` Tino Keitel ` (2 subsequent siblings) 3 siblings, 0 replies; 18+ messages in thread From: Tino Keitel @ 2010-02-19 6:39 UTC (permalink / raw) To: Rafael J. Wysocki Cc: linux-kernel, Jesse Barnes, Eric Anholt, Pedro Ribeiro, pm list, Linus Torvalds On Thu, Feb 18, 2010 at 23:06:27 +0100, Rafael J. Wysocki wrote: [...] > Jesse, Eric, the appended patch fixes a very recent hibernate regression in > i915, please push it to Linus ASAP. FYI: I got no resume failure during normal usage after 9 suspend to RAM and 8 suspend to disk cycles (using both suspend types alternately) with the patch applied. Regards, Tino ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-18 22:06 ` Rafael J. Wysocki 2010-02-19 6:39 ` Tino Keitel @ 2010-02-19 6:39 ` Tino Keitel 2010-02-22 15:47 ` Linus Torvalds 2010-02-22 15:47 ` Linus Torvalds 3 siblings, 0 replies; 18+ messages in thread From: Tino Keitel @ 2010-02-19 6:39 UTC (permalink / raw) To: Rafael J. Wysocki Cc: Pedro Ribeiro, Jesse Barnes, Eric Anholt, linux-kernel, pm list, Linus Torvalds On Thu, Feb 18, 2010 at 23:06:27 +0100, Rafael J. Wysocki wrote: [...] > Jesse, Eric, the appended patch fixes a very recent hibernate regression in > i915, please push it to Linus ASAP. FYI: I got no resume failure during normal usage after 9 suspend to RAM and 8 suspend to disk cycles (using both suspend types alternately) with the patch applied. Regards, Tino ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-18 22:06 ` Rafael J. Wysocki 2010-02-19 6:39 ` Tino Keitel 2010-02-19 6:39 ` Tino Keitel @ 2010-02-22 15:47 ` Linus Torvalds 2010-02-22 16:32 ` Jesse Barnes ` (3 more replies) 2010-02-22 15:47 ` Linus Torvalds 3 siblings, 4 replies; 18+ messages in thread From: Linus Torvalds @ 2010-02-22 15:47 UTC (permalink / raw) To: Rafael J. Wysocki Cc: Pedro Ribeiro, Jesse Barnes, Eric Anholt, linux-kernel, pm list Jesse, Eric, what's the status of this patch? Should I take it directly (I'd really like an Ack) or is it queued up in some tree waiting for me to pull? Or is there some reason not to have it, despite it fixing things for some people? Linus ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-22 15:47 ` Linus Torvalds @ 2010-02-22 16:32 ` Jesse Barnes 2010-02-22 16:32 ` Jesse Barnes ` (2 subsequent siblings) 3 siblings, 0 replies; 18+ messages in thread From: Jesse Barnes @ 2010-02-22 16:32 UTC (permalink / raw) To: Linus Torvalds Cc: Rafael J. Wysocki, Pedro Ribeiro, Eric Anholt, linux-kernel, pm list On Mon, 22 Feb 2010 07:47:53 -0800 (PST) Linus Torvalds <torvalds@linux-foundation.org> wrote: > > Jesse, Eric, what's the status of this patch? > > Should I take it directly (I'd really like an Ack) or is it queued up in > some tree waiting for me to pull? Or is there some reason not to have it, > despite it fixing things for some people? Hm, I thought Eric had applied that to his for-linus branch, but it looks like that branch is empty now. Maybe Rafael posted an update that Eric missed and so you just have a partial fix in your tree? -- Jesse Barnes, Intel Open Source Technology Center ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-22 15:47 ` Linus Torvalds 2010-02-22 16:32 ` Jesse Barnes @ 2010-02-22 16:32 ` Jesse Barnes 2010-02-22 16:36 ` Eric Anholt 2010-02-22 16:36 ` Eric Anholt 3 siblings, 0 replies; 18+ messages in thread From: Jesse Barnes @ 2010-02-22 16:32 UTC (permalink / raw) To: Linus Torvalds; +Cc: Pedro Ribeiro, pm list, linux-kernel, Eric Anholt On Mon, 22 Feb 2010 07:47:53 -0800 (PST) Linus Torvalds <torvalds@linux-foundation.org> wrote: > > Jesse, Eric, what's the status of this patch? > > Should I take it directly (I'd really like an Ack) or is it queued up in > some tree waiting for me to pull? Or is there some reason not to have it, > despite it fixing things for some people? Hm, I thought Eric had applied that to his for-linus branch, but it looks like that branch is empty now. Maybe Rafael posted an update that Eric missed and so you just have a partial fix in your tree? -- Jesse Barnes, Intel Open Source Technology Center ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-22 15:47 ` Linus Torvalds 2010-02-22 16:32 ` Jesse Barnes 2010-02-22 16:32 ` Jesse Barnes @ 2010-02-22 16:36 ` Eric Anholt 2010-02-22 16:36 ` Eric Anholt 3 siblings, 0 replies; 18+ messages in thread From: Eric Anholt @ 2010-02-22 16:36 UTC (permalink / raw) To: Linus Torvalds, Rafael J. Wysocki Cc: Pedro Ribeiro, Jesse Barnes, linux-kernel, pm list [-- Attachment #1: Type: text/plain, Size: 744 bytes --] On Mon, 22 Feb 2010 07:47:53 -0800 (PST), Linus Torvalds <torvalds@linux-foundation.org> wrote: > > Jesse, Eric, what's the status of this patch? > > Should I take it directly (I'd really like an Ack) or is it queued up in > some tree waiting for me to pull? Or is there some reason not to have it, > despite it fixing things for some people? Acked-by: Eric Anholt <eric@anholt.net> I just reviewed the rest of my tag:todo and I don't think I have anything else I want to pull request for this kernel (finally), so if you could just grab this patch it would be great. (Well, there's also "quit trying to _LID on 855 because it's always a pack of lies", but I'd rather do it as a backport later in case someone screams) [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-22 15:47 ` Linus Torvalds ` (2 preceding siblings ...) 2010-02-22 16:36 ` Eric Anholt @ 2010-02-22 16:36 ` Eric Anholt 3 siblings, 0 replies; 18+ messages in thread From: Eric Anholt @ 2010-02-22 16:36 UTC (permalink / raw) To: Linus Torvalds, Rafael J. Wysocki Cc: Pedro Ribeiro, pm list, linux-kernel, Jesse Barnes [-- Attachment #1.1: Type: text/plain, Size: 744 bytes --] On Mon, 22 Feb 2010 07:47:53 -0800 (PST), Linus Torvalds <torvalds@linux-foundation.org> wrote: > > Jesse, Eric, what's the status of this patch? > > Should I take it directly (I'd really like an Ack) or is it queued up in > some tree waiting for me to pull? Or is there some reason not to have it, > despite it fixing things for some people? Acked-by: Eric Anholt <eric@anholt.net> I just reviewed the rest of my tag:todo and I don't think I have anything else I want to pull request for this kernel (finally), so if you could just grab this patch it would be great. (Well, there's also "quit trying to _LID on 855 because it's always a pack of lies", but I'd rather do it as a backport later in case someone screams) [-- Attachment #1.2: Type: application/pgp-signature, Size: 197 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting 2010-02-18 22:06 ` Rafael J. Wysocki ` (2 preceding siblings ...) 2010-02-22 15:47 ` Linus Torvalds @ 2010-02-22 15:47 ` Linus Torvalds 3 siblings, 0 replies; 18+ messages in thread From: Linus Torvalds @ 2010-02-22 15:47 UTC (permalink / raw) To: Rafael J. Wysocki Cc: Pedro Ribeiro, pm list, linux-kernel, Jesse Barnes, Eric Anholt Jesse, Eric, what's the status of this patch? Should I take it directly (I'd really like an Ack) or is it queued up in some tree waiting for me to pull? Or is there some reason not to have it, despite it fixing things for some people? Linus ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2010-02-22 16:36 UTC | newest] Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-02-17 18:47 2.6.33-rc8 regression on i915: resume from hibernate locks up every 2nd time Pedro Ribeiro 2010-02-17 20:11 ` Rafael J. Wysocki 2010-02-17 20:52 ` Rafael J. Wysocki 2010-02-17 22:10 ` Pedro Ribeiro 2010-02-17 22:20 ` Rafael J. Wysocki 2010-02-17 22:41 ` Nigel Cunningham 2010-02-18 0:02 ` Tino Keitel 2010-02-18 0:29 ` Pedro Ribeiro 2010-02-18 22:06 ` [PATCH] i915 / PM: Fix hibernate regression caused by suspend/resume splitting Rafael J. Wysocki 2010-02-18 22:06 ` Rafael J. Wysocki 2010-02-19 6:39 ` Tino Keitel 2010-02-19 6:39 ` Tino Keitel 2010-02-22 15:47 ` Linus Torvalds 2010-02-22 16:32 ` Jesse Barnes 2010-02-22 16:32 ` Jesse Barnes 2010-02-22 16:36 ` Eric Anholt 2010-02-22 16:36 ` Eric Anholt 2010-02-22 15:47 ` Linus Torvalds
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.