Bug 29082

Summary: [Arrandale] 2.6.35-rc5 black screen and crash upon hot-unplugging a VGA monitor on HP EliteBook 2540p
Product: DRI Reporter: Philippe Troin <phil>
Component: DRM/IntelAssignee: Jesse Barnes <jbarnes>
Status: CLOSED FIXED QA Contact:
Severity: critical    
Priority: high    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
VGA Bios
none
Register dump before hot-plugging the external monitor.
none
Dmesg before hot-plugging external monitor.
none
Netconsole output generated when the external monitor is hot-plugged.
none
intel-regs.nox.1
none
intel-regs.nox.2
none
dmesg.nox
none
intel-regs.withx.1
none
intel-regs.withx.2
none
intel-regs.withx.3
none
dmesg.withx.1
none
dmesg.withx.2
none
dmesg.withx.3
none
flip fix for removed framebuffer
none
disable DAC on Ironlake also when doing CRT load detection
none
don't enable self-refresh on ilk none

Description Philippe Troin 2010-07-15 10:24:38 UTC
Created attachment 37080 [details]
VGA Bios

I am using the following software:

 - vanilla linux 2.6.35-rc5
 - Fedora 13
 - libdrm-2.4.21-2.fc13
 - xorg-x11-drv-intel-2.11.0-5.fc13
 - xorg-x11-server-Xorg-1.8.2-1.fc13

uname:

Linux air 2.6.35-rc5.x86_64 #1 SMP Wed Jul 14 15:55:31 PDT 2010 x86_64 x86_64
x86_64 GNU/Linux

lspci:

00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 12)
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, fast devsel, latency 0
    Capabilities: [e0] Vendor Specific Information: Len=0c <?>
    Kernel driver in use: agpgart-intel

00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated
Graphics Controller (rev 12) (prog-if 00 [VGA controller])
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, fast devsel, latency 0, IRQ 47
    Memory at d0000000 (64-bit, non-prefetchable) [size=4M]
    Memory at c0000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 5058 [size=8]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
    Capabilities: [d0] Power Management version 2
    Capabilities: [a4] PCI Advanced Features
    Kernel driver in use: i915
    Kernel modules: i915

00:19.0 Ethernet controller: Intel Corporation 82577LM Gigabit Network
Connection (rev 06)
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, fast devsel, latency 0, IRQ 48
    Memory at d4700000 (32-bit, non-prefetchable) [size=128K]
    Memory at d472a000 (32-bit, non-prefetchable) [size=4K]
    I/O ports at 5020 [size=32]
    Capabilities: [c8] Power Management version 2
    Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [e0] PCI Advanced Features
    Kernel driver in use: e1000e
    Kernel modules: e1000e

00:1a.0 USB Controller: Intel Corporation 5 Series/3400 Series Chipset USB2
Enhanced Host Controller (rev 06) (prog-if 20 [EHCI])
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, medium devsel, latency 0, IRQ 16
    Memory at d4729000 (32-bit, non-prefetchable) [size=1K]
    Capabilities: [50] Power Management version 2
    Capabilities: [58] Debug port: BAR=1 offset=00a0
    Capabilities: [98] PCI Advanced Features
    Kernel driver in use: ehci_hcd

00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High
Definition Audio (rev 06)
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, fast devsel, latency 0, IRQ 50
    Memory at d4720000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: [50] Power Management version 2
    Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
    Capabilities: [100] Virtual Channel
    Capabilities: [130] Root Complex Link
    Kernel driver in use: HDA Intel
    Kernel modules: snd-hda-intel

00:1c.0 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express
Root Port 1 (rev 06) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0
    Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
    Memory behind bridge: d4600000-d46fffff
    Capabilities: [40] Express Root Port (Slot+), MSI 00
    Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
    Capabilities: [90] Subsystem: Hewlett-Packard Company Device 7008
    Capabilities: [a0] Power Management version 2
    Kernel driver in use: pcieport
    Kernel modules: shpchp

00:1c.1 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express
Root Port 2 (rev 06) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0
    Bus: primary=00, secondary=02, subordinate=42, sec-latency=0
    I/O behind bridge: 00003000-00004fff
    Memory behind bridge: d0600000-d45fffff
    Prefetchable memory behind bridge: 00000000d4900000-00000000d4afffff
    Capabilities: [40] Express Root Port (Slot+), MSI 00
    Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
    Capabilities: [90] Subsystem: Hewlett-Packard Company Device 7008
    Capabilities: [a0] Power Management version 2
    Kernel driver in use: pcieport
    Kernel modules: shpchp

00:1c.3 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express
Root Port 4 (rev 06) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0
    Bus: primary=00, secondary=43, subordinate=43, sec-latency=0
    Memory behind bridge: d0500000-d05fffff
    Capabilities: [40] Express Root Port (Slot+), MSI 00
    Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
    Capabilities: [90] Subsystem: Hewlett-Packard Company Device 7008
    Capabilities: [a0] Power Management version 2
    Kernel driver in use: pcieport
    Kernel modules: shpchp

00:1d.0 USB Controller: Intel Corporation 5 Series/3400 Series Chipset USB2
Enhanced Host Controller (rev 06) (prog-if 20 [EHCI])
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, medium devsel, latency 0, IRQ 20
    Memory at d4728000 (32-bit, non-prefetchable) [size=1K]
    Capabilities: [50] Power Management version 2
    Capabilities: [58] Debug port: BAR=1 offset=00a0
    Capabilities: [98] PCI Advanced Features
    Kernel driver in use: ehci_hcd

00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev a6) (prog-if
01 [Subtractive decode])
    Flags: bus master, fast devsel, latency 0
    Bus: primary=00, secondary=44, subordinate=48, sec-latency=32
    I/O behind bridge: 00002000-00002fff
    Memory behind bridge: d0400000-d04fffff
    Prefetchable memory behind bridge: 00000000d8000000-00000000dbffffff
    Capabilities: [50] Subsystem: Hewlett-Packard Company Device 7008

00:1f.0 ISA bridge: Intel Corporation Mobile 5 Series Chipset LPC Interface
Controller (rev 06)
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, medium devsel, latency 0
    Capabilities: [e0] Vendor Specific Information: Len=10 <?>
    Kernel modules: iTCO_wdt

00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series Chipset 6 port
SATA AHCI Controller (rev 06) (prog-if 01 [AHCI 1.0])
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 46
    I/O ports at 5048 [size=8]
    I/O ports at 5064 [size=4]
    I/O ports at 5040 [size=8]
    I/O ports at 5060 [size=4]
    I/O ports at 5000 [size=32]
    Memory at d4727000 (32-bit, non-prefetchable) [size=2K]
    Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
    Capabilities: [70] Power Management version 3
    Capabilities: [a8] SATA HBA v1.0
    Capabilities: [b0] PCI Advanced Features
    Kernel driver in use: ahci

00:1f.6 Signal processing controller: Intel Corporation 5 Series/3400 Series
Chipset Thermal Subsystem (rev 06)
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, fast devsel, latency 0, IRQ 10
    Memory at d4726000 (64-bit, non-prefetchable) [size=4K]
    Capabilities: [50] Power Management version 3
    Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-

43:00.0 Network controller: Intel Corporation Centrino Advanced-N 6200 (rev 35)
    Subsystem: Intel Corporation Centrino Advanced-N 6200 2x2 AGN
    Flags: bus master, fast devsel, latency 0, IRQ 49
    Memory at d0500000 (64-bit, non-prefetchable) [size=8K]
    Capabilities: [c8] Power Management version 3
    Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
    Capabilities: [e0] Express Endpoint, MSI 00
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [140] Device Serial Number 00-23-14-ff-ff-77-aa-48
    Kernel driver in use: iwlagn
    Kernel modules: iwlagn

44:06.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 06)
(prog-if 10 [OHCI])
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, medium devsel, latency 64, IRQ 20
    Memory at d0401000 (32-bit, non-prefetchable) [size=2K]
    Capabilities: [dc] Power Management version 2
    Kernel driver in use: firewire_ohci
    Kernel modules: firewire-ohci

44:06.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host
Adapter (rev 25)
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, medium devsel, latency 64, IRQ 22
    Memory at d0403000 (32-bit, non-prefetchable) [size=256]
    Capabilities: [80] Power Management version 2
    Kernel driver in use: sdhci-pci
    Kernel modules: sdhci-pci

44:06.2 System peripheral: Ricoh Co Ltd R5C843 MMC Host Controller (rev 14)
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, medium devsel, latency 0, IRQ 11
    Memory at d0402000 (32-bit, non-prefetchable) [size=256]
    Capabilities: [80] Power Management version 2

44:06.3 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev bb)
    Subsystem: Hewlett-Packard Company Device 7008
    Flags: bus master, medium devsel, latency 168, IRQ 22
    Memory at d0400000 (32-bit, non-prefetchable) [size=4K]
    Bus: primary=44, secondary=45, subordinate=48, sec-latency=176
    Memory window 0: d8000000-dbfff000 (prefetchable)
    Memory window 1: dc000000-dffff000
    I/O window 0: 00002000-000020ff
    I/O window 1: 00002400-000024ff
    16-bit legacy interface ports at 0001
    Kernel driver in use: yenta_cardbus
    Kernel modules: yenta_socket

ff:00.0 Host bridge: Intel Corporation Core Processor QuickPath Architecture
Generic Non-core Registers (rev 02)
    Subsystem: Intel Corporation Device 8086
    Flags: bus master, fast devsel, latency 0

ff:00.1 Host bridge: Intel Corporation Core Processor QuickPath Architecture
System Address Decoder (rev 02)
    Subsystem: Intel Corporation Device 8086
    Flags: bus master, fast devsel, latency 0

ff:02.0 Host bridge: Intel Corporation Core Processor QPI Link 0 (rev 02)
    Subsystem: Intel Corporation Device 8086
    Flags: bus master, fast devsel, latency 0

ff:02.1 Host bridge: Intel Corporation Core Processor QPI Physical 0 (rev 02)
    Subsystem: Intel Corporation Device 8086
    Flags: bus master, fast devsel, latency 0

ff:02.2 Host bridge: Intel Corporation Core Processor Reserved (rev 02)
    Subsystem: Intel Corporation Device 8086
    Flags: bus master, fast devsel, latency 0

ff:02.3 Host bridge: Intel Corporation Core Processor Reserved (rev 02)
    Subsystem: Intel Corporation Device 8086
    Flags: bus master, fast devsel, latency 0


How to reproduce:

Boot without X (runlevel 3) and with drm.debug=0xff
Login as root on the console.
Captured the register dump with: intel_reg_dumper > regs.1
Set-up netconsole (quite a bit of mucking here with firewire to trigger kernel messages)
Captured dmesg with dmesg > dmesg.2.log
I plug an external monitor on the VGA port.
A bunch of messages fly on the netconsole (netconsole.out).
The computer locks up shortly after.  No oops captured.
Comment 1 Philippe Troin 2010-07-15 10:25:15 UTC
Created attachment 37081 [details]
Register dump before hot-plugging the external monitor.
Comment 2 Philippe Troin 2010-07-15 10:25:45 UTC
Created attachment 37082 [details]
Dmesg before hot-plugging external monitor.
Comment 3 Philippe Troin 2010-07-15 10:27:19 UTC
Created attachment 37083 [details]
Netconsole output generated when the external monitor is hot-plugged.
Comment 4 Jesse Barnes 2010-07-15 10:31:28 UTC
I wonder if the patch from #28739 helps at all?  It may be we're running into a DP programming conflict with the panel locking out any changes...
Comment 5 Philippe Troin 2010-07-15 16:31:28 UTC
Yes, this patch:

 make sure panel power is enabled on eDP   (1.17 KB, patch)
2010-07-14 12:21 PDT, Jesse Barnes 

from #28739 helps quite a bit, but not entirely.

Now with exactly the same set-up as before, but with the above patch applied, I see the following behavior:

1. I boot in runlevel 3, no X, with drm.debug=0xff
2. Captured the register dump (labeled regdump.nox.1)
3. I hotplug a VGA monitor, both the DP and VGA monitor show the same image.
4. Captured the register dump (labeled regdump.nox.2)
5. I unplug the VGA monitor, seems fine
6. The register dump at this point does not differ from regdump.nox.2
7. I captured the dmesg in dmesg.nox.
8. Laptop seems to be fine.  However starting X will crash the computer.

Second scenario (with X):

1. I boot in runlevel 5, with X, with drm.debug=0x06 (0xff will be too much data)
2. Captured the register dump (labeled regump.withx.1), and dmesg (dmesg.withx.1)
3. I hotplug a VGA monitor, the desktop extends to encompass both screens
4. Captured the register dump (labeled regdump.withx.2) and dmesg (dmesg.withx.2)
5. I unplug the VGA monitor.
6. The X screen goes black on the laptop.  The mouse is still moving around, but some artifacts are shown)
7. I login via the network, captured a register dump (regdump.withx.3) and dmesg (dmesg.withx.3)
8. Laptop is wedged.  Stopping X hangs it.


Thanks again for your quick response!
Phil.
Comment 6 Philippe Troin 2010-07-15 16:32:15 UTC
Created attachment 37088 [details]
intel-regs.nox.1
Comment 7 Philippe Troin 2010-07-15 16:32:58 UTC
Created attachment 37089 [details]
intel-regs.nox.2
Comment 8 Philippe Troin 2010-07-15 16:33:30 UTC
Created attachment 37090 [details]
dmesg.nox
Comment 9 Philippe Troin 2010-07-15 16:33:59 UTC
Created attachment 37091 [details]
intel-regs.withx.1
Comment 10 Philippe Troin 2010-07-15 16:34:29 UTC
Created attachment 37092 [details]
intel-regs.withx.2
Comment 11 Philippe Troin 2010-07-15 16:34:56 UTC
Created attachment 37093 [details]
intel-regs.withx.3
Comment 12 Philippe Troin 2010-07-15 16:35:25 UTC
Created attachment 37094 [details]
dmesg.withx.1
Comment 13 Philippe Troin 2010-07-15 16:35:54 UTC
Created attachment 37095 [details]
dmesg.withx.2
Comment 14 Philippe Troin 2010-07-15 16:36:23 UTC
Created attachment 37096 [details]
dmesg.withx.3
Comment 15 Jesse Barnes 2010-07-19 12:59:09 UTC
Sounds potentially related to https://patchwork.kernel.org/patch/112571/ have you tried that patch?
Comment 16 Philippe Troin 2010-07-19 15:21:23 UTC
(In reply to comment #15)
> Sounds potentially related to https://patchwork.kernel.org/patch/112571/ have
> you tried that patch?

Well, if it's not in 2.6.35-rc5, I haven't tried it yet.
And patchwork.k.o seems to be down at the moment.
Do you have an alternate location for the patch?
Comment 17 Jesse Barnes 2010-07-19 15:38:55 UTC
Created attachment 37192 [details] [review]
flip fix for removed framebuffer

Here you go
Comment 18 Jesse Barnes 2010-07-23 13:38:45 UTC
Have you had a chance to try that patch yet?
Comment 19 Philippe Troin 2010-07-25 06:52:04 UTC
(In reply to comment #18)
> Have you had a chance to try that patch yet?

I just found the time.

I have tried vanilla 2.6.35rc6 with the two following patches:

   make sure panel power is enabled on eDP   (1.17 KB, patch)
2010-07-14 12:21 PDT, Jesse Barnes 

(same as before)

and this new patch:

  Bug 28811 - [page-flipping] GPU hang when modeset after unplugging
              another monitor (under compiz)
  https://bugs.freedesktop.org/show_bug.cgi?id=28811

I still see the same behavior.

One new thing to report:  the bad behavior only happens when plugging then unplugging a VGA monitor.  I have managed to get a DP to DVI cable, and with that one, when when using the DP connector, the hot-plug and hot-unplug work fine.

Phil.
Comment 20 Chris Wilson 2010-08-04 01:38:58 UTC
Created attachment 37567 [details] [review]
disable DAC on Ironlake also when doing CRT load detection

Can you please test this patch by Dave Airlie? Thanks.
Comment 21 Jesse Barnes 2010-08-10 14:13:46 UTC
Hope Dave's patch fixes this.
Comment 22 Philippe Troin 2010-08-24 13:36:03 UTC
(In reply to comment #21)
> Hope Dave's patch fixes this.

Sorry for the delay, I was away on vacation.
I'll be testing this soon, the kernel is building as I type.

Phil.
Comment 23 Philippe Troin 2010-08-24 15:26:59 UTC
(In reply to comment #22)
> (In reply to comment #21)
> > Hope Dave's patch fixes this.
> 
> Sorry for the delay, I was away on vacation.
> I'll be testing this soon, the kernel is building as I type.

I have tested with same set-up as before plus the new patch from Dave (disable DAC on Ironlake also when doing CRT load detection), and it does not make any difference (still display corruption and crash upon hot unplugging the VGA connector).

Phil.
Comment 24 Jesse Barnes 2010-09-09 11:56:43 UTC
Created attachment 38581 [details] [review]
don't enable self-refresh on ilk

This bug is probably a dupe of #29173 among others.  Does this patch fix the issue for you?  It works for me...
Comment 25 Chris Wilson 2010-09-09 12:30:22 UTC
Just a note, all of Jesse's fixes are available for testing in http://cgit.freedesktop.org/~ickle/drm-intel/?h=drm-intel-staging
Comment 26 Chris Wilson 2010-09-10 02:58:57 UTC
(In reply to comment #25)
> Just a note, all of Jesse's fixes are available for testing in
> http://cgit.freedesktop.org/~ickle/drm-intel/?h=drm-intel-staging

No, they weren't.

All of Jesse's eDP fixes are available in 

git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel.git drm-intel-next

whereas this patch is available on the testing branch:

drm-intel-staging.

Sorry for any confusion.
Comment 27 Philippe Troin 2010-09-10 09:59:16 UTC
(In reply to comment #24)
> Created an attachment (id=38581) [details]
> don't enable self-refresh on ilk
> 
> This bug is probably a dupe of #29173 among others.  Does this patch fix the
> issue for you?  It works for me...

Yes!
Finally!

This patch fixes all the remaining hotplug / unplug issues for me.  Plugging in a VGA cable works, unplugging it works, same for a DP cable.

Thanks!
Comment 28 Jesse Barnes 2010-09-10 12:57:44 UTC
Excellent, patch is on its way to Linus now.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.