linux_dsm_epyc7002/drivers/gpu/drm
Chris Wilson 7fb71c8f4f drm/i915: Handle early failure during intel_get_load_detect_pipe
In the error path, we have to be ready to handle an error before either
the state or restore_state have been allocated.

[  397.001342] BUG: unable to handle kernel NULL pointer dereference at           (null)
[  397.001419] IP: [<ffffffffa04347b4>] intel_get_load_detect_pipe+0xe4/0x610 [i915]
[  397.001502] PGD 136a2a067
[  397.001523] PUD 134b5f067
[  397.001546] PMD 0

[  397.001569] Oops: 0002 [#1] PREEMPT SMP
[  397.001599] Modules linked in: snd_hda_intel i915 cdc_ncm usbnet mii x86_pkg_temp_thermal intel_powerclamp coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_codec snd_hwdep snd_hda_core snd_pcm lpc_ich mei_me mei sdhci_pci sdhci mmc_core e1000e ptp pps_core [last unloaded: i915]
[  397.001902] CPU: 1 PID: 9287 Comm: kms_force_conne Tainted: G     U          4.9.0-rc1-CI-CI_DRM_1730+ #1
[  397.001965] Hardware name: LENOVO 2356GCG/2356GCG, BIOS G7ET31WW (1.13 ) 07/02/2012
[  397.002017] task: ffff880138c38040 task.stack: ffffc900083e4000
[  397.002057] RIP: 0010:[<ffffffffa04347b4>]  [<ffffffffa04347b4>] intel_get_load_detect_pipe+0xe4/0x610 [i915]
[  397.002153] RSP: 0018:ffffc900083e7ae8  EFLAGS: 00010286
[  397.002191] RAX: 00000000ffffffdd RBX: ffffc900083e7bc8 RCX: 0000000000000006
[  397.002239] RDX: 0000000000000006 RSI: ffff880138c388b8 RDI: ffffc900083e79e0
[  397.002287] RBP: ffffc900083e7b78 R08: 0000000000000000 R09: 0000000000000000
[  397.002335] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
[  397.002386] R13: ffff8801305e1158 R14: 00000000ffffffdd R15: 0000000000000000
[  397.002434] FS:  00007fea1b03c740(0000) GS:ffff88013e240000(0000) knlGS:0000000000000000
[  397.002488] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  397.002528] CR2: 0000000000000000 CR3: 00000001361da000 CR4: 00000000001406e0
[  397.002576] Stack:
[  397.002592]  ffff88013046f180 0000000000000000 ffffc900083e7bc0 0000000000000000
[  397.002655]  0000000000000000 ffff8801306bd038 ffff88012e980000 ffffc90000000001
[  397.002718]  ffffc90000000000 ffff880136b8ca88 ffff88012e980890 ffff88012e980540
[  397.002780] Call Trace:
[  397.002828]  [<ffffffffa044e8c4>] intel_crt_detect+0x3c4/0x8f0 [i915]
[  397.002876]  [<ffffffff810e37fa>] ? vprintk_default+0x1a/0x20
[  397.002918]  [<ffffffff8116eb68>] ? printk+0x43/0x4b
[  397.002956]  [<ffffffff81546b06>] drm_helper_probe_single_connector_modes+0x406/0x4f0
[  397.003014]  [<ffffffff81819c09>] ? mutex_unlock+0x9/0x10
[  397.003054]  [<ffffffff815723dc>] drm_mode_getconnector+0x33c/0x3c0
[  397.003099]  [<ffffffff810ed59d>] ? debug_lockdep_rcu_enabled+0x1d/0x20
[  397.003147]  [<ffffffff811a6bae>] ? __might_fault+0x3e/0x90
[  397.003191]  [<ffffffff8155aaf6>] drm_ioctl+0x1f6/0x480
[  397.003231]  [<ffffffff815720a0>] ? drm_mode_connector_property_set_ioctl+0x30/0x30
[  397.003285]  [<ffffffff8120308e>] do_vfs_ioctl+0x8e/0x690
[  397.003324]  [<ffffffff810a102c>] ? task_work_run+0x8c/0xb0
[  397.003366]  [<ffffffff810d6d92>] ? trace_hardirqs_on_caller+0x122/0x1b0
[  397.003412]  [<ffffffff812036cc>] SyS_ioctl+0x3c/0x70
[  397.003451]  [<ffffffff8181df2e>] entry_SYSCALL_64_fastpath+0x1c/0xb1
[  397.003496] Code: 85 c0 41 89 c6 75 57 49 8b 85 f0 00 00 00 48 89 de 45 31 ff 48 8d 78 20 e8 1a 89 13 e1 45 31 c9 85 c0 41 89 c6 0f 84 2f 01 00 00 <f0> 41 83 29 01 74 53 f0 41 83 2f 01 74 2d 41 83 fe dd 75 35 48
[  397.003837] RIP  [<ffffffffa04347b4>] intel_get_load_detect_pipe+0xe4/0x610 [i915]
[  397.003921]  RSP <ffffc900083e7ae8>
[  397.003947] CR2: 0000000000000000

Testcase: igt/kms_force_connector_basic/force-load-detect # ivb-3720m
Fixes: 0853695c3b ("drm: Add reference counting to drm_atomic_state"
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20161019113743.19847-1-chris@chris-wilson.co.uk
2016-10-20 09:05:34 +02:00
..
amd drm: amdgpu: Replace drm_fb_get_bpp_depth() with drm_format_plane_cpp() 2016-10-18 15:22:49 +05:30
arc drm: Don't swallow error codes in drm_dev_alloc() 2016-09-22 04:03:48 -07:00
arm drm/arm: mali-dp: Replace drm_fb_get_bpp_depth() with drm_format_plane_cpp() 2016-10-18 15:23:59 +05:30
armada drm/prime: Take a ref on the drm_dev when exporting a dma_buf 2016-10-05 15:30:32 +02:00
ast
atmel-hlcdc drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
bochs bugfixes for qemu (bochs, qxl and virtio-gpu) drm drivers 2016-09-28 13:23:07 +10:00
bridge drm/bridge: Drop drm_connector_unregister and call drm_connector_cleanup directly 2016-10-10 11:19:42 +02:00
cirrus drm: cirrus: Replace drm_fb_get_bpp_depth() with drm_format_plane_cpp() 2016-10-18 15:22:06 +05:30
etnaviv drm/etnaviv: Remove manual call to reservation_object_test_signaled_rcu before wait 2016-10-12 19:44:48 +05:30
exynos drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
fsl-dcu Merge tag 'topic/drm-misc-2016-09-25' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-09-28 10:28:23 +10:00
gma500 drm: gma500: Replace drm_fb_get_bpp_depth() with drm_format_info() 2016-10-18 15:22:38 +05:30
hisilicon drm: Don't swallow error codes in drm_dev_alloc() 2016-09-22 04:03:48 -07:00
i2c Revert "drm/i2c: tda998x: don't register the connector" 2016-09-23 03:29:50 -07:00
i810
i915 drm/i915: Handle early failure during intel_get_load_detect_pipe 2016-10-20 09:05:34 +02:00
imx Linux 4.8-rc8 2016-09-28 12:08:49 +10:00
mediatek drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
mga
mgag200
msm drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
nouveau drm/nouveau: Remove call to reservation_object_test_signaled_rcu before wait 2016-10-12 19:46:58 +05:30
omapdrm drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
panel
qxl bugfixes for qemu (bochs, qxl and virtio-gpu) drm drivers 2016-09-28 13:23:07 +10:00
r128
radeon drm: radeon: Replace drm_fb_get_bpp_depth() with drm_format_plane_cpp() 2016-10-18 15:23:44 +05:30
rcar-du drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
rockchip gpu: Remove depends on RESET_CONTROLLER when not a provider 2016-10-19 09:26:15 +02:00
savage drm/savage: dereferencing an error pointer 2016-10-13 07:56:14 +02:00
shmobile
sis
sti drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
sun4i Allwinner sun4i DRM fixes for 4.9 2016-09-28 11:23:15 +10:00
tdfx
tegra gpu: Remove depends on RESET_CONTROLLER when not a provider 2016-10-19 09:26:15 +02:00
tilcdc drm: tilcdc: Replace drm_fb_get_bpp_depth() with drm_format_plane_cpp() 2016-10-18 15:21:57 +05:30
ttm
udl drm/prime: Take a ref on the drm_dev when exporting a dma_buf 2016-10-05 15:30:32 +02:00
vc4 drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
vgem drm: Don't swallow error codes in drm_dev_alloc() 2016-09-22 04:03:48 -07:00
via
virtio drm: virtio: reinstate drm_virtio_set_busid() 2016-10-04 13:10:30 +10:00
vmwgfx drm: vmwgfx: Replace drm_fb_get_bpp_depth() with drm_format_info() 2016-10-18 15:23:53 +05:30
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
drm_atomic.c drm: Add reference counting to drm_atomic_state 2016-10-17 08:19:57 +02:00
drm_auth.c
drm_blend.c drm/doc: Polish plane composition property docs 2016-09-22 00:04:02 -07:00
drm_bridge.c
drm_bufs.c
drm_cache.c
drm_color_mgmt.c drm/doc: Document color space handling 2016-09-22 00:04:03 -07:00
drm_connector.c drm: Release resources with a safer function 2016-10-10 11:20:48 +02:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h drm: Extract drm_color_mgmt.[hc] 2016-09-22 00:04:02 -07:00
drm_crtc.c drm: Add API for capturing frame CRCs 2016-10-17 16:44:34 +02:00
drm_debugfs_crc.c drm: fix sparse warnings on undeclared symbols in crc debugfs 2016-10-19 14:10:29 +03:00
drm_debugfs.c drm: Add API for capturing frame CRCs 2016-10-17 16:44:34 +02:00
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c Merge tag 'topic/drm-misc-2016-09-25' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-09-28 10:28:23 +10:00
drm_dp_mst_topology.c
drm_drv.c drm: Simplify drm_printk to reduce object size quite a bit 2016-10-04 08:23:14 +02:00
drm_edid_load.c
drm_edid.c drm/edid: Use block local to refer to the block 2016-10-17 14:28:06 +02:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c drm/fb_cma_helper: do not free fbdev if there is none 2016-10-20 09:05:34 +02:00
drm_fb_helper.c drm/fb-helper: reject any changes to the fbdev 2016-10-17 16:42:41 +02:00
drm_flip_work.c
drm_fops.c
drm_fourcc.c drm: Don't export the drm_fb_get_bpp_depth() function 2016-10-18 15:24:08 +05:30
drm_framebuffer.c drm: WARN when calling drm_format_info() for an unsupported format 2016-10-18 15:21:38 +05:30
drm_gem_cma_helper.c
drm_gem.c
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h drm: Add API for capturing frame CRCs 2016-10-17 16:44:34 +02:00
drm_ioc32.c
drm_ioctl.c
drm_irq.c drm: avoid uninitialized timestamp use in wait_vblank 2016-10-18 09:45:17 +02:00
drm_kms_helper_common.c
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_mode_object.c
drm_modes.c drm: Add and handle new aspect ratios in DRM layer 2016-10-17 14:23:58 +02:00
drm_modeset_helper.c drm: Don't export the drm_fb_get_bpp_depth() function 2016-10-18 15:24:08 +05:30
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_pci.c drm: Don't swallow error codes in drm_dev_alloc() 2016-09-22 04:03:48 -07:00
drm_plane_helper.c
drm_plane.c drm: Undo damage to page_flip_ioctl 2016-10-04 12:53:12 +10:00
drm_platform.c drm: Don't swallow error codes in drm_dev_alloc() 2016-09-22 04:03:48 -07:00
drm_prime.c drm: Fix up kerneldoc for new drm_gem_dmabuf_export() 2016-10-10 11:19:42 +02:00
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_scatter.c
drm_simple_kms_helper.c drm: simple_kms_helper: Add prepare_fb and cleanup_fb hooks 2016-10-05 15:18:02 +02:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vm.c
drm_vma_manager.c
Kconfig
Makefile drm: Add API for capturing frame CRCs 2016-10-17 16:44:34 +02:00