Bug#661696: drm/i915: wrong fifo size due to uncareful refactoring which results in an xserver crash at 800x600
Package: linux-2.6
Version: 2.6.32-41
Severity: important
Tags: upstream patch
Hi,
I've encountered a nasty bug in the drm/i915 part of Debian's stable kernel. The code is also present in 2.6.33.20, which is the latest stable upstream release of 2.6.33.y at the time of writing.
During a refactoring of the i915 driver a regression has been introduced (http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=e70236a8d3d0a4c100a0b9f7d394d9bda9c56aca): For some chipsets the wrong fifo size is determined which results in lot's of pixel errors when starting the xserver and choosing 800x600 as a resolution. If another resolution is used (eg. 1024x768 or 1280x1024), I don't encounter this problem.
I've attached a patch that fixes the problem (no pixel errors anymore) and determines the correct fifo size.
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4828,15 +4828,15 @@ static void intel_init_display(struct drm_device *dev)
dev_priv->display.update_wm = i965_update_wm;
else if (IS_I9XX(dev) || IS_MOBILE(dev)) {
dev_priv->display.update_wm = i9xx_update_wm;
- dev_priv->display.get_fifo_size = i9xx_get_fifo_size;
- } else {
if (IS_I85X(dev))
dev_priv->display.get_fifo_size = i85x_get_fifo_size;
else if (IS_845G(dev))
dev_priv->display.get_fifo_size = i845_get_fifo_size;
else
- dev_priv->display.get_fifo_size = i830_get_fifo_size;
+ dev_priv->display.get_fifo_size = i9xx_get_fifo_size;
+ } else {
dev_priv->display.update_wm = i830_update_wm;
+ dev_priv->display.get_fifo_size = i830_get_fifo_size;
}
}
Regards,
Lukas
-- Package-specific info:
** Version:
Linux version 2.6.32-5-686 (Debian 2.6.32-41) (ben@decadent.org.uk) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Mon Jan 16 16:04:25 UTC 2012
** Command line:
BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-686 root=UUID=08a419ad-d4d1-47ff-94fd-6d7c8c5321de ro quiet
** Not tainted
** Kernel log:
[ 1.637921] sd 0:0:0:0: [sda] 8027712 512-byte logical blocks: (4.11 GB/3.82 GiB)
[ 1.638005] sd 0:0:0:0: [sda] Write Protect is off
[ 1.638010] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 1.638045] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 1.638258] sda: sda1 sda2
[ 1.639892] sd 0:0:0:0: [sda] Attached SCSI disk
[ 1.740461] usb 1-1: new full speed USB device using uhci_hcd and address 2
[ 1.744283] kjournald starting. Commit interval 5 seconds
[ 1.744299] EXT3-fs: mounted filesystem with ordered data mode.
[ 1.897098] usb 1-1: New USB device found, idVendor=1a40, idProduct=0201
[ 1.897104] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 1.897109] usb 1-1: Product: USB 2.0 Hub [MTT]
[ 1.897256] usb 1-1: configuration #1 chosen from 1 choice
[ 1.900120] hub 1-1:1.0: USB hub found
[ 1.902075] hub 1-1:1.0: 7 ports detected
[ 2.006518] udev[254]: starting version 164
[ 2.020066] usb 1-2: new full speed USB device using uhci_hcd and address 3
[ 2.194232] usb 1-2: New USB device found, idVendor=9710, idProduct=7830
[ 2.194239] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.194244] usb 1-2: Product: USB-MAC Controller
[ 2.194247] usb 1-2: Manufacturer: Moschip Semiconductor
[ 2.194251] usb 1-2: SerialNumber: 3b00043d
[ 2.194414] usb 1-2: configuration #1 chosen from 1 choice
[ 2.274033] usb 1-1.2: new full speed USB device using uhci_hcd and address 4
[ 2.350298] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 2.388923] input: PC Speaker as /devices/platform/pcspkr/input/input0
[ 2.403022] Marking TSC unstable due to TSC halts in idle
[ 2.405028] processor LNXCPU:00: registered as cooling_device1
[ 2.419214] Switching to clocksource acpi_pm
[ 2.456113] intel_rng: FWH not detected
[ 2.470309] ACPI: AC Adapter [ADP1] (off-line)
[ 2.470506] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
[ 2.470522] ACPI: Power Button [PWRB]
[ 2.470618] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[ 2.470624] ACPI: Power Button [PWRF]
[ 2.488242] i801_smbus 0000:00:1f.3: PCI INT B -> GSI 17 (level, low) -> IRQ 17
[ 2.499895] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 2.529165] usb 1-1.3: new low speed USB device using uhci_hcd and address 5
[ 2.542981] usb 1-2: applying rev.C fixup
[ 2.549198] usb 1-2: applying rev.C fixup
[ 2.561229] eth1: register 'MOSCHIP usb-ethernet driver' at usb-0000:00:1d.0-2, MOSCHIP 7830/7730 usb-NET adapter, 00:13:3b:00:04:3d
[ 2.561269] usbcore: registered new interface driver MOSCHIP usb-ethernet driver
[ 2.618157] [drm] Initialized drm 1.1.0 20060810
[ 2.714449] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 2.714459] i915 0000:00:02.0: setting latency timer to 64
[ 2.719367] [drm] set up 3M of stolen space
[ 2.786929] usb 1-1.4: new low speed USB device using uhci_hcd and address 6
[ 2.810044] [drm] initialized overlay support
[ 3.017929] usb 1-1.4: New USB device found, idVendor=046d, idProduct=c312
[ 3.017936] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3.017941] usb 1-1.4: Product: USB Multimedia Keyboard
[ 3.017945] usb 1-1.4: Manufacturer: LITEON Technology
[ 3.018172] usb 1-1.4: configuration #1 chosen from 1 choice
[ 3.064696] usbcore: registered new interface driver usbserial
[ 3.065060] USB Serial support registered for generic
[ 3.065322] usbcore: registered new interface driver usbserial_generic
[ 3.065325] usbserial: USB Serial Driver core
[ 3.105820] Console: switching to colour frame buffer device 160x64
[ 3.106212] USB Serial support registered for FTDI USB Serial Device
[ 3.120640] fb0: inteldrmfb frame buffer device
[ 3.120643] registered panic notifier
[ 3.131269] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0
[ 3.131332] usbcore: registered new interface driver ftdi_sio
[ 3.131336] ftdi_sio: v1.5.0:USB FTDI Serial Converters Driver
[ 3.134135] usbcore: registered new interface driver hiddev
[ 3.137738] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[ 3.137813] Intel ICH 0000:00:1f.5: PCI INT B -> GSI 17 (level, low) -> IRQ 17
[ 3.137849] Intel ICH 0000:00:1f.5: setting latency timer to 64
[ 3.149671] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input3
[ 3.149953] generic-usb 0003:046D:C312.0001: input,hidraw0: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:1d.0-1.4/input0
[ 3.150007] usbcore: registered new interface driver usbhid
[ 3.150305] usbhid: v2.6:USB HID core driver
[ 3.460056] intel8x0_measure_ac97_clock: measured 54690 usecs (2635 samples)
[ 3.460062] intel8x0: clocking to 48000
[ 3.765560] Adding 524280k swap on /dev/sda2. Priority:-1 extents:1 across:524280k
[ 3.845241] EXT3 FS on sda1, internal journal
[ 4.165025] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 4.168163] e100: eth0 NIC Link is Up 100 Mbps Full Duplex
[ 4.168463] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 7.849201] [drm:intel_crtc_mode_set] *ERROR* Couldn't find PLL settings for mode!
[ 7.849209] [drm:drm_crtc_helper_set_config] *ERROR* failed to set mode on crtc ce96d000
[ 14.552037] eth0: no IPv6 routers present
** Model information
not available
** Loaded modules:
Module Size Used by
usbhid 28016 0
ftdi_sio 28887 0
hid 50909 1 usbhid
usbserial 22100 1 ftdi_sio
snd_intel8x0 19595 2
snd_ac97_codec 79200 1 snd_intel8x0
ac97_bus 710 1 snd_ac97_codec
snd_pcm 47226 2 snd_intel8x0,snd_ac97_codec
snd_seq 35463 0
i915 223022 1
snd_timer 12270 2 snd_pcm,snd_seq
drm_kms_helper 18569 1 i915
snd_seq_device 3673 1 snd_seq
drm 111992 2 i915,drm_kms_helper
i2c_algo_bit 3493 1 i915
snd 34423 10 snd_intel8x0,snd_ac97_codec,snd_pcm,snd_seq,snd_timer,snd_seq_device
mcs7830 4077 0
shpchp 21200 0
i2c_i801 6462 0
evdev 5609 0
video 14605 1 i915
usbnet 9527 1 mcs7830
soundcore 3450 1 snd
psmouse 44809 0
ac 1640 0
button 3598 1 i915
processor 26327 1
pcspkr 1207 0
i2c_core 12787 5 i915,drm_kms_helper,drm,i2c_algo_bit,i2c_i801
snd_page_alloc 5045 2 snd_intel8x0,snd_pcm
rng_core 2178 0
serio_raw 2916 0
output 1204 1 video
pci_hotplug 18545 1 shpchp
ext3 94396 1
jbd 32401 1 ext3
mbcache 3762 1 ext3
sd_mod 26013 3
crc_t10dif 1012 1 sd_mod
ata_generic 2247 0
fan 2586 0
ata_piix 17736 2
thermal 9206 0
uhci_hcd 16057 0
libata 115889 2 ata_generic,ata_piix
e100 22317 0
ehci_hcd 28689 0
thermal_sys 9378 4 video,processor,fan,thermal
usbcore 99329 9 usbhid,ftdi_sio,usbserial,mcs7830,usbnet,uhci_hcd,ehci_hcd
mii 2714 3 mcs7830,usbnet,e100
scsi_mod 105001 2 sd_mod,libata
nls_base 4541 1 usbcore
** PCI devices:
00:00.0 Host bridge [0600]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3580] (rev 02)
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 <unassigned> (32-bit, prefetchable)
Capabilities: [40] Vendor Specific Information: Len=05 <?>
Kernel driver in use: agpgart-intel
00:00.1 System peripheral [0880]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3584] (rev 02)
Subsystem: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3584]
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
00:00.3 System peripheral [0880]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3585] (rev 02)
Subsystem: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3585]
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
00:02.0 VGA compatible controller [0300]: Intel Corporation 82852/855GM Integrated Graphics Device [8086:3582] (rev 02) (prog-if 00 [VGA controller])
Subsystem: Intel Corporation 82852/855GM Integrated Graphics Device [8086:3582]
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 16
Region 0: Memory at f0000000 (32-bit, prefetchable) [size=128M]
Region 1: Memory at ffa80000 (32-bit, non-prefetchable) [size=512K]
Region 2: I/O ports at ec00 [size=8]
Expansion ROM at <unassigned> [disabled]
Capabilities: [d0] Power Management version 1
Flags: PMEClk- DSI+ D1+ D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: i915
00:1d.0 USB Controller [0c03]: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 [8086:24c2] (rev 02) (prog-if 00 [UHCI])
Subsystem: Intel Corporation Device [8086:24c0]
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 e080 [size=32]
Kernel driver in use: uhci_hcd
00:1d.1 USB Controller [0c03]: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 [8086:24c4] (rev 02) (prog-if 00 [UHCI])
Subsystem: Intel Corporation Device [8086:24c0]
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 19
Region 4: I/O ports at e400 [size=32]
Kernel driver in use: uhci_hcd
00:1e.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev 82) (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
Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
I/O behind bridge: 0000d000-0000dfff
Memory behind bridge: ff800000-ff8fffff
Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
00:1f.0 ISA bridge [0601]: Intel Corporation 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge [8086:24c0] (rev 02)
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
00:1f.1 IDE interface [0101]: Intel Corporation 82801DB (ICH4) IDE Controller [8086:24cb] (rev 02) (prog-if 8a [Master SecP PriP])
Subsystem: Intel Corporation Device [8086:24c0]
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 18
Region 0: I/O ports at 01f0 [size=8]
Region 1: I/O ports at 03f4 [size=1]
Region 2: I/O ports at 0170 [size=8]
Region 3: I/O ports at 0374 [size=1]
Region 4: I/O ports at fc00 [size=16]
Region 5: Memory at 10000000 (32-bit, non-prefetchable) [size=1K]
Kernel driver in use: ata_piix
00:1f.3 SMBus [0c05]: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller [8086:24c3] (rev 02)
Subsystem: Intel Corporation Device [8086:24c0]
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 B routed to IRQ 17
Region 4: I/O ports at 0400 [size=32]
Kernel driver in use: i801_smbus
00:1f.5 Multimedia audio controller [0401]: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller [8086:24c5] (rev 02)
Subsystem: Device [414c:4760]
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 0: I/O ports at e800 [size=256]
Region 1: I/O ports at e480 [size=64]
Region 2: Memory at ffa7bc00 (32-bit, non-prefetchable) [size=512]
Region 3: Memory at ffa7b800 (32-bit, non-prefetchable) [size=256]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: Intel ICH
01:08.0 Ethernet controller [0200]: Intel Corporation 82801DB PRO/100 VE (CNR) Ethernet Controller [8086:103a] (rev 82)
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: 64 (2000ns min, 14000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 20
Region 0: Memory at ff8ff000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at dc00 [size=64]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=2 PME-
Kernel driver in use: e100
** USB devices:
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 006: ID 046d:c312 Logitech, Inc. DeLuxe 250 Keyboard
Bus 001 Device 002: ID 1a40:0201 TERMINUS TECHNOLOGY INC.
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
-- System Information:
Debian Release: 6.0.4
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages linux-image-2.6.32-5-686 depends on:
ii debconf [debconf-2.0] 1.5.36.1 Debian configuration management sy
ii initramfs-tools [linux-initra 0.98.8 tools for generating an initramfs
ii linux-base 2.6.32-41 Linux image base package
ii module-init-tools 3.12-2+b1 tools for managing Linux kernel mo
Versions of packages linux-image-2.6.32-5-686 recommends:
ii firmware-linux-free 2.6.32-41 Binary firmware for various driver
pn libc6-i686 <none> (no description available)
Versions of packages linux-image-2.6.32-5-686 suggests:
pn grub | lilo <none> (no description available)
pn linux-doc-2.6.32 <none> (no description available)
Versions of packages linux-image-2.6.32-5-686 is related to:
pn firmware-bnx2 <none> (no description available)
pn firmware-bnx2x <none> (no description available)
pn firmware-ipw2x00 <none> (no description available)
pn firmware-ivtv <none> (no description available)
pn firmware-iwlwifi <none> (no description available)
ii firmware-linux 0.28+squeeze1 Binary firmware for various driver
ii firmware-linux-nonfree 0.28+squeeze1 Binary firmware for various driver
pn firmware-qlogic <none> (no description available)
pn firmware-ralink <none> (no description available)
pn xen-hypervisor <none> (no description available)
-- debconf information excluded
Reply to: