linux/drivers/gpu/drm
Chris Wilson 221fe79945 drm/i915: Perform a direct reset of the GPU from the waiter
If a waiter is holding the struct_mutex, then the reset worker cannot
reset the GPU until the waiter returns. We do not want to return -EAGAIN
form i915_wait_request as that breaks delicate operations like
i915_vma_unbind() which often cannot be restarted easily, and returning
-EIO is just as useless (and has in the past proven dangerous). The
remaining WARN_ON(i915_wait_request) serve as a valuable reminder that
handling errors from an indefinite wait are tricky.

We can keep the current semantic that knowing after a reset is complete,
so is the request, by performing the reset ourselves if we hold the
mutex.

uevent emission is still handled by the reset worker, so it may appear
slightly out of order with respect to the actual reset (and concurrent
use of the device).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20160909131201.16673-11-chris@chris-wilson.co.uk
2016-09-09 14:23:04 +01:00
..
amd Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
arc drm/arc: Remove redundant dev_err call in arcpgu_load() 2016-07-19 15:33:50 -04:00
arm drm: BIT(DRM_ROTATE_?) -> DRM_ROTATE_? 2016-08-08 14:17:56 -04:00
armada drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
ast drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
atmel-hlcdc drm: BIT(DRM_ROTATE_?) -> DRM_ROTATE_? 2016-08-08 14:17:56 -04:00
bochs drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
bridge drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
cirrus Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
etnaviv Merge tag 'drm-for-v4.8' of git://people.freedesktop.org/~airlied/linux 2016-08-01 21:44:08 -04:00
exynos Merge tag 'drm-for-v4.8-zpos' of git://people.freedesktop.org/~airlied/linux 2016-08-07 16:35:08 -07:00
fsl-dcu Merge tag 'topic/drm-misc-2016-07-22' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-07-27 10:33:08 +10:00
gma500 drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
hisilicon drm/hisilicon: Fix ADE vblank on/off handling 2016-07-12 14:17:03 +02:00
i2c drm/i2c: adv7511: Move to bridge folder 2016-07-13 14:24:35 +05:30
i810 drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
i915 drm/i915: Perform a direct reset of the GPU from the waiter 2016-09-09 14:23:04 +01:00
imx Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
mediatek Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
mga drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
mgag200 drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
msm drm: BIT(DRM_ROTATE_?) -> DRM_ROTATE_? 2016-08-08 14:17:56 -04:00
nouveau Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
omapdrm Revert "gpu: drm: omapdrm: dss-of: add missing of_node_put after calling of_parse_phandle" 2016-08-12 07:10:37 -04:00
panel drm/panel: simple: Add support for Starry KR122EA0SRA panel 2016-07-11 14:30:43 +02:00
qxl drm: Protect fb_defio in drivers with CONFIG_KMS_FBDEV_EMULATION 2016-08-12 10:42:00 +02:00
r128 drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
radeon Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
rcar-du drm: rcar-du: Link HDMI encoder with bridge 2016-08-08 15:27:11 +10:00
rockchip drm/rockchip: Use drm_plane_helper_check_state() 2016-08-08 14:19:57 -04:00
savage drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
shmobile drm/shmobile: make fbdev support really optional 2016-07-18 09:11:37 +02:00
sis drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
sti Merge branch 'generic-zpos-v8' of http://git.linaro.org/people/benjamin.gaignard/kernel into drm-next 2016-08-03 08:40:24 +10:00
sun4i drm/fb-helper: Add a dummy remove_conflicting_framebuffers 2016-08-12 10:41:18 +02:00
tdfx drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
tegra Merge remote-tracking branch 'airlied/drm-next' into topic/drm-misc 2016-07-19 09:27:29 +02:00
tilcdc drm/tilcdc: Change tilcdc_crtc_page_flip() to tilcdc_crtc_update_fb() 2016-08-08 23:05:19 +03:00
ttm Merge branch 'drm-next-4.8' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-08-08 16:45:33 +10:00
udl drm: Protect fb_defio in drivers with CONFIG_KMS_FBDEV_EMULATION 2016-08-12 10:42:00 +02:00
vc4 drm/fb-helper: Add a dummy remove_conflicting_framebuffers 2016-08-12 10:41:18 +02:00
vgem drm/vgem: Fix non static symbol warning 2016-07-19 15:01:52 +02:00
via drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
virtio drm/fb-helper: Add a dummy remove_conflicting_framebuffers 2016-08-12 10:41:18 +02:00
vmwgfx drm/vmwgfx: select CONFIG_FB 2016-08-12 10:41:46 +02:00
ati_pcigart.c
drm_agpsupport.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_atomic_helper.c Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
drm_atomic.c drm: add generic zpos property 2016-07-29 09:59:30 +02:00
drm_auth.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_blend.c drm: add generic zpos property 2016-07-29 09:59:30 +02:00
drm_bridge.c
drm_bufs.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_cache.c drm: Restore double clflush on the last partial cacheline 2016-07-12 15:57:13 +02:00
drm_context.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_crtc_helper.c
drm_crtc_internal.h drm: add generic zpos property 2016-07-29 09:59:30 +02:00
drm_crtc.c Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
drm_debugfs.c
drm_dma.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_dp_aux_dev.c drm_aux-dev: fix error handling in drm_dp_aux_dev_init() 2016-07-12 14:10:57 +02:00
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm/dp_helper: Rate limit timeout errors from drm_dp_i2c_do_msg() 2016-08-09 18:23:44 +02:00
drm_dp_mst_topology.c drm/dp-mst: Missing kernel doc 2016-07-19 10:31:53 +02:00
drm_drv.c drm: rename DRM_MINOR_LEGACY to DRM_MINOR_PRIMARY 2016-08-08 10:05:20 +02:00
drm_edid_load.c
drm_edid.c drm/edid: Set 8 bpc color depth for displays with "DFP 1.x compliant TMDS". 2016-08-09 08:56:04 +10:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
drm_flip_work.c
drm_fops.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_fourcc.c
drm_gem_cma_helper.c
drm_gem.c Merge tag 'drm-for-v4.8' of git://people.freedesktop.org/~airlied/linux 2016-08-01 21:44:08 -04:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_irq.c drm: Make sure drm_vblank_no_hw_counter isn't abused 2016-08-08 14:34:05 -04:00
drm_kms_helper_common.c
drm_legacy.h
drm_lock.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_memory.c drm: Fix broken use of _PAGE_NO_CACHE on powerpc 2016-07-12 13:20:39 +02:00
drm_mipi_dsi.c drm/dsi: Make set_tear_scanline command consistent 2016-07-12 13:19:26 +02:00
drm_mm.c drm: Declare that create drm_mm nodes with size 0 is illegal 2016-08-08 10:05:21 +02:00
drm_modes.c drm/imx: convey the pixelclk-active and de-active flags from DT to the ipu-di driver 2016-08-08 11:44:20 +02:00
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_pci.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_plane_helper.c drm/plane-helper: Add drm_plane_helper_check_state() 2016-08-08 14:19:45 -04:00
drm_platform.c
drm_prime.c
drm_probe_helper.c
drm_rect.c drm: Warn about negative sizes when calculating scale factor 2016-08-08 14:17:56 -04:00
drm_scatter.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_simple_kms_helper.c drm/simple_kms_helper: Use drm_plane_helper_check_state() 2016-08-08 14:19:58 -04:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vm.c drm: Fix broken use of _PAGE_NO_CACHE on powerpc 2016-07-12 13:20:39 +02:00
drm_vma_manager.c drm: Convert drm_vma_manager to embedded interval-tree in drm_mm 2016-08-08 10:05:17 +02:00
Kconfig drm/radeon|amgpu: Make fbdev emulation optional 2016-08-12 10:41:53 +02:00
Makefile drm/i915: Use remap_io_mapping() to prefault all PTE in a single pass 2016-08-19 17:13:36 +01:00