linux-stable/drivers/gpu/drm/i915
Chris Wilson acd29f7b22 drm/i915: Limit the number of loops for reading a split 64bit register
In I915_READ64_2x32 we attempt to read a 64bit register using 2 32bit
reads. Due to the nature of the registers we try to read in this manner,
they may increment between the two instruction (e.g. a timestamp
counter). To keep the result accurate, we repeat the read if we detect
an overflow (i.e. the upper value varies). However, some hardware is just
plain flaky and may endless loop as the the upper 32bits are not stable.
Just give up after a couple of tries and report whatever we read last.

v2: Use the most recent values when erring out on an unstable register.

Reported-by: russianneuromancer@ya.ru
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91906
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: stable@vger.kernel.org
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-09-09 11:08:10 +03:00
..
dvo.h
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c Fix resume from suspend on IBM X30 2015-06-15 12:21:01 +02:00
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915: Fix command parser table validator 2015-07-29 10:31:04 +02:00
i915_debugfs.c drm/i915/skl: Adding DDI_E power well domain 2015-08-31 18:40:48 +03:00
i915_dma.c drm/i915: Fake AGP is dead 2015-07-28 13:30:00 +02:00
i915_drv.c drm/i915: apply the PCI_D0/D3 hibernation workaround everywhere on pre GEN6 2015-08-31 18:18:51 +03:00
i915_drv.h drm/i915: Limit the number of loops for reading a split 64bit register 2015-09-09 11:08:10 +03:00
i915_gem.c drm/i915: Keep the mm.bound_list in rough LRU order 2015-07-28 16:05:41 +02:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Remove the failed context from the fpriv->context_idr 2015-08-14 17:50:41 +02:00
i915_gem_debug.c drm/i915: Implement inter-engine read-read optimisations 2015-05-21 15:11:42 +02:00
i915_gem_dmabuf.c drm/i915: remove unused has_dma_mapping flag 2015-07-13 22:42:41 +02:00
i915_gem_evict.c
i915_gem_execbuffer.c drm/i915: Always mark the object as dirty when used by the GPU 2015-09-02 16:21:53 +03:00
i915_gem_fence.c drm/i915: kerneldoc for tiling IOCTL and swizzle functions 2015-07-27 10:26:30 +02:00
i915_gem_gtt.c Linux 4.2-rc7 2015-08-17 14:13:53 +10:00
i915_gem_gtt.h drm/i915/gtt: Move scratch_pd and scratch_pt into vm struct 2015-06-26 11:06:30 +02:00
i915_gem_render_state.c drm/i915: Add provision to extend Golden context batch 2015-07-21 09:30:57 +02:00
i915_gem_render_state.h drm/i915: Add provision to extend Golden context batch 2015-07-21 09:30:57 +02:00
i915_gem_shrinker.c
i915_gem_stolen.c drm/i915: Fix build warning on 32-bit 2015-08-26 10:15:36 +03:00
i915_gem_tiling.c Merge tag 'drm-intel-fixes-2015-08-14' into drm-intel-next-fixes 2015-08-14 18:11:30 +02:00
i915_gem_userptr.c drm/i915: avoid leaking DMA mappings 2015-07-13 22:42:40 +02:00
i915_gpu_error.c drm/i915: Report IOMMU enabled status for GPU hangs 2015-08-14 17:50:41 +02:00
i915_guc_reg.h drm/i915: Add GuC-related header files 2015-07-21 08:38:00 +02:00
i915_ioc32.c Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
i915_irq.c drm/i915: Pass hpd_status_i915[] to intel_get_hpd_pins() in pre-g4x 2015-09-02 16:33:54 +03:00
i915_params.c drm/i915: Add GuC-related module parameters 2015-07-21 08:37:35 +02:00
i915_reg.h drm/i915/skl: enable DDI-E hotplug 2015-08-26 10:24:25 +03:00
i915_suspend.c drm/i915: use dev_priv for the FBC functions 2015-07-08 11:39:45 +02:00
i915_sysfs.c drm/i915/vlv: fix RC6 residency time calculation 2015-06-15 11:56:37 +02:00
i915_trace.h Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
i915_trace_points.c
i915_vgpu.c
i915_vgpu.h
intel_acpi.c
intel_atomic.c drm/i915: Commit planes on each crtc separately. 2015-08-13 12:09:18 +03:00
intel_atomic_plane.c drm/i915: Remove transitional references from intel_plane_atomic_check. 2015-06-22 14:28:29 +02:00
intel_audio.c Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
intel_bios.c drm/i915/skl: Enable DDI-E 2015-08-31 18:28:09 +03:00
intel_bios.h drm/i915: eDP can be present on DDI-E 2015-08-31 18:36:38 +03:00
intel_crt.c drm/i915: Get rid of dpms handling. 2015-08-14 17:50:33 +02:00
intel_csr.c drm/i915/gen9: Removed byte swapping for csr firmware 2015-08-05 11:00:04 +02:00
intel_ddi.c drm/i915: Don't use link_bw for PLL setup 2015-09-01 12:31:44 +03:00
intel_display.c drm/i915: Fix broken mst get_hw_state. 2015-09-08 16:16:50 +03:00
intel_dp.c i915: Set ddi_pll_sel in DP MST path 2015-09-01 12:42:27 +03:00
intel_dp_mst.c drm/i915: Fix broken mst get_hw_state. 2015-09-08 16:16:50 +03:00
intel_drv.h i915: Set ddi_pll_sel in DP MST path 2015-09-01 12:42:27 +03:00
intel_dsi.c drm/i915: Get rid of dpms handling. 2015-08-14 17:50:33 +02:00
intel_dsi.h drm/i915: Use the CRC gpio for panel enable/disable 2015-07-21 09:22:43 +02:00
intel_dsi_panel_vbt.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_dsi_pll.c drm/i915: Changes required to enable DSI Video Mode on CHT 2015-07-03 07:39:02 +02:00
intel_dvo.c drm/i915: Get rid of dpms handling. 2015-08-14 17:50:33 +02:00
intel_fbc.c drm/i915: fix FBC frontbuffer tracking flushing code 2015-08-05 09:59:44 +02:00
intel_fbdev.c drm/i915: Use new drm_fb_helper functions 2015-08-06 14:13:05 +02:00
intel_fifo_underrun.c
intel_frontbuffer.c drm/i915: fix FBC frontbuffer tracking flushing code 2015-08-05 09:59:44 +02:00
intel_guc_fwif.h drm/i915: Add GuC-related header files 2015-07-21 08:38:00 +02:00
intel_hdmi.c drm/i915: Enable HDMI on DDI-E 2015-08-31 18:27:02 +03:00
intel_hotplug.c drm/i915/skl: enable DDI-E hotplug 2015-08-26 10:24:25 +03:00
intel_i2c.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
intel_lrc.c Linux 4.2-rc8 2015-08-24 16:36:42 +10:00
intel_lrc.h drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_lvds.c drm/i915: Get rid of dpms handling. 2015-08-14 17:50:33 +02:00
intel_mocs.c drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_mocs.h drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_modes.c
intel_opregion.c Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
intel_overlay.c drm/i915: Update intel_ring_begin() to take a request structure 2015-06-23 14:02:29 +02:00
intel_panel.c drm/i915: Backlight control using CRC PMIC based PWM driver 2015-07-21 09:22:48 +02:00
intel_pm.c Merge tag 'topic/drm-misc-2015-07-28' into drm-intel-next-queued 2015-08-06 14:27:09 +02:00
intel_psr.c drm/i915: VLV/CHV PSR: Increase wait delay time before active PSR. 2015-08-05 10:07:44 +02:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c drm/i915: Contain the WA_REG macro 2015-08-14 17:50:42 +02:00
intel_ringbuffer.h Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
intel_runtime_pm.c drm/i915/skl: Adding DDI_E power well domain 2015-08-31 18:40:48 +03:00
intel_sdvo.c drm/i915: Get rid of dpms handling. 2015-08-14 17:50:33 +02:00
intel_sdvo_regs.h
intel_sideband.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_sprite.c drm/i915: always disable irqs in intel_pipe_update_start 2015-07-15 15:06:02 +02:00
intel_tv.c drm/i915: Get rid of dpms handling. 2015-08-14 17:50:33 +02:00
intel_uncore.c Linux 4.2-rc7 2015-08-17 14:13:53 +10:00
Kconfig drm/i915: Use CONFIG_DRM_FBDEV_EMULATION 2015-08-11 14:00:29 +02:00
Makefile Merge tag 'drm-intel-next-fixes-2015-08-16' of git://anongit.freedesktop.org/drm-intel into drm-next 2015-08-17 14:14:44 +10:00