twx-linux/drivers/gpu/drm
Imre Deak 59d02a1f45 drm/i915: fix HW lockup due to missing RPS IRQ workaround on GEN6
In

commit dbea3cea69508e9d548ed4a6be13de35492e5d15
Author: Imre Deak <imre.deak@intel.com>
Date:   Mon Dec 15 18:59:28 2014 +0200

    drm/i915: sanitize RPS resetting during GPU reset

we disable RPS interrupts during GPU resetting, but don't apply the
necessary GEN6 HW workaround. This leads to a HW lockup during a
subsequent "looping batchbuffer" workload. This is triggered by the
testcase that submits exactly this kind of workload after a simulated
GPU reset. I'm not sure how likely the bug would have triggered
otherwise, since we would have applied the workaround anyway shortly
after the GPU reset, when enabling GT powersaving from the deferred
work.

This may also fix unrelated issues, since during driver loading /
suspending we also disable RPS interrupts and so we also had a short
window during the rest of the loading / resuming where a similar
workload could run without the workaround applied.

v2:
- separate the fix to route RPS interrupts to the CPU on GEN9 too
  to a separate patch (Daniel)

Bisected-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Testcase: igt/gem_reset_stats/ban-ctx-render
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87429
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-01-12 10:52:41 +02:00
..
amd drm/amdkfd: rewrite kfd_ioctl() according to drm_ioctl() 2015-01-06 19:44:36 +02:00
armada Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
ast
bochs bochs: add page_flip 2014-11-20 11:27:31 +10:00
bridge
cirrus drm/cirrus: allow 32bpp framebuffers for cirrus drm 2014-11-20 11:42:46 +10:00
exynos Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
gma500 drm/gma500: add support for atom e6xx lpc lvds i2c 2014-12-02 13:42:49 +10:00
i2c drm: Add adv7511 encoder driver 2014-11-26 20:09:40 +02:00
i810
i915 drm/i915: fix HW lockup due to missing RPS IRQ workaround on GEN6 2015-01-12 10:52:41 +02:00
imx Staging patches for 3.19-rc1 2014-12-15 18:06:13 -08:00
mga
mgag200
msm Merge branch 'msm-fixes-3.19' of git://people.freedesktop.org/~robclark/linux into drm-fixes 2014-12-23 08:21:54 +10:00
nouveau Merge branch 'linux-3.19' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes 2015-01-08 10:19:24 +10:00
omapdrm Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
panel Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
qxl drm/ttm: optionally move duplicates to a separate list 2014-12-03 18:26:52 -05:00
r128 drm: remove unnecessary sizeof(u8) 2014-11-20 11:30:37 +10:00
radeon Merge tag 'amdkfd-fixes-2015-01-06' of git://people.freedesktop.org/~gabbayo/linux into drm-fixes 2015-01-08 10:36:37 +10:00
rcar-du Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
rockchip drm: rockchip: Add basic drm driver 2014-12-02 17:29:03 +08:00
savage
shmobile Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
sis
sti Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
tdfx
tegra drm/tegra: dc: Select root window for event dispatch 2014-12-17 14:27:39 +01:00
tilcdc Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
ttm drm/ttm: optionally move duplicates to a separate list 2014-12-03 18:26:52 -05:00
udl drm/udl: properly check for error pointers 2014-11-26 10:03:18 +10:00
via
vmwgfx drm/ttm: optionally move duplicates to a separate list 2014-12-03 18:26:52 -05:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm/atomic: fix potential null ptr on plane enable 2014-12-17 18:39:57 +01:00
drm_atomic.c drm/atomic: track bitmask of planes attached to crtc 2014-11-27 15:38:15 +01:00
drm_auth.c
drm_bufs.c
drm_cache.c
drm_context.c
drm_crtc_helper.c
drm_crtc_internal.h
drm_crtc.c Merge tag 'topic/core-stuff-2014-12-10' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-12-11 10:12:57 +10:00
drm_debugfs.c
drm_dma.c
drm_dp_helper.c drm/dp: retry AUX transactions 32 times (v1.1) 2014-12-09 09:56:44 +10:00
drm_dp_mst_topology.c drm/tile: expose the tile property to userspace (v3) 2014-12-09 09:56:48 +10:00
drm_drv.c drm: Document that drm_dev_alloc doesn't need a parent 2014-11-25 13:12:42 +01:00
drm_edid_load.c drm/edid: Deletion of an unnecessary check before the function call "release_firmware" 2014-11-21 12:16:27 +10:00
drm_edid.c Merge tag 'topic/core-stuff-2014-12-10' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-12-11 10:12:57 +10:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm/fb: add support for tiled monitor configurations. (v2) 2014-12-09 09:56:49 +10:00
drm_flip_work.c drm: flip-work: change drm_flip_work_init prototype 2014-11-15 09:29:14 +10:00
drm_fops.c drm: Fix memory leak at error path of drm_read() 2014-12-04 13:28:42 +01:00
drm_gem_cma_helper.c
drm_gem.c drm: Sanitize DRM_IOCTL_MODE_CREATE_DUMB input 2014-11-15 09:50:21 +10:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c drm/irq: Add drm_crtc_vblank_count() 2014-12-17 14:27:35 +01:00
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_modes.c
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_pci.c
drm_plane_helper.c drm/plane: Pass old state to ->atomic_update() 2014-11-25 13:27:58 +01:00
drm_platform.c
drm_prime.c drm: Miscellaneous fixes for v3.19-rc1 2014-11-15 09:37:20 +10:00
drm_probe_helper.c
drm_rect.c
drm_scatter.c
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vm.c
drm_vma_manager.c
Kconfig Merge branch 'drm_iommu_v15' of https://github.com/markyzq/kernel-drm-rockchip into drm-next 2014-12-08 13:45:18 +10:00
Makefile drm: Put amdkfd before radeon in drm Makefile 2014-12-21 15:21:41 +02:00