[drm/i915/3.17] panic in i915_digport_work_func

From: Mike Galbraith
Date: Sat Aug 30 2014 - 03:03:31 EST


Greetings,

My little Toshiba lappy is exploding non-deterministically during boot
with master (<= 3.16 work fine). I tried to bisect it, but apparently
didn't do quite enough reboots before saying 'good', so ended up...

first bad commit: [5fa9be63a42bd4336448d27cbd1f3b993744dd88]
Merge branch 'msm-fixes-3.17' of git://people.freedesktop.org/~robclark/linux into drm-fixes

...touring bisect lala land. Setting up netconsole, I now have a
picture of the little bugger at least.

[ 4.881500] [drm] Replacing VGA console driver
[ 4.889652] checking generic (d0000000 7ff0000) vs hw (d0000000 10000000)
[ 4.897930] fb: switching to inteldrmfb from VESA VGA
[ 4.906132] Console: switching to colour dummy device 80x25
[ 4.906138] usb 7-1: new full-speed USB device number 2 using uhci_hcd
[ 4.928120] i915 0000:00:02.0: irq 29 for MSI/MSI-X
[ 4.928156] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 4.928164] [drm] Driver supports precise vblank timestamp query.
[ 4.928269] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 5.017563] BUG: unable to handle kernel paging request at ffffc900108c4000
[ 5.017586] IP: [<ffffffffa018704d>] gen4_read32+0x3d/0xc0 [i915]
[ 5.017649] PGD 13f021067 PUD 13f022067 PMD 1361be067 PTE 0
[ 5.017667] Oops: 0000 [#1] SMP
[ 5.017678] Modules linked in: i915(+) drm_kms_helper drm i2c_algo_bit processor video thermal thermal_sys button scsi_dh_rdac scsi_dh_alua scsi_dh_emc scsi_dh_hp_sw scsi_dh netconsole atl1c
[ 5.017735] CPU: 0 PID: 54 Comm: kworker/u4:5 Not tainted 3.17.0-master #210
[ 5.017743] Hardware name: TOSHIBA SATELLITE T130/SATELLITE T130, BIOS V1.70 09/29/2009
[ 5.017788] Workqueue: i915-dp i915_digport_work_func [i915]
[ 5.017798] task: ffff8801360de350 ti: ffff8801360e0000 task.ti: ffff8801360e0000
[ 5.017805] RIP: 0010:[<ffffffffa018704d>] [<ffffffffa018704d>] gen4_read32+0x3d/0xc0 [i915]
[ 5.017857] RSP: 0018:ffff8801360e3d48 EFLAGS: 00010086
[ 5.017863] RAX: 0000000000000297 RBX: ffff880037290000 RCX: 00000000000000da
[ 5.017870] RDX: ffffc900108c4000 RSI: ffff8800372993c8 RDI: ffff880037290068
[ 5.017877] RBP: ffff8801360e3d70 R08: 0000000000000001 R09: a000000000000000
[ 5.017883] R10: dffeab59e7299400 R11: 00000000fffedfee R12: 00000000000c4000
[ 5.017890] R13: ffff880037290068 R14: 0000000000000001 R15: 0000000000000001
[ 5.017897] FS: 0000000000000000(0000) GS:ffff88013fc00000(0000) knlGS:0000000000000000
[ 5.017906] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 5.017912] CR2: ffffc900108c4000 CR3: 0000000001a15000 CR4: 00000000000407f0
[ 5.017918] Stack:
[ 5.017923] 0000000000800000 0000000000000011 ffff880037067000 0000000000000001
[ 5.017939] ffff880037dcb000 ffff8801360e3d88 ffffffffa01975c3 ffff880037290000
[ 5.017955] ffff8801360e3dc8 ffffffffa01bd883 ffff880037dcb0e0 ffff880037299400
[ 5.017970] Call Trace:
[ 5.018020] [<ffffffffa01975c3>] ibx_digital_port_connected+0x63/0xb0 [i915]
[ 5.018071] [<ffffffffa01bd883>] intel_dp_hpd_pulse+0xc3/0x1f0 [i915]
[ 5.018115] [<ffffffffa0175b0d>] i915_digport_work_func+0x9d/0x120 [i915]
[ 5.018128] [<ffffffff81060b26>] process_one_work+0x186/0x3f0
[ 5.018136] [<ffffffff81060eb1>] worker_thread+0x121/0x480
[ 5.018145] [<ffffffff81060d90>] ? process_one_work+0x3f0/0x3f0
[ 5.018154] [<ffffffff81065689>] kthread+0xc9/0xe0
[ 5.018163] [<ffffffff810655c0>] ? kthread_create_on_node+0x170/0x170
[ 5.018173] [<ffffffff8157edac>] ret_from_fork+0x7c/0xb0
[ 5.018182] [<ffffffff810655c0>] ? kthread_create_on_node+0x170/0x170
[ 5.018188] Code: 41 54 49 89 f4 53 48 8d b7 c8 93 00 00 48 89 fb 48 8b 3f 4c 8d 6b 68 e8 f2 f1 ff ff 4c 89 ef e8 3a 79 3f e1 4c 89 e2 48 03 53 60 <44> 8b 32 48 89 c6 4c 89 ef e8 95 75 3f e1 8b 05 c7 0f 08 00 85
[ 5.018329] RIP [<ffffffffa018704d>] gen4_read32+0x3d/0xc0 [i915]
[ 5.018377] RSP <ffff8801360e3d48>
[ 5.018383] CR2: ffffc900108c4000
[ 5.018390] ---[ end trace d3d1a2cea94fa73a ]---
[ 5.018397] Kernel panic - not syncing: Fatal exception
[ 5.018422] Kernel Offset: 0x0 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffff9fffffff)

crash> mod -s i915
MODULE NAME SIZE OBJECT FILE
ffffffffa01d7760 i915 935705 /lib/modules/3.17.0-master/kernel/drivers/gpu/drm/i915/i915.ko
crash> gdb list *gen4_read32+0x3d
0xffffffffa015604d is in gen4_read32 (./arch/x86/include/asm/io.h:56).
51 { asm volatile("mov" size " %0,%1": :reg (val), \
52 "m" (*(volatile type __force *)addr) barrier); }
53
54 build_mmio_read(readb, "b", unsigned char, "=q", :"memory")
55 build_mmio_read(readw, "w", unsigned short, "=r", :"memory")
56 build_mmio_read(readl, "l", unsigned int, "=r", :"memory")
57
58 build_mmio_read(__readb, "b", unsigned char, "=q", )
59 build_mmio_read(__readw, "w", unsigned short, "=r", )
60 build_mmio_read(__readl, "l", unsigned int, "=r", )
0xffffffffa01665c3 is in ibx_digital_port_connected (drivers/gpu/drm/i915/intel_display.c:1044).
1039 default:
1040 return true;
1041 }
1042 }
1043
1044 return I915_READ(SDEISR) & bit;
1045 }
1046
1047 static const char *state_string(bool enabled)
1048 {
crash> gdb list *intel_dp_hpd_pulse+0xc3/0x1f0
0xffffffffa018c7c0 is in intel_dp_hpd_pulse (drivers/gpu/drm/i915/intel_dp.c:4051).
4046 return;
4047 }
4048
4049 bool
4050 intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
4051 {
4052 struct intel_dp *intel_dp = &intel_dig_port->dp;
4053 struct intel_encoder *intel_encoder = &intel_dig_port->base;
4054 struct drm_device *dev = intel_dig_port->base.base.dev;
4055 struct drm_i915_private *dev_priv = dev->dev_private;
crash> gdb list *i915_digport_work_func+0x9d
0xffffffffa0144b0d is in i915_digport_work_func (drivers/gpu/drm/i915/i915_irq.c:1125).
1120 } else if (short_port_mask & (1 << i))
1121 valid = true;
1122
1123 if (valid) {
1124 ret = intel_dig_port->hpd_pulse(intel_dig_port, long_hpd);
1125 if (ret == true) {
1126 /* if we get true fallback to old school hpd */
1127 old_bits |= (1 << intel_dig_port->base.hpd_pin);
1128 }
1129 }


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/