linux-stable/drivers/gpu/drm
Chris Wilson 01b8fdc522 drm/i915: Skip post-reset request emission if the engine is not idle
Since commit 7b6da818d8 ("drm/i915: Restore the kernel context after a
GPU reset on an idle engine") we submit a request following the engine
reset. The intent is that we don't submit a request if the engine is
busy (as it will restart active by itself) but we only checked to see if
there were remaining requests in flight on the hardware and skipped
checking to see if there were any ready requests that would be
immediately submitted on restart (the same time as our new request would
be). Having convinced the engine to appear idle in the previous patch,
we can use intel_engine_is_idle() as a better test to only submit a new
request if there are no pending requests.

As it happens, this is tripping up igt/drv_selftest/live_hangcheck in CI
as we overfill the kernel_context ringbuffer trigger an infinite
recursion from within the reset.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104786
References: 7b6da818d8 ("drm/i915: Restore the kernel context after a GPU reset on an idle engine")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Michel Thierry <michel.thierry@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180205152431.12163-4-chris@chris-wilson.co.uk
2018-02-05 15:27:26 +00:00
..
amd Merge branch 'drm-next-4.16' of git://people.freedesktop.org/~agd5f/linux into drm-next 2018-01-25 11:40:54 +10:00
arc drm/arc: Use drm_gem_cma_print_info() 2017-11-11 11:23:15 +01:00
arm drm/arm/mali: Use drm_fb_cma_fbdev_init/fini() 2017-12-08 14:47:43 +01:00
armada Merge branch 'drm-armada-devel-4.15' of git://git.armlinux.org.uk/~rmk/linux-arm into drm-next 2018-01-05 09:51:43 +10:00
ast drm/ttm: use an operation ctx for ttm_tt_populate in ttm_bo_driver (v2) 2017-12-28 09:48:19 -05:00
atmel-hlcdc drm/atmel-hlcdc: Use drm_fb_cma_fbdev_init/fini() 2017-12-08 14:47:39 +01:00
bochs drm/bochs: remove the default io_mem_pfn set 2017-12-27 11:34:51 -05:00
bridge Linux 4.15-rc4 2017-12-19 21:37:24 +10:00
cirrus drm/ttm: use an operation ctx for ttm_tt_populate in ttm_bo_driver (v2) 2017-12-28 09:48:19 -05:00
etnaviv drm/etnaviv: use memset32 to init pagetable 2018-01-02 17:36:53 +01:00
exynos drm/exynos: ipp: Remove Exynos DRM IPP subsystem 2018-01-02 08:41:22 +09:00
fsl-dcu drm/fsl-dcu: Use drm_mode_config_helper_suspend/resume() 2017-12-05 13:46:41 +01:00
gma500 drm/gma500: Use drm_fb_helper_lastclose() and _poll_changed() 2017-12-08 13:05:22 +01:00
hisilicon drm/ttm: use an operation ctx for ttm_tt_populate in ttm_bo_driver (v2) 2017-12-28 09:48:19 -05:00
i2c Merge tag 'drm-misc-next-2017-11-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2017-12-04 05:42:49 +10:00
i810
i915 drm/i915: Skip post-reset request emission if the engine is not idle 2018-02-05 15:27:26 +00:00
imx drm/imx: format modifier support 2018-01-05 11:33:24 +10:00
lib License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mediatek Merge tag 'drm-misc-next-2017-11-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2017-12-04 05:42:49 +10:00
meson drm/meson: Add missing VPU init 2017-12-08 10:43:46 +01:00
mga
mgag200 drm/ttm: use an operation ctx for ttm_tt_populate in ttm_bo_driver (v2) 2017-12-28 09:48:19 -05:00
msm Merge tag 'drm-msm-next-2018-01-10' of git://people.freedesktop.org/~robclark/linux into drm-next 2018-01-12 11:45:18 +10:00
mxsfb drm/mxsfb: Use drm_gem_fb_create() and drm_gem_fb_prepare_fb() 2017-10-01 17:02:20 +02:00
nouveau Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
omapdrm Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
panel drm/panel: lvds: Handle the optional regulator case properly 2018-01-15 10:16:56 +01:00
pl111 drm/pl111: Use drm_fb_cma_fbdev_init/fini() 2017-12-08 14:47:41 +01:00
qxl drm/ttm: use an operation ctx for ttm_tt_populate in ttm_bo_driver (v2) 2017-12-28 09:48:19 -05:00
r128 r128: switch compat ioctls to drm_ioctl_kernel() 2017-09-29 13:42:35 -04:00
radeon drm/radeon: fill in rb backend map on evergreen/ni. 2018-01-16 15:35:28 -05:00
rcar-du drm: rcar-du: Clip planes to screen boundaries 2017-12-04 18:38:31 +02:00
rockchip drm/rockchip: Use drm_fb_helper_lastclose() and _poll_changed() 2017-12-08 13:08:06 +01:00
savage
scheduler drm/scheduler: add license to the Makefile 2017-12-07 11:52:29 -05:00
selftests Merge tag 'drm-misc-next-2017-11-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2017-12-04 05:42:49 +10:00
shmobile main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
sis
sti drm/sti: Use drm_fb_cma_fbdev_init/fini() 2017-12-08 14:47:41 +01:00
stm drm/stm: ltdc: Remove unnecessary platform_get_resource() error check 2017-12-19 15:23:45 +01:00
sun4i Fixes for 4.16: 2018-01-25 11:42:25 +10:00
tdfx
tegra Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
tilcdc drm/tilcdc changes for 4.16 2017-12-21 11:10:20 +10:00
tinydrm drm/tinydrm: add driver for ST7735R panels 2018-01-03 13:54:24 +01:00
ttm Merge branch 'drm-next-4.16' of git://people.freedesktop.org/~agd5f/linux into drm-next 2018-01-25 11:40:54 +10:00
tve200 drm/tve200: Use drm_fb_cma_fbdev_init/fini() 2017-12-08 14:47:42 +01:00
udl Merge tag 'drm-misc-next-2017-10-20' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2017-10-24 16:51:05 +10:00
vc4 Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
vgem treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
via Merge tag 'drm-misc-next-2017-11-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2017-12-04 05:42:49 +10:00
virtio drm/ttm: use an operation ctx for ttm_tt_populate in ttm_bo_driver (v2) 2017-12-28 09:48:19 -05:00
vmwgfx Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
zte drm/zte: Use drm_fb_cma_fbdev_init/fini() 2017-12-08 14:47:43 +01:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c drm/atomic: document how to handle driver private objects 2017-12-15 11:26:54 +01:00
drm_atomic_helper.c Merge tag 'drm-misc-next-2017-11-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2017-12-04 05:42:49 +10:00
drm_auth.c drm: Check mode object lease status in all master ioctl paths [v4] 2017-10-25 16:31:30 +10:00
drm_blend.c drm/atomic-helper: Make zpos property kerneldoc less misleading 2017-12-14 14:20:35 +01:00
drm_bridge.c
drm_bufs.c
drm_cache.c
drm_color_mgmt.c drm: Pass struct drm_file * to __drm_mode_object_find [v2] 2017-10-12 10:03:04 +10:00
drm_connector.c Linux 4.15-rc4 2017-12-19 21:37:24 +10:00
drm_context.c
drm_crtc.c drm: Pass struct drm_file * to __drm_mode_object_find [v2] 2017-10-12 10:03:04 +10:00
drm_crtc_helper.c drm: Replace kzalloc with kcalloc 2017-10-13 15:49:03 -04:00
drm_crtc_helper_internal.h
drm_crtc_internal.h drm: rework delayed connector cleanup in connector_iter 2017-12-13 22:59:00 +01:00
drm_debugfs.c drm/debugfs: Fix framebuffer debugfs file init 2017-11-14 11:08:17 +02:00
drm_debugfs_crc.c
drm_dma.c
drm_dp_aux_dev.c Pass mode to wait_on_atomic_t() action funcs and provide default actions 2017-11-13 15:38:16 +00:00
drm_dp_dual_mode_helper.c drm: Add retries for lspcon mode detection 2017-10-13 12:13:54 +03:00
drm_dp_helper.c drm: don't link DP aux i2c adapter to the hardware device node 2017-11-20 09:34:17 +01:00
drm_dp_mst_topology.c
drm_drv.c Merge airlied/drm-next into drm-misc-next 2017-11-21 14:17:56 +01:00
drm_dumb_buffers.c
drm_edid.c drm/edid: kerneldoc for is_hdmi2_sink 2017-12-15 11:13:15 +01:00
drm_edid_load.c
drm_encoder.c drm: Check mode object lease status in all master ioctl paths [v4] 2017-10-25 16:31:30 +10:00
drm_encoder_slave.c
drm_fb_cma_helper.c drm/cma-helper: Add drm_fb_cma_fbdev_init/fini() 2017-12-08 14:27:47 +01:00
drm_fb_helper.c drm/framebuffer: Print task that allocated the fb in debug info. 2017-12-20 15:30:17 +01:00
drm_file.c
drm_flip_work.c
drm_fourcc.c
drm_framebuffer.c drm/framebuffer: Print task that allocated the fb in debug info. 2017-12-20 15:30:17 +01:00
drm_gem.c drm/framebuffer: Add framebuffer debugfs file 2017-11-11 11:21:19 +01:00
drm_gem_cma_helper.c drm: gem_cma_helper.c: Allow importing of contiguous scatterlists with nents > 1 2017-11-15 18:14:46 +01:00
drm_gem_framebuffer_helper.c drm/gem-fb-helper: drm_gem_fbdev_fb_create() make funcs optional 2017-12-08 14:26:00 +01:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h Merge airlied/drm-next into drm-misc-next 2017-11-21 14:17:56 +01:00
drm_ioc32.c
drm_ioctl.c drm: Add four ioctls for managing drm mode object leases [v7] 2017-10-25 16:31:30 +10:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c drm: move lease init after validation in drm_lease_create 2017-12-21 09:49:40 +01:00
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c Linux 4.15-rc4 2017-12-19 21:37:24 +10:00
drm_mode_config.c Linux 4.15-rc4 2017-12-19 21:37:24 +10:00
drm_mode_object.c drm/mode_object: fix documentation for object lookups. 2017-11-10 13:50:47 +10:00
drm_modes.c
drm_modeset_helper.c drm/modeset-helper: Add simple modeset suspend/resume helpers 2017-11-30 18:18:08 +01:00
drm_modeset_lock.c drm: Require __GFP_NOFAIL for the legacy drm_modeset_lock_all 2017-10-31 17:36:46 +01:00
drm_of.c drm/drm_of: Move drm_of_panel_bridge_remove_function into header. 2017-10-13 16:59:36 +02:00
drm_panel.c
drm_panel_orientation_quirks.c drm: fix tainted kernel caused by drm_panel_orientation_quirks.c 2017-12-23 20:06:45 +01:00
drm_pci.c drm/core: clean up references to drm_dev_unref() 2017-09-27 10:53:12 +02:00
drm_plane.c drm/plane: Make framebuffer refcounting the responsibility of setplane_internal callers 2017-12-20 14:49:06 +01:00
drm_plane_helper.c drm: Move drm_plane_helper_check_state() into drm_atomic_helper.c 2017-11-20 21:14:22 +02:00
drm_prime.c drm/prime: skip CPU sync in map/unmap dma_buf 2017-12-04 17:30:19 +01:00
drm_print.c drm/printer: Add drm_vprintf() 2017-11-23 12:31:49 +02:00
drm_probe_helper.c drm/probe-helper: Fix drm_kms_helper_poll_enable() docs 2017-11-30 18:17:37 +01:00
drm_property.c drm: Pass struct drm_file * to __drm_mode_object_find [v2] 2017-10-12 10:03:04 +10:00
drm_rect.c
drm_scatter.c
drm_scdc_helper.c Merge tag 'drm-misc-next-2017-09-20' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-09-28 05:46:15 +10:00
drm_simple_kms_helper.c drm: Move drm_plane_helper_check_state() into drm_atomic_helper.c 2017-11-20 21:14:22 +02:00
drm_syncobj.c Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
drm_sysfs.c
drm_trace.h main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
drm_trace_points.c
drm_vblank.c Merge tag 'drm-misc-next-2017-11-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2017-12-04 05:42:49 +10:00
drm_vm.c
drm_vma_manager.c drm/drm_vma_manager.c: Remove useless goto statement 2017-11-02 10:44:08 +01:00
Kconfig Fixes for 4.16: 2018-01-25 11:42:25 +10:00
Makefile drm: fix gpu scheduler link order 2018-01-24 15:49:04 -05:00