Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753224AbaFSMpR (ORCPT ); Thu, 19 Jun 2014 08:45:17 -0400 Received: from mail-we0-f169.google.com ([74.125.82.169]:43571 "EHLO mail-we0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750961AbaFSMpO (ORCPT ); Thu, 19 Jun 2014 08:45:14 -0400 Date: Thu, 19 Jun 2014 14:45:07 +0200 From: Konrad Zapalowicz To: Daniel Vetter Cc: "Nikula, Jani" , Dave Airlie , intel-gfx , dri-devel , Linux Kernel Mailing List Subject: Re: [PATCH] drivers/i915: Fix unnoticed failure of init_ring_common() Message-ID: <20140619124507.GA12390@t400> References: <1403131134-9533-1-git-send-email-bergo.torino@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/19, Daniel Vetter wrote: > On Thu, Jun 19, 2014 at 12:38 AM, Konrad Zapalowicz > wrote: > > This commit add check for return value of init_ring_common() in the > > init_render_ring(). Now, when failure is detected the error code is > > propagated to the caller layer instead of being ignored. > > > > I believe that this fix will have a positive impact on the oops that > > I hit recently and which starts when init_ring_common() fails: > > > > [drm:init_ring_common] *ERROR* render ring initialization failed > > ctl 0001f001 head 0000000c tail 00000000 start 003eb000 > > BUG: unable to handle kernel NULL pointer dereference at 0000006c > > IP: [] i915_gem_obj_to_ggtt+0x9/0x40 [i915] > > > > Signed-off-by: Konrad Zapalowicz > > Do you have the full Oops somewhere? Here you go, the Oops plus some usefull data: 1. Oops 2. lspci -vv 3. uname -a 4. Oops analysis 1. The Oops: Jun 17 21:06:11 t400 kernel: [ 12.136049] [drm:init_ring_common] *ERROR* render ring initialization failed ctl 0001f001 head 0000000c tail 00000000 start 003eb000 Jun 17 21:06:11 t400 kernel: [ 12.136081] BUG: unable to handle kernel NULL pointer dereference at 0000006c Jun 17 21:06:11 t400 kernel: [ 12.136086] IP: [] i915_gem_obj_to_ggtt+0x9/0x40 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136118] *pdpt = 0000000033158001 *pde = 0000000000000000 Jun 17 21:06:11 t400 kernel: [ 12.136123] Oops: 0000 [#1] SMP Jun 17 21:06:11 t400 kernel: [ 12.136127] Modules linked in: mac80211(E) i915(E+) snd_hda_codec_conexant(E) snd_hda_codec_generic(E) snd_hda_intel(E) snd_hda_controller(E) intel_gtt(E) snd_hda_codec(E) iwlwifi(E) i2c_algo_bit(E) snd_hwdep(E) uvcvideo(E) thinkpad_acpi(E) drm_kms_helper(E) snd_pcm(E) pcmcia(E) nvram(E) videobuf2_vmalloc(E) videobuf2_memops(E) videobuf2_core(E) drm(E) psmouse(E) videodev(E) snd_seq_midi(E) snd_seq_midi_event(E) snd_rawmidi(E) snd_seq(E) cfg80211(E) yenta_socket(E) snd_timer(E) pcmcia_rsrc(E) serio_raw(E) snd_seq_device(E) pcmcia_core(E) snd(E) pl2303(E) lpc_ich(E) ppdev(E) usb_storage(E) soundcore(E) usbserial(E) wmi(E) video(E) tpm_tis(E) parport_pc(E) lp(E) parport(E) firewire_ohci(E) firewire_core(E) crc_itu_t(E) ahci(E) libahci(E) e1000e(E) ptp(E) pps_core(E) Jun 17 21:06:11 t400 kernel: [ 12.136187] CPU: 1 PID: 570 Comm: modprobe Tainted: G E 3.15.0 #6 Jun 17 21:06:11 t400 kernel: [ 12.136191] Hardware name: LENOVO 6475FA4/6475FA4, BIOS 7UET79WW (3.09 ) 10/13/2009 Jun 17 21:06:11 t400 kernel: [ 12.136195] task: f3141b60 ti: f316a000 task.ti: f316a000 Jun 17 21:06:11 t400 kernel: [ 12.136199] EIP: 0060:[] EFLAGS: 00010282 CPU: 1 Jun 17 21:06:11 t400 kernel: [ 12.136223] EIP is at i915_gem_obj_to_ggtt+0x9/0x40 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136227] EAX: 00000000 EBX: 00000004 ECX: f2e6c000 EDX: fffffffb Jun 17 21:06:11 t400 kernel: [ 12.136230] ESI: f2e6d174 EDI: 00000000 EBP: f316bb50 ESP: f316bb4c Jun 17 21:06:11 t400 kernel: [ 12.136234] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 Jun 17 21:06:11 t400 kernel: [ 12.136239] CR0: 8005003b CR2: 0000006c CR3: 33157000 CR4: 000407f0 Jun 17 21:06:11 t400 kernel: [ 12.136243] Stack: Jun 17 21:06:11 t400 kernel: [ 12.136245] 00000004 f316bb68 f8ca16c5 f316bb80 00000004 f2e6d174 f2e794c0 f316bb80 Jun 17 21:06:11 t400 kernel: [ 12.136254] f8c9473e f2e6c000 f2e6c000 f32e5800 fffffffb f316bba0 f8c9ea49 00000000 Jun 17 21:06:11 t400 kernel: [ 12.136263] 00000000 f32e5838 f32e5800 00000000 f2e6c000 f316bca4 f8cf63a4 f8cf3c70 Jun 17 21:06:11 t400 kernel: [ 12.136271] Call Trace: Jun 17 21:06:11 t400 kernel: [ 12.136297] [] i915_gem_object_ggtt_unpin+0x15/0x90 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136323] [] i915_gem_context_fini+0x7e/0x130 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136349] [] i915_gem_init+0x69/0x1a0 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136381] [] i915_driver_load+0xa54/0xe50 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136411] [] ? i915_dma_init+0x2e0/0x2e0 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136419] [] ? kobject_uevent_env+0xfa/0x510 Jun 17 21:06:11 t400 kernel: [ 12.136424] [] ? kobject_uevent_env+0xfa/0x510 Jun 17 21:06:11 t400 kernel: [ 12.136429] [] ? add_uevent_var+0xd0/0xd0 Jun 17 21:06:11 t400 kernel: [ 12.136435] [] ? get_device+0x14/0x30 Jun 17 21:06:11 t400 kernel: [ 12.136440] [] ? klist_class_dev_get+0x12/0x20 Jun 17 21:06:11 t400 kernel: [ 12.136447] [] ? klist_node_init+0x35/0x50 Jun 17 21:06:11 t400 kernel: [ 12.136452] [] ? klist_add_tail+0x20/0x50 Jun 17 21:06:11 t400 kernel: [ 12.136457] [] ? put_device+0x14/0x20 Jun 17 21:06:11 t400 kernel: [ 12.136462] [] ? device_add+0x167/0x530 Jun 17 21:06:11 t400 kernel: [ 12.136468] [] ? kobject_set_name_vargs+0x42/0x60 Jun 17 21:06:11 t400 kernel: [ 12.136485] [] drm_dev_register+0x9e/0xf0 [drm] Jun 17 21:06:11 t400 kernel: [ 12.136499] [] drm_get_pci_dev+0x6f/0x1e0 [drm] Jun 17 21:06:11 t400 kernel: [ 12.136521] [] i915_pci_probe+0x35/0x60 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136528] [] pci_device_probe+0x79/0xc0 Jun 17 21:06:11 t400 kernel: [ 12.136534] [] ? sysfs_create_link+0x25/0x40 Jun 17 21:06:11 t400 kernel: [ 12.136540] [] driver_probe_device+0x64/0x200 Jun 17 21:06:11 t400 kernel: [ 12.136545] [] ? pci_match_device+0x9e/0xb0 Jun 17 21:06:11 t400 kernel: [ 12.136550] [] __driver_attach+0x91/0xa0 Jun 17 21:06:11 t400 kernel: [ 12.136555] [] ? driver_probe_device+0x200/0x200 Jun 17 21:06:11 t400 kernel: [ 12.136559] [] bus_for_each_dev+0x42/0x80 Jun 17 21:06:11 t400 kernel: [ 12.136564] [] driver_attach+0x1e/0x20 Jun 17 21:06:11 t400 kernel: [ 12.136569] [] ? driver_probe_device+0x200/0x200 Jun 17 21:06:11 t400 kernel: [ 12.136575] [] bus_add_driver+0xd4/0x1d0 Jun 17 21:06:11 t400 kernel: [ 12.136580] [] driver_register+0x59/0xe0 Jun 17 21:06:11 t400 kernel: [ 12.136585] [] __pci_register_driver+0x33/0x40 Jun 17 21:06:11 t400 kernel: [ 12.136590] [] ? 0xf8b7bfff Jun 17 21:06:11 t400 kernel: [ 12.136603] [] drm_pci_init+0xed/0x110 [drm] Jun 17 21:06:11 t400 kernel: [ 12.136609] [] ? 0xf8b7bfff Jun 17 21:06:11 t400 kernel: [ 12.136630] [] i915_init+0x62/0x64 [i915] Jun 17 21:06:11 t400 kernel: [ 12.136636] [] do_one_initcall+0xda/0x120 Jun 17 21:06:11 t400 kernel: [ 12.136641] [] ? 0xf8b7bfff Jun 17 21:06:11 t400 kernel: [ 12.136646] [] ? set_memory_nx+0x5f/0x70 Jun 17 21:06:11 t400 kernel: [ 12.136653] [] ? set_section_ro_nx+0x54/0x59 Jun 17 21:06:11 t400 kernel: [ 12.136659] [] load_module+0x1adb/0x21b0 Jun 17 21:06:11 t400 kernel: [ 12.136667] [] ? error_code+0x5a/0x60 Jun 17 21:06:11 t400 kernel: [ 12.136672] [] SyS_init_module+0x83/0xb0 Jun 17 21:06:11 t400 kernel: [ 12.136680] [] sysenter_do_call+0x12/0x22 Jun 17 21:06:11 t400 kernel: [ 12.136684] Code: f8 e8 ec de 39 c8 e9 36 ff ff ff 66 ba 6d 09 b8 e0 8c d0 f8 e8 d9 de 39 c8 e9 ff fe ff ff 8d 74 26 00 55 89 e5 53 66 66 66 66 90 <8b> 50 6c 8d 48 6c 39 ca 74 1a 8b 40 08 8d 4a cc 8b 58 1c 31 c0 Jun 17 21:06:11 t400 kernel: [ 12.136725] EIP: [] i915_gem_obj_to_ggtt+0x9/0x40 [i915] SS:ESP 0068:f316bb4c Jun 17 21:06:11 t400 kernel: [ 12.136752] CR2: 000000000000006c Jun 17 21:06:11 t400 kernel: [ 12.136757] ---[ end trace 3fff41670168a98f ]--- 2. lspci -vv 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- SERR- 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- SERR- [disabled] Capabilities: 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- SERR- 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- SERR- 00:03.3 Serial controller: Intel Corporation Mobile 4 Series Chipset AMT SOL Redirection (rev 07) (prog-if 02 [16550]) Subsystem: Lenovo Device 20ec Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR- Kernel driver in use: serial 00:19.0 Ethernet controller: Intel Corporation 82567LM 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- SERR- 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- SERR- 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- SERR- 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- SERR- 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- SERR- Kernel driver in use: ehci-pci 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- SERR- Kernel driver in use: snd_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- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: 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- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: Kernel driver in use: pcieport 00:1c.2 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 3 (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- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: Kernel driver in use: pcieport 00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (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- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: 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- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: 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- SERR- 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- SERR- 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- SERR- 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- SERR- Kernel driver in use: ehci-pci 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- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: 00:1f.0 ISA bridge: Intel Corporation ICH9M-E LPC Interface Controller (rev 03) Subsystem: Lenovo Device 20f5 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR- Kernel driver in use: lpc_ich 00:1f.2 SATA controller: Intel Corporation 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] (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- SERR- 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- SERR- TAbort- SERR- Kernel driver in use: iwlwifi 04:00.0 Memory controller: Intel Corporation Turbo Memory Controller (rev 11) Subsystem: Intel Corporation Device 4443 Physical Slot: 2 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- 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- SERR- Reset- 16bInt+ PostWrite+ 16-bit legacy interface ports at 0001 Kernel driver in use: yenta_cardbus 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- SERR- Kernel driver in use: firewire_ohci 3. uname Linux t400 3.15.0 #6 SMP Sat Jun 14 21:07:35 CEST 2014 i686 i686 i686 GNU/Linux 4. Oops analysis I have spent some time tracing down the source of the Oops. It turned out that the failure is caused in list_empty() function which is used by the i915_gem_obj_to_ggtt() function. The decoded code shows: Code starting with the faulting instruction =========================================== 0: 8b 50 6c mov 0x6c(%eax),%edx <--- trapping 3: 8d 48 6c lea 0x6c(%eax),%ecx 6: 39 ca cmp %ecx,%edx 8: 74 1a je 0x24 a: 8b 40 08 mov 0x8(%eax),%eax d: 8d 4a cc lea -0x34(%edx),%ecx 10: 8b 58 1c mov 0x1c(%eax),%ebx 13: 31 c0 xor %eax,%eax Now the 0x6c offset corresponds to the vma_list member of struct drm_i915_gem_object. (gdb) print &((struct drm_i915_gem_object *)0)->vma_list $1 = (struct list_head *) 0x6c So the Oops is because the vma_list has not been initialized. I suspect, although not 100% sure, that the ringbuffer error has something to do with it. /Konrad > > --- > > drivers/gpu/drm/i915/intel_ringbuffer.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c > > index 279488a..d205b0d 100644 > > --- a/drivers/gpu/drm/i915/intel_ringbuffer.c > > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c > > @@ -604,6 +604,8 @@ static int init_render_ring(struct intel_engine_cs *ring) > > struct drm_device *dev = ring->dev; > > struct drm_i915_private *dev_priv = dev->dev_private; > > int ret = init_ring_common(ring); > > + if (ret) > > + return ret; > > Yeah, on gen5+ this looks needed. > -Daniel > > > > > /* WaTimedSingleVertexDispatch:cl,bw,ctg,elk,ilk,snb */ > > if (INTEL_INFO(dev)->gen >= 4 && INTEL_INFO(dev)->gen < 7) > > -- > > 1.8.1.2 > > > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch -- 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/