linux/drivers/gpu/drm/i915
Daniel Vetter de2b998552 drm/i915: don't return a spurious -EIO from intel_ring_begin
The issue with this check is that it results in userspace receiving an
-EIO while the gpu reset hasn't completed, resulting in fallback to sw
rendering or worse.

Now there's also a stern comment in intel_ring_wait_seqno saying that
intel_ring_begin should not return -EAGAIN, ever, because some callers
can't handle that. But after an audit of the callsites I don't see any
issues. I guess the last problematic spot disappeared with the removal
of the pipelined fencing code.

So do the right thing and call check_wedge, which should properly
decide whether an -EAGAIN or -EIO is appropriate if wedged is set.

Note that the early check for a wedged gpu before touching the ring is
rather important (and it took me quite some time of acting like the
densest doofus to figure that out): If we don't do that and the gpu
died for good, not having been resurrect by the reset code, userspace
can merrily fill up the entire ring until it notices that something is
amiss.

Allowing userspace to emit more render, despite that we know that it
will fail can't lead to anything good (and by experience can lead to
all sorts of havoc, including angering the OOM gods and hard-hanging
the hw for good).

v2: Fix EAGAIN mispell, noticed by Chris Wilson.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Tested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-07-05 10:03:45 +02:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_debugfs.c drm/i915: add ccid to error state 2012-06-14 17:36:19 +02:00
i915_dma.c drm/i915: get rid of dev_priv->info->has_pch_split 2012-07-05 09:56:05 +02:00
i915_drv.c drm/i915: don't trylock in the gpu reset code 2012-07-05 10:00:46 +02:00
i915_drv.h drm/i915: non-interruptible sleeps can't handle -EAGAIN 2012-07-05 10:01:14 +02:00
i915_gem_context.c drm/i915: linuxify create_hw_context() 2012-06-29 19:43:59 +02:00
i915_gem_debug.c drm/i915: stop using dev->agp->base 2012-06-12 22:18:06 +02:00
i915_gem_dmabuf.c i915: add dma-buf vmap support for exporting vmapped buffer 2012-05-31 14:13:57 +01:00
i915_gem_evict.c drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
i915_gem_execbuffer.c drm/i915: disable flushing_list/gpu_write_list 2012-06-20 13:54:28 +02:00
i915_gem_gtt.c i915: add dmabuf/prime buffer sharing support. 2012-05-23 10:47:10 +01:00
i915_gem_stolen.c drm/i915: Split the stolen handling for GEM out of i915_dma.c 2012-05-03 11:18:11 +02:00
i915_gem_tiling.c drm/i915: Only the zap the VMA after updating the tiling parameters 2012-05-03 11:18:07 +02:00
i915_gem.c drm/i915: properly SIGBUS on I/O errors 2012-07-05 10:03:01 +02:00
i915_ioc32.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_irq.c Linux 3.5-rc4 2012-06-25 19:10:36 +02:00
i915_reg.h drm/i915: fix PIPE_DDI_PORT_MASK 2012-07-05 09:58:10 +02:00
i915_suspend.c drm/i915: wrap up gt powersave enabling functions 2012-06-25 21:07:03 +02:00
i915_sysfs.c drm/i915: simplify sysfs setup code 2012-06-01 10:00:57 +02:00
i915_trace_points.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_trace.h drm/i915: improve i915_wait_request_begin trace 2012-05-25 09:55:15 +02:00
intel_acpi.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
intel_bios.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
intel_bios.h drm/i915: VBT Parser cleanup for eDP block 2012-01-13 08:37:44 -08:00
intel_crt.c drm/i915: VLV VGA port only handles on & off, like PCH VGA 2012-06-20 22:49:45 +02:00
intel_ddi.c drm/i915: add set_infoframes to struct intel_hdmi 2012-05-30 21:36:58 +02:00
intel_display.c drm/i915: re-initialize DDI buffer translations after resume 2012-07-05 09:56:06 +02:00
intel_dp.c drm/i915: prefer wide & slow to fast & narrow in DP configs 2012-07-05 09:56:05 +02:00
intel_drv.h drm/i915: fix up ilk rc6 disabling confusion 2012-07-05 09:56:04 +02:00
intel_dvo.c drm/i915/intel_i2c: refactor using intel_gmbus_get_adapter 2012-03-28 14:40:44 +02:00
intel_fb.c drm/i915: stop using dev->agp->base 2012-06-12 22:18:06 +02:00
intel_hdmi.c drm/i915: ensure HDMI port is disabled inside set_infoframes 2012-06-12 19:19:52 +02:00
intel_i2c.c drm/i915: be more careful when returning -ENXIO in gmbus transfer 2012-05-21 21:04:21 +02:00
intel_lvds.c drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13 2012-06-22 10:41:17 +02:00
intel_modes.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
intel_opregion.c drm/i915: [sparse] __iomem fixes for opregion 2012-05-03 11:18:00 +02:00
intel_overlay.c drm/i915: s/i915_wait_request/i915_wait_seqno/g 2012-05-25 14:18:42 +02:00
intel_panel.c drm/i915: properly enable the blc controller on the right pipe 2012-06-12 19:27:58 +02:00
intel_pm.c drm/i915: prevent bogus intel_update_fbc notifications 2012-07-05 09:56:07 +02:00
intel_ringbuffer.c drm/i915: don't return a spurious -EIO from intel_ring_begin 2012-07-05 10:03:45 +02:00
intel_ringbuffer.h drm/i915: disable flushing_list/gpu_write_list 2012-06-20 13:54:28 +02:00
intel_sdvo_regs.h drm/i915: properly handle interlaced bit for sdvo dtd conversion 2012-05-24 17:53:52 +02:00
intel_sdvo.c Merge remote-tracking branch 'airlied/drm-prime-vmap' into drm-intel-next-queued 2012-06-01 10:52:54 +02:00
intel_sprite.c drm/i915/sprite: Fix mem leak in intel_plane_init() 2012-06-27 17:03:24 +02:00
intel_tv.c drm/i915: Adding TV Out Missing modes. 2012-05-24 17:54:08 +02:00
Makefile drm/i915: preliminary context support 2012-06-14 17:36:16 +02:00