linux_dsm_epyc7002/drivers/gpu/drm/i915
Daniel Vetter 88fe429db0 drm/i915: fix up semaphore_waits_for
There's an entire pile of issues in here:

- Use the main RING_HEAD register, not ACTHD. ACTHD points at the gtt
  offset of the batch buffer when a batch is executed. Semaphores are
  always emitted to the main ring, so we always want to look at that.

- Mask the obtained HEAD pointer with the actual ring size, which is
  much smaller. Together with the above issue this resulted us in
  trying to dereference a pointer way outside of the ring mmio
  mapping. The resulting invalid access in interrupt context
  (hangcheck is executed from timers) lead to a full blown kernel
  panic. The fbcon panic handler then tried to frob our driver harder,
  resulting in a full machine hang at least on my snb here where I've
  stumbled over this.

- Handle ring wrapping correctly and be a bit more explicit about how
  many dwords we're scanning. We probably should also scan more than
  just 4 ...

- Space out some of teh computations for readability.

This reduces hard-hangs on my snb here. Mika and QA both say that it
doesn't completel remove them, but at least for me it's a clear
improvement in stability.

Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
References: https://bugs.freedesktop.org/show_bug.cgi?id=74100
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-28 18:25:18 +01:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c drm/i915/ns2501: Rip out the reenable hack 2013-11-04 16:32:31 +01:00
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Use the correct format string modifier for ptrdiff_t 2014-03-18 19:49:42 +01:00
i915_debugfs.c drm/i915: Print how many objects are shared in per-process stats 2014-03-20 15:09:36 +01:00
i915_dma.c drm/i915: make PC8 be part of runtime PM suspend/resume 2014-03-19 16:38:25 +01:00
i915_drv.c drm/i915: rename __hsw_do_{en, dis}able_pc8 2014-03-19 16:40:25 +01:00
i915_drv.h drm/i915: Include a note about the dangers of I915_READ64/I915_WRITE64 2014-03-21 16:13:14 +01:00
i915_gem_context.c drm/i915: Per-process stats work better when evaluated per-process 2014-03-20 15:09:21 +01:00
i915_gem_debug.c
i915_gem_dmabuf.c drm/i915: Pin pages whilst allocating for dma-buf vmap() 2013-11-29 15:51:20 +01:00
i915_gem_evict.c drm/i915: Consolidate binding parameters into flags 2014-02-14 14:16:58 +01:00
i915_gem_execbuffer.c drm/i915: Implement command buffer parsing logic 2014-03-07 22:37:00 +01:00
i915_gem_gtt.c drm/i915/bdw: Restore PPAT on thaw 2014-03-19 09:44:48 +01:00
i915_gem_stolen.c drm/i915: Resolving the memory region conflict for Stolen area 2014-03-03 11:51:15 +02:00
i915_gem_tiling.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
i915_gem.c drm/i915: Fix unsafe loop iteration over vma whilst unbinding them 2014-03-21 16:13:08 +01:00
i915_gpu_error.c drm/i915: Actually capture PP_DIR_BASE on error 2014-03-18 16:31:36 +01:00
i915_ioc32.c
i915_irq.c drm/i915: fix up semaphore_waits_for 2014-03-28 18:25:18 +01:00
i915_params.c drm/i915: make PC8 be part of runtime PM suspend/resume 2014-03-19 16:38:25 +01:00
i915_reg.h drm/i915: Enabling 128x128 and 256x256 ARGB Cursor Support 2014-03-20 17:35:33 +01:00
i915_suspend.c drm/i915: Kill most of the FBC register save/restore 2014-01-25 21:17:03 +01:00
i915_sysfs.c drm/i915: remove rps local variables 2014-03-20 14:46:07 +01:00
i915_trace_points.c
i915_trace.h drm/i915: Do not dereference pointers from ring buffer in evict event 2014-03-19 08:17:29 +01:00
i915_ums.c drm/i915: Only restore backlight combination mode reg for ums 2014-01-24 17:22:45 +01:00
intel_acpi.c Merge branch 'acpi-dsm' 2014-01-12 23:45:52 +01:00
intel_bios.c drm/i915: Update VBT data structures to have MIPI block enhancements 2014-03-05 21:30:12 +01:00
intel_bios.h drm/i915: Update VBT data structures to have MIPI block enhancements 2014-03-05 21:30:12 +01:00
intel_crt.c drm/i915: Allow HDMI+VGA cloning 2014-03-10 21:48:08 +01:00
intel_ddi.c drm/i915: finish off reverting eDP VDD changes 2014-03-18 16:31:38 +01:00
intel_display.c drm/i915: Enabling 128x128 and 256x256 ARGB Cursor Support 2014-03-20 17:35:33 +01:00
intel_dp.c drm/i915: add locking to fixed panel edid probing 2014-03-28 18:25:18 +01:00
intel_drv.h drm/i915: Enabling 128x128 and 256x256 ARGB Cursor Support 2014-03-20 17:35:33 +01:00
intel_dsi_cmd.c
intel_dsi_cmd.h
intel_dsi_pll.c drm/i915: Try harder to get best m, n, p values with minimal error 2013-12-11 23:52:18 +01:00
intel_dsi.c drm/i915: Make encoder cloning more flexible 2014-03-10 21:33:26 +01:00
intel_dsi.h drm/i915: Parametrize the dphy and other spec specific parameters 2013-12-11 23:52:20 +01:00
intel_dvo.c drm/i915: Make encoder cloning more flexible 2014-03-10 21:33:26 +01:00
intel_fbdev.c drm/i915: remove early fb allocation dependency on CONFIG_FB v2 2014-03-08 11:31:58 +01:00
intel_hdmi.c Linux 3.14-rc7 2014-03-18 19:12:31 +10:00
intel_i2c.c drm/i915: Disable dp aux irq on g4x 2014-02-07 16:40:07 +01:00
intel_lvds.c drm/i915: add locking to fixed panel edid probing 2014-03-28 18:25:18 +01:00
intel_modes.c
intel_opregion.c Merge tag 'drm-intel-fixes-2014-02-06' of ssh://git.freedesktop.org/git/drm-intel into drm-next 2014-02-11 12:57:27 +10:00
intel_overlay.c drm/i915: tune down user-triggerable dmesg noise in the cursor/overlay code 2014-02-14 19:02:32 +01:00
intel_panel.c Linux 3.14-rc7 2014-03-18 19:12:31 +10:00
intel_pm.c drm/i915: remove rps local variables 2014-03-20 14:46:07 +01:00
intel_ringbuffer.c Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next 2014-03-18 09:43:56 +01:00
intel_ringbuffer.h Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next 2014-03-18 09:43:56 +01:00
intel_sdvo_regs.h drm/i915: use __packed instead of __attribute__((packed)) 2013-12-03 18:19:49 +01:00
intel_sdvo.c drm/i915/sdvo: fix questionable return value check 2014-03-21 16:13:14 +01:00
intel_sideband.c drm/i915: Use FLISDSI interface for band gap reset 2013-12-11 23:52:17 +01:00
intel_sprite.c drm/i915: Shuffle sprite register writes into a tighter group 2014-01-24 17:22:53 +01:00
intel_tv.c drm/i915: Make encoder cloning more flexible 2014-03-10 21:33:26 +01:00
intel_uncore.c drm/i915: catch forcewake reference underruns 2014-03-18 16:31:37 +01:00
Kconfig i915, fbdev: Fix Kconfig typo 2013-11-21 21:59:02 +01:00
Makefile Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next 2014-03-18 09:43:56 +01:00