linux_dsm_epyc7002/drivers/gpu/drm/i915
Chris Wilson a24a11e6b4 drm/i915: Resurrect ring kicking for semaphores, selectively
Once we thought we got semaphores working, we disabled kicking the ring
if hangcheck fired whilst waiting upon a ring as it was doing more harm
than good:

commit 4e0e90dcb8
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Wed Dec 14 13:56:58 2011 +0100

    drm/i915: kicking rings stuck on semaphores considered harmful

However, life is never that easy and semaphores are still causing
problems whereby the value written by one ring (bcs) is not being
propagated to the waiter (rcs). Thus the waiter never wakes up and we
declare the GPU hung, which often has unfortunate consequences, even if
we successfully reset the GPU.

But the GPU is idle as it has completed the work, just didn't notify its
clients. So we can detect the incomplete wait during hang check and
probe the target ring to see if has indeed emitted the breadcrumb seqno
following the work and then and only then kick the waiter.

Based on a suggestion by Ben Widawsky.

v2: cross-check wait with iphdr. fix signaller calculation.

References: https://bugs.freedesktop.org/show_bug.cgi?id=54226
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Ben Widawsky <ben@bwidawsk.net>
Acked-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-03-17 22:52:51 +01:00
..
dvo_ch7xxx.c drm/i915/dvo-ch7xxx: fix get_hw_state 2012-10-12 10:59:11 +02:00
dvo_ch7017.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ivch.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ns2501.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_sil164.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_tfp410.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
i915_debugfs.c drm/i915: use simple attribute in debugfs routines 2013-03-13 21:16:45 +01:00
i915_dma.c drm/i915: clear the FPGA_DBG_RM_NOCLAIM bit at driver init 2013-02-20 01:33:48 +01:00
i915_drv.c drm/i915: VLV has force wake 2013-03-06 19:50:28 +01:00
i915_drv.h drm/i915: add HAS_POWER_WELL 2013-03-17 21:49:23 +01:00
i915_gem_context.c drm/i915/ctx: Remove bad invariant 2013-02-15 10:30:40 +01:00
i915_gem_debug.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
i915_gem_dmabuf.c Merge tag 'drm-intel-next-2012-12-21' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-01-17 20:34:08 +10:00
i915_gem_evict.c drm/i915: Create a gtt structure 2013-01-17 22:33:56 +01:00
i915_gem_execbuffer.c drm/i915: clarify reasoning for the access_ok call 2013-03-13 21:17:28 +01:00
i915_gem_gtt.c drm/i915: use gen6 stolen check on VLV 2013-03-06 20:07:03 +01:00
i915_gem_stolen.c drm/i915: remove intel_gtt structure 2013-01-31 11:50:07 +01:00
i915_gem_tiling.c drm/i915: Create a gtt structure 2013-01-17 22:33:56 +01:00
i915_gem.c drm/i915: Add to_user_ptr() 2013-03-03 19:49:11 +01:00
i915_ioc32.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
i915_irq.c drm/i915: Resurrect ring kicking for semaphores, selectively 2013-03-17 22:52:51 +01:00
i915_reg.h drm/i915: rename some HDMI bit definitions 2013-03-04 23:17:00 +01:00
i915_suspend.c drm/i915: don't save/restore PCH_LVDS on LPT 2013-03-17 21:53:10 +01:00
i915_sysfs.c drm/i915: add \n to the end of sysfs attributes 2013-02-20 01:33:44 +01:00
i915_trace_points.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_trace.h drm/i915: Allow DRM_ROOT_ONLY|DRM_MASTER to submit privileged batchbuffers 2012-10-17 21:06:59 +02:00
i915_ums.c drm/i915: move DP save/restore into i915_ums.c 2013-01-31 11:50:04 +01:00
intel_acpi.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
intel_bios.c Merge branch 'drm-next-3.8' of git://people.freedesktop.org/~agd5f/linux into drm-next 2012-12-10 20:03:58 +10:00
intel_bios.h UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
intel_crt.c drm/i915: Preserve the FDI line reversal override bit on CPT 2013-02-20 00:21:45 +01:00
intel_ddi.c drm/i915: disable sound first on intel_disable_ddi 2013-03-17 21:18:06 +01:00
intel_display.c drm/i915: there's no DSPADDR register on Haswell 2013-03-17 21:32:14 +01:00
intel_dp.c drm/i915/dp: add pre-PCH eDP checking to DP detect for VLV 2013-03-06 22:05:09 +01:00
intel_drv.h drm/i915: rename sdvox_reg to hdmi_reg on HDMI context 2013-02-20 01:33:46 +01:00
intel_dvo.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
intel_fb.c drm/i915: remove disabled memset of framebuffer from intel_fb 2013-03-04 23:03:56 +01:00
intel_hdmi.c drm/i915: rename some HDMI bit definitions 2013-03-04 23:17:00 +01:00
intel_i2c.c drm/i915: GPIO/GMBUS registers need an offset on VLV 2013-01-24 23:45:03 +01:00
intel_lvds.c drm/i915: reorganize intel_lvds_supported 2013-03-17 21:52:19 +01: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 GPU/i915: Fix acpi_bus_get_device() check in drivers/gpu/drm/i915/intel_opregion.c 2013-02-01 11:01:50 +01:00
intel_overlay.c Merge tag 'drm-intel-next-2013-02-01' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-02-08 11:08:10 +10:00
intel_panel.c drm/i915: write backlight harder 2013-02-15 10:30:36 +01:00
intel_pm.c drm/i915: add HAS_POWER_WELL 2013-03-17 21:49:23 +01:00
intel_ringbuffer.c drm/i915: Fix PIPE_CONTROL DW/QW write through global GTT on IVB+ 2013-02-20 00:21:47 +01:00
intel_ringbuffer.h Merge tag 'drm-intel-next-2012-12-21' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-01-17 20:34:08 +10:00
intel_sdvo_regs.h drm/i915: clear the entire sdvo infoframe buffer 2012-10-24 15:12:48 +02:00
intel_sdvo.c gpu: don't cast kzalloc() return value 2013-03-11 23:51:54 +01:00
intel_sprite.c drm/i915: Implement pipe CSC based limited range RGB output 2013-02-20 00:21:49 +01:00
intel_tv.c drm/i915: Return the real error code from intel_set_mode() 2012-12-20 21:09:55 +01:00
Makefile drm/i915: extract ums suspend/resume into i915_ums.c 2013-01-31 11:50:03 +01:00