mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-27 10:25:05 +07:00
88fe429db0
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> |
||
---|---|---|
.. | ||
dvo_ch7xxx.c | ||
dvo_ch7017.c | ||
dvo_ivch.c | ||
dvo_ns2501.c | ||
dvo_sil164.c | ||
dvo_tfp410.c | ||
dvo.h | ||
i915_cmd_parser.c | ||
i915_debugfs.c | ||
i915_dma.c | ||
i915_drv.c | ||
i915_drv.h | ||
i915_gem_context.c | ||
i915_gem_debug.c | ||
i915_gem_dmabuf.c | ||
i915_gem_evict.c | ||
i915_gem_execbuffer.c | ||
i915_gem_gtt.c | ||
i915_gem_stolen.c | ||
i915_gem_tiling.c | ||
i915_gem.c | ||
i915_gpu_error.c | ||
i915_ioc32.c | ||
i915_irq.c | ||
i915_params.c | ||
i915_reg.h | ||
i915_suspend.c | ||
i915_sysfs.c | ||
i915_trace_points.c | ||
i915_trace.h | ||
i915_ums.c | ||
intel_acpi.c | ||
intel_bios.c | ||
intel_bios.h | ||
intel_crt.c | ||
intel_ddi.c | ||
intel_display.c | ||
intel_dp.c | ||
intel_drv.h | ||
intel_dsi_cmd.c | ||
intel_dsi_cmd.h | ||
intel_dsi_pll.c | ||
intel_dsi.c | ||
intel_dsi.h | ||
intel_dvo.c | ||
intel_fbdev.c | ||
intel_hdmi.c | ||
intel_i2c.c | ||
intel_lvds.c | ||
intel_modes.c | ||
intel_opregion.c | ||
intel_overlay.c | ||
intel_panel.c | ||
intel_pm.c | ||
intel_ringbuffer.c | ||
intel_ringbuffer.h | ||
intel_sdvo_regs.h | ||
intel_sdvo.c | ||
intel_sideband.c | ||
intel_sprite.c | ||
intel_tv.c | ||
intel_uncore.c | ||
Kconfig | ||
Makefile |