aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c8
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.h3
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index b26243f09c91..208e6753aec5 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2380,7 +2380,8 @@ static void semaphore_clear_deadlocks(struct drm_i915_private *dev_priv)
2380 ring->hangcheck.deadlock = false; 2380 ring->hangcheck.deadlock = false;
2381} 2381}
2382 2382
2383static enum { wait, active, kick, hung } ring_stuck(struct intel_ring_buffer *ring, u32 acthd) 2383static enum intel_ring_hangcheck_action
2384ring_stuck(struct intel_ring_buffer *ring, u32 acthd)
2384{ 2385{
2385 struct drm_device *dev = ring->dev; 2386 struct drm_device *dev = ring->dev;
2386 struct drm_i915_private *dev_priv = dev->dev_private; 2387 struct drm_i915_private *dev_priv = dev->dev_private;
@@ -2483,7 +2484,10 @@ void i915_hangcheck_elapsed(unsigned long data)
2483 * being repeatedly kicked and so responsible 2484 * being repeatedly kicked and so responsible
2484 * for stalling the machine. 2485 * for stalling the machine.
2485 */ 2486 */
2486 switch (ring_stuck(ring, acthd)) { 2487 ring->hangcheck.action = ring_stuck(ring,
2488 acthd);
2489
2490 switch (ring->hangcheck.action) {
2487 case wait: 2491 case wait:
2488 score = 0; 2492 score = 0;
2489 break; 2493 break;
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index a3e96103dbe5..799f04c9da45 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -37,11 +37,14 @@ struct intel_hw_status_page {
37#define I915_READ_SYNC_0(ring) I915_READ(RING_SYNC_0((ring)->mmio_base)) 37#define I915_READ_SYNC_0(ring) I915_READ(RING_SYNC_0((ring)->mmio_base))
38#define I915_READ_SYNC_1(ring) I915_READ(RING_SYNC_1((ring)->mmio_base)) 38#define I915_READ_SYNC_1(ring) I915_READ(RING_SYNC_1((ring)->mmio_base))
39 39
40enum intel_ring_hangcheck_action { wait, active, kick, hung };
41
40struct intel_ring_hangcheck { 42struct intel_ring_hangcheck {
41 bool deadlock; 43 bool deadlock;
42 u32 seqno; 44 u32 seqno;
43 u32 acthd; 45 u32 acthd;
44 int score; 46 int score;
47 enum intel_ring_hangcheck_action action;
45}; 48};
46 49
47struct intel_ring_buffer { 50struct intel_ring_buffer {