Re: git pull] drm for v4.1-rc1

Stefan Lippers-Hollmann
2015-06-05T21:18:40Z

[-- Attachment #1: Type: text/plain, Size: 12994 bytes --]

Hi

On 2015-04-20, Dave Airlie wrote:
[...]
> The following changes since commit 09d51602cf84a1264946711dd4ea0dddbac599a1:
>
> Merge branch 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux (2015-04-19 14:31:41 -0700)
>
> are available in the git repository at:
>
> git://people.freedesktop.org/~airlied/linux drm-next-merged
>
> for you to fetch changes up to 2c33ce009ca2389dbf0535d0672214d09738e35e:
>
> Merge Linus master into drm-next (2015-04-20 13:05:20 +1000)
[...]
> Ander Conselvan de Oliveira (28):
[...]
> drm/i915: Allocate connector state together with the connectors
[...]

This commit introduces a regression relative to v4.0 on an Intel
D945GCLF2 mainboard[1] (Atom 330) with Intel 82945G/GZ onboard graphics
using its (only-) VGA connector for me.

v4.1-rc6-52-gff25ea8:
[ 13.265699] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
[ 13.265723] IP: [<ffffffffa0556f01>] intel_modeset_update_connector_atomic_state+0x61/0x90 [i915]
[ 13.265803] PGD 0
[ 13.265810] Oops: 0002 [#1] PREEMPT SMP
[ 13.265820] Modules linked in: iTCO_wdt i915(+) iTCO_vendor_support snd_hda_codec_realtek snd_hda_codec_generic coretemp gpio_ich pcspkr lpc_ich mfd_core video i2c_algo_bit drm_kms_helper snd_hda_intel drm snd_hda_controller i2c_i801 i2c_core evdev snd_hda_codec psmouse sg serio_raw intel_agp intel_gtt rng_core snd_hda_core snd_hwdep snd_pcm snd_timer snd soundcore floppy(+) 8250_fintek acpi_cpufreq button processor fuse parport_pc ppdev lp parport autofs4 ext4 crc16 jbd2 mbcache dm_mod sr_mod cdrom sd_mod ata_generic pata_acpi ata_piix libata scsi_mod uhci_hcd ehci_pci ehci_hcd usbcore usb_common r8169 mii
[ 13.265958] CPU: 0 PID: 211 Comm: systemd-udevd Not tainted 4.1.0-rc6-aptosid-amd64 #1 aptosid 4.1~rc6-1~git65.slh.1
[ 13.265971] Hardware name: /D945GCLF2, BIOS LF94510J.86A.0278.2010.0414.2000 04/14/2010
[ 13.265999] task: ffff8800372f65c0 ti: ffff88007958c000 task.ti: ffff88007958c000
[ 13.266005] RIP: 0010:[<ffffffffa0556f01>] [<ffffffffa0556f01>] intel_modeset_update_connector_atomic_state+0x61/0x90 [i915]
[ 13.266005] RSP: 0018:ffff88007958f820 EFLAGS: 00010246
[ 13.266005] RAX: ffff88007b0ba800 RBX: ffff88000010b378 RCX: ffff88003738c000
[ 13.266005] RDX: 0000000000000000 RSI: ffff88003738b408 RDI: ffff88000010b330
[ 13.266005] RBP: ffff88007c010000 R08: ffff88007c010000 R09: ffff88003738b000
[ 13.266005] R10: 0000000000000292 R11: 0000000000000020 R12: ffff88000010b348
[ 13.266005] R13: ffff88000010b000 R14: ffff88007c018688 R15: 0000000000000000
[ 13.266005] FS: 00007f4af014a880(0000) GS:ffff88007f200000(0000) knlGS:0000000000000000
[ 13.266005] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 13.266005] CR2: 0000000000000010 CR3: 00000000371b2000 CR4: 00000000000007f0
[ 13.266005] Stack:
[ 13.266005] ffffffffa05709d0 ffff880000000002 ffff88007c010000 ffff88000010b330
[ 13.266005] 0000000079f44a80 ffff88000010b348 ffff88000010b378 ffff88000010b000
[ 13.266005] ffffffffa00f7949 ffff88000010b000 ffff880000000000 ffff880079f44a80
[ 13.266005] Call Trace:
[ 13.266005] [<ffffffffa05709d0>] ? intel_modeset_setup_hw_state+0x7e0/0xdb0 [i915]
[ 13.266005] [<ffffffffa00f7949>] ? drm_modeset_lock_all_crtcs+0xa9/0xc0 [drm]
[ 13.266005] [<ffffffffa05719f4>] ? intel_modeset_init+0x8f4/0x1700 [i915]
[ 13.266005] [<ffffffffa054c9fb>] ? gen2_read32+0x1b/0x30 [i915]
[ 13.266005] [<ffffffffa05a4acf>] ? i915_driver_load+0xe6f/0x13d0 [i915]
[ 13.266005] [<ffffffff8109f96f>] ? __wake_up+0x2f/0x50
[ 13.266005] [<ffffffff8143b220>] ? netlink_broadcast_filtered+0x130/0x380
[ 13.266005] [<ffffffff8127a450>] ? kobj_ns_drop+0x50/0x50
[ 13.266005] [<ffffffff8127a79c>] ? kobject_uevent_env+0xfc/0x400
[ 13.266005] [<ffffffff81392612>] ? get_device+0x12/0x30
[ 13.266005] [<ffffffff814ff7ff>] ? klist_add_tail+0x1f/0x50
[ 13.266005] [<ffffffff81393efd>] ? device_add+0x21d/0x650
[ 13.266005] [<ffffffffa00e214c>] ? drm_dev_register+0x9c/0xf0 [drm]
[ 13.266005] [<ffffffffa00e4f54>] ? drm_get_pci_dev+0x84/0x1f0 [drm]
[ 13.266005] [<ffffffff813a0607>] ? __pm_runtime_resume+0x47/0x60
[ 13.266005] [<ffffffff812c052a>] ? local_pci_probe+0x3a/0xa0
[ 13.266005] [<ffffffff812c16a4>] ? pci_match_device+0xe4/0x110
[ 13.266005] [<ffffffff812c17f8>] ? pci_device_probe+0xe8/0x140
[ 13.266005] [<ffffffff81396f59>] ? driver_probe_device+0x179/0x2f0
[ 13.266005] [<ffffffff8139719b>] ? __driver_attach+0x7b/0x80
[ 13.266005] [<ffffffff81397120>] ? __device_attach+0x50/0x50
[ 13.266005] [<ffffffff81394eeb>] ? bus_for_each_dev+0x6b/0xc0
[ 13.266005] [<ffffffff813965d8>] ? bus_add_driver+0x178/0x230
[ 13.266005] [<ffffffffa022b000>] ? 0xffffffffa022b000
[ 13.266005] [<ffffffff813977ce>] ? driver_register+0x5e/0xf0
[ 13.266005] [<ffffffff81002108>] ? do_one_initcall+0x98/0x1f0
[ 13.266005] [<ffffffff81508d8e>] ? do_init_module+0x50/0x1b0
[ 13.266005] [<ffffffff810d70f3>] ? load_module+0x1ae3/0x2010
[ 13.266005] [<ffffffff810d4670>] ? __symbol_put+0x70/0x70
[ 13.266005] [<ffffffff810d49bd>] ? copy_module_from_fd.isra.55+0xdd/0x170
[ 13.266005] [<ffffffff810d77ed>] ? SyS_finit_module+0x8d/0xa0
[ 13.266005] [<ffffffff8150f56e>] ? system_call_fastpath+0x12/0x71
[ 13.266005] Code: 03 00 00 48 8b 49 40 48 89 4a 08 48 8b 50 18 48 39 d7 48 8d 42 e8 74 3a 48 8b 90 b8 02 00 00 48 85 d2 75 c6 48 8b 90 70 03 00 00 <48> c7 42 10 00 00 00 00 48 8b 90 70 03 00 00 48 c7 42 08 00 00
[ 13.266005] RIP [<ffffffffa0556f01>] intel_modeset_update_connector_atomic_state+0x61/0x90 [i915]
[ 13.266005] RSP <ffff88007958f820>
[ 13.266005] CR2: 0000000000000010
[ 13.267502] ---[ end trace 365d8347f4bc917c ]---

00:02.0 VGA compatible controller: Intel Corporation 82945G/GZ Integrated Graphics Controller (rev 02) (prog-if 00 [VGA controller])
Subsystem: Intel Corporation Device 464c
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 90200000 (32-bit, non-prefetchable) [size=512K]
Region 1: I/O ports at 20e0 [size=8]
Region 2: Memory at 80000000 (32-bit, prefetchable) [size=256M]
Region 3: Memory at 90280000 (32-bit, non-prefetchable) [size=256K]
Expansion ROM at <unassigned> [disabled]
Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [d0] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: i915

The monitor switches off immediately when the modeswitch occurs and
stays off, the system won't reboot normally afterwards.

Bisecting this problem hints at:

$ git bisect bad
08d9bc920d465bbbbd762cac9383249c19bf69a2 is the first bad commit
commit 08d9bc920d465bbbbd762cac9383249c19bf69a2
Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Date: Fri Apr 10 10:59:10 2015 +0300

drm/i915: Allocate connector state together with the connectors

Connector states were being allocated in intel_setup_outputs() in loop
over all connectors. That meant hot-added connectors would have a NULL
state. Since the change to use a struct drm_atomic_state for the legacy
modeset, connector states are necessary for the i915 driver to function
properly, so that would lead to oopses.

Broken by

commit 944b0c76575753da5a332aab0a1d8c6df65a076b
Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Date: Fri Mar 20 16:18:07 2015 +0200

drm/i915: Copy the staged connector config to the legacy atomic state

v2: Fix test for intel_connector_init() success in lvds and sdvo (PRTS)

Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reported-and-tested-by: Nicolas Kalkhof <nkalkhof@web.de>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

:040000 040000 cc9b8038218687b7b98630970239fd0e05637c6e 46c31b06a2be069098ff6ee0f509edad019b3c43 M drivers

$ git bisect log
git bisect start
# bad: [ff25ea8f4eeea252bfcaf65289fa57ba6de080dd] Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma
git bisect bad ff25ea8f4eeea252bfcaf65289fa57ba6de080dd
# good: [39a8804455fb23f09157341d3ba7db6d7ae6ee76] Linux 4.0
git bisect good 39a8804455fb23f09157341d3ba7db6d7ae6ee76
# good: [6d50ff91d9780263160262daeb6adfdda8ddbc6c] Merge tag 'locks-v4.1-1' of git://git.samba.org/jlayton/linux
git bisect good 6d50ff91d9780263160262daeb6adfdda8ddbc6c
# bad: [1fc149933fd49a5b0e7738dc0853dbfbac4ae0e1] Merge tag 'char-misc-4.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
git bisect bad 1fc149933fd49a5b0e7738dc0853dbfbac4ae0e1
# good: [e2fdae7e7c5a690b10b2d2891ec819e554dc033d] Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
git bisect good e2fdae7e7c5a690b10b2d2891ec819e554dc033d
# bad: [cec32a47010647e8b0603726ebb75b990a4057a4] media-bus: Fixup RGB444_1X12, RGB565_1X16, and YUV8_1X24 media bus format
git bisect bad cec32a47010647e8b0603726ebb75b990a4057a4
# good: [3cd919fc010043d67259ccf37ca5c5892582051e] drm/i915: Remove duplicated psr.active unset
git bisect good 3cd919fc010043d67259ccf37ca5c5892582051e
# good: [67a0375f5e27c1daa50554de7a01fdfa4a9ea0bf] Merge tag 'omapdrm-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux into drm-next
git bisect good 67a0375f5e27c1daa50554de7a01fdfa4a9ea0bf
# good: [bb1dc08c94ead1b98e750caf535422f79363c1a2] Merge tag 'of-graph-drm-2015-04-08' of git://git.pengutronix.de/git/pza/linux into drm-next
git bisect good bb1dc08c94ead1b98e750caf535422f79363c1a2
# good: [89025bd458a572f15e30f59d1ac5acb599cb53bc] drm/nouveau/fifo/gm204: initial support
git bisect good 89025bd458a572f15e30f59d1ac5acb599cb53bc
# good: [52139bdea1558e854123d7a07e7648f5a8c77a5c] Merge branch 'drm-dwhdmi-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into drm-next
git bisect good 52139bdea1558e854123d7a07e7648f5a8c77a5c
# good: [16bb079e45f2c3a795b6b0546535cd6466275ec5] drm/radeon: constify more struct drm_*_helper funcs pointers
git bisect good 16bb079e45f2c3a795b6b0546535cd6466275ec5
# bad: [37ef01ab5d24d1d520dc79f6a98099d451c2a901] drm/i915: Dont enable CS_PARSER_ERROR interrupts at all
git bisect bad 37ef01ab5d24d1d520dc79f6a98099d451c2a901
# good: [af8fcb9c58f1b2f02ddc04ba64710aaa52da00db] drm/i915/chv: Remove DPIO force latency causing interpair skew issue
git bisect good af8fcb9c58f1b2f02ddc04ba64710aaa52da00db
# bad: [e0d6149b3debce1a7e17dfda7c2829935917dc58] drm/i915: Move drm_framebuffer_unreference out of struct_mutex for takeover
git bisect bad e0d6149b3debce1a7e17dfda7c2829935917dc58
# bad: [08d9bc920d465bbbbd762cac9383249c19bf69a2] drm/i915: Allocate connector state together with the connectors
git bisect bad 08d9bc920d465bbbbd762cac9383249c19bf69a2
# first bad commit: [08d9bc920d465bbbbd762cac9383249c19bf69a2] drm/i915: Allocate connector state together with the connectors

Reverting just this commit on top of yesterday evening's
v4.1-rc6-52-gff25ea8 avoids the problem for me.

Using the very same kernel, other i915 based systems are fine for me:
DP && HDMI: 00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller [8086:0162] (rev 09)
DVI: 00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller [8086:0152] (rev 09)
headless: 00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller [8086:0152] (rev 09)
headless: 00:02.0 VGA compatible controller [0300]: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Graphics & Display [8086:0f31] (rev 0e)
HDMI: 00:02.0 VGA compatible controller [0300]: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0122] (rev 09)
LVDS: 00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 945GSE Express Integrated Graphics Controller [8086:27ae] (rev 03)
headless: 00:02.0 VGA compatible controller [0300]: Intel Corporation 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device [8086:2562] (rev 01)

Regards
Stefan Lippers-Hollmann

[1] http://www.intel.com/support/motherboards/desktop/d945gclf2/sb/CS-029540.htm

[-- Attachment #2: Digitale Signatur von OpenPGP --]
[-- Type: application/pgp-signature, Size: 819 bytes --]