linux/drivers/gpu/drm/i915
Chris Wilson 094f9a54e3 drm/i915: Fix __wait_seqno to use true infinite timeouts
When we switched to always using a timeout in conjunction with
wait_seqno, we lost the ability to detect missed interrupts. Since, we
have had issues with interrupts on a number of generations, and they are
required to be delivered in a timely fashion for a smooth UX, it is
important that we do log errors found in the wild and prevent the
display stalling for upwards of 1s every time the seqno interrupt is
missed.

Rather than continue to fix up the timeouts to work around the interface
impedence in wait_event_*(), open code the combination of
wait_event[_interruptible][_timeout], and use the exposed timer to
poll for seqno should we detect a lost interrupt.

v2: In order to satisfy the debug requirement of logging missed
interrupts with the real world requirments of making machines work even
if interrupts are hosed, we revert to polling after detecting a missed
interrupt.

v3: Throw in a debugfs interface to simulate broken hw not reporting
interrupts.

v4: s/EGAIN/EAGAIN/ (Imre)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Imre Deak <imre.deak@intel.com>
[danvet: Don't use the struct typedef in new code.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-10-03 20:01:30 +02:00
..
dvo_ch7xxx.c drm/i915: dvo_ch7xxx: fix vsync polarity setting 2013-07-25 16:10:22 +02:00
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h drm/i915: Remove unused mode_fixup() vfunc of struct intel_dvo_dev_ops 2013-09-05 21:39:59 +02:00
i915_debugfs.c drm/i915: Fix __wait_seqno to use true infinite timeouts 2013-10-03 20:01:30 +02:00
i915_dma.c drm/i915: Add some missing steps to i915_driver_load error path 2013-10-03 20:01:30 +02:00
i915_drv.c drm/i915: fix typo s/PatherPoint/PantherPoint/ 2013-10-01 14:36:18 +02:00
i915_drv.h drm/i915: Fix __wait_seqno to use true infinite timeouts 2013-10-03 20:01:30 +02:00
i915_gem_context.c drm/i915: Convert active API to VMA 2013-10-01 07:45:21 +02:00
i915_gem_debug.c drm/i915: Fix #endif comment 2013-08-09 10:45:52 +02:00
i915_gem_dmabuf.c drm/i915: Pin pages whilst mapping the dma-buf 2013-09-03 19:17:58 +02:00
i915_gem_evict.c drm/i915: trace vm eviction instead of everything 2013-10-01 07:45:20 +02:00
i915_gem_execbuffer.c drm/i915: Convert active API to VMA 2013-10-01 07:45:21 +02:00
i915_gem_gtt.c drm/i915: Use kcalloc more 2013-10-01 07:45:01 +02:00
i915_gem_stolen.c Linux 3.12-rc2 2013-09-24 09:32:53 +02:00
i915_gem_tiling.c drm/i915: Use kcalloc more 2013-10-01 07:45:01 +02:00
i915_gem.c drm/i915: Fix __wait_seqno to use true infinite timeouts 2013-10-03 20:01:30 +02:00
i915_gpu_error.c drm/i915: Fix __wait_seqno to use true infinite timeouts 2013-10-03 20:01:30 +02:00
i915_ioc32.c
i915_irq.c drm/i915: Fix __wait_seqno to use true infinite timeouts 2013-10-03 20:01:30 +02:00
i915_reg.h drm/i915/vlv: use correct units for rc6 residency v2 2013-10-01 07:45:44 +02:00
i915_suspend.c drm/i915: don't save/restore LBB on Gen5+ 2013-09-13 11:40:45 +02:00
i915_sysfs.c drm/i915/vlv: use correct units for rc6 residency v2 2013-10-01 07:45:44 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Add a tracepoint for using a semaphore 2013-10-01 07:45:24 +02:00
i915_ums.c drm/i915: scrap register address storage 2013-06-10 19:54:14 +02:00
intel_acpi.c i915: fix ACPI _DSM warning 2013-08-05 19:04:05 +02:00
intel_bios.c drm/i915: Rip out SUPPORTS_EDP 2013-10-01 07:45:07 +02:00
intel_bios.h drm/i915: use the HDMI DDI buffer translations from VBT 2013-10-01 07:45:04 +02:00
intel_crt.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_ddi.c drm/i915: Add HSW CRT output readout support 2013-10-01 07:45:15 +02:00
intel_display.c drm/i915: Don't populate pipe_src_{w,h} multiple times 2013-10-03 20:01:28 +02:00
intel_dp.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_drv.h drm/i915: Make intel_resume_power_well() static 2013-10-01 07:45:48 +02:00
intel_dsi_cmd.c drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_cmd.h drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_pll.c drm/i915: Use adjusted_mode in DSI PLL calculations 2013-09-16 23:36:38 +02:00
intel_dsi.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_dsi.h drm/i915: add VLV DSI PLL Calculations 2013-09-04 17:34:48 +02:00
intel_dvo.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_fb.c drm/i915: make intel_crtc_fb_gamma_{set, get} static 2013-10-01 07:45:18 +02:00
intel_hdmi.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_i2c.c drm/i915: Program GMBUS Frequency based on the CDCLK for VLV. 2013-10-01 07:45:41 +02:00
intel_lvds.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_modes.c drm/i915: Add "Automatic" mode for the "Broadcast RGB" property 2013-01-20 13:09:44 +01:00
intel_opregion.c Linux 3.12-rc2 2013-09-24 09:32:53 +02:00
intel_overlay.c drm/i915: use pointer = k[cmz...]alloc(sizeof(*pointer), ...) pattern 2013-10-01 07:45:01 +02:00
intel_panel.c drm/i915/vlv: hack to init backlight regs if BIOS fails to do so v2 2013-10-01 07:45:41 +02:00
intel_pm.c drm/i915: Clean up the ring scaling calculations 2013-10-03 20:01:29 +02:00
intel_ringbuffer.c drm/i915: s/HAS_L3_GPU_CACHE/HAS_L3_DPF 2013-09-19 20:41:00 +02:00
intel_ringbuffer.h drm/i915: Write RING_TAIL once per-request 2013-09-10 15:35:58 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_sideband.c drm/i915: Add additional pipe parameter for vlv_dpio_read and vlv_dpio_write. v2 2013-09-05 15:04:36 +02:00
intel_sprite.c drm/i915: use pointer = k[cmz...]alloc(sizeof(*pointer), ...) pattern 2013-10-01 07:45:01 +02:00
intel_tv.c drm/i915: destroy connector sysfs files earlier 2013-10-01 07:45:48 +02:00
intel_uncore.c drm/i915: Delay the release of the forcewake by a jiffie 2013-10-01 07:45:13 +02:00
Makefile drm/i915: add VLV DSI PLL Calculations 2013-09-04 17:34:48 +02:00