Lines Matching refs:ring
989 struct intel_engine_cs *ring) in notify_ring() argument
991 if (!intel_ring_initialized(ring)) in notify_ring()
994 trace_i915_gem_request_notify(ring); in notify_ring()
996 wake_up_all(&ring->irq_queue); in notify_ring()
1254 notify_ring(dev, &dev_priv->ring[RCS]); in ilk_gt_irq_handler()
1256 notify_ring(dev, &dev_priv->ring[VCS]); in ilk_gt_irq_handler()
1266 notify_ring(dev, &dev_priv->ring[RCS]); in snb_gt_irq_handler()
1268 notify_ring(dev, &dev_priv->ring[VCS]); in snb_gt_irq_handler()
1270 notify_ring(dev, &dev_priv->ring[BCS]); in snb_gt_irq_handler()
1285 struct intel_engine_cs *ring; in gen8_gt_irq_handler() local
1297 ring = &dev_priv->ring[RCS]; in gen8_gt_irq_handler()
1299 notify_ring(dev, ring); in gen8_gt_irq_handler()
1301 intel_lrc_irq_handler(ring); in gen8_gt_irq_handler()
1304 ring = &dev_priv->ring[BCS]; in gen8_gt_irq_handler()
1306 notify_ring(dev, ring); in gen8_gt_irq_handler()
1308 intel_lrc_irq_handler(ring); in gen8_gt_irq_handler()
1320 ring = &dev_priv->ring[VCS]; in gen8_gt_irq_handler()
1322 notify_ring(dev, ring); in gen8_gt_irq_handler()
1324 intel_lrc_irq_handler(ring); in gen8_gt_irq_handler()
1327 ring = &dev_priv->ring[VCS2]; in gen8_gt_irq_handler()
1329 notify_ring(dev, ring); in gen8_gt_irq_handler()
1331 intel_lrc_irq_handler(ring); in gen8_gt_irq_handler()
1354 ring = &dev_priv->ring[VECS]; in gen8_gt_irq_handler()
1356 notify_ring(dev, ring); in gen8_gt_irq_handler()
1358 intel_lrc_irq_handler(ring); in gen8_gt_irq_handler()
1657 notify_ring(dev_priv->dev, &dev_priv->ring[VECS]); in gen6_rps_irq_handler()
2296 struct intel_engine_cs *ring; in i915_error_wake_up() local
2307 for_each_ring(ring, dev_priv, i) in i915_error_wake_up()
2308 wake_up_all(&ring->irq_queue); in i915_error_wake_up()
2654 ring_idle(struct intel_engine_cs *ring, u32 seqno) in ring_idle() argument
2656 return (list_empty(&ring->request_list) || in ring_idle()
2657 i915_seqno_passed(seqno, ring->last_submitted_seqno)); in ring_idle()
2673 semaphore_wait_to_signaller_ring(struct intel_engine_cs *ring, u32 ipehr, u64 offset) in semaphore_wait_to_signaller_ring() argument
2675 struct drm_i915_private *dev_priv = ring->dev->dev_private; in semaphore_wait_to_signaller_ring()
2681 if (ring == signaller) in semaphore_wait_to_signaller_ring()
2684 if (offset == signaller->semaphore.signal_ggtt[ring->id]) in semaphore_wait_to_signaller_ring()
2691 if(ring == signaller) in semaphore_wait_to_signaller_ring()
2694 if (sync_bits == signaller->semaphore.mbox.wait[ring->id]) in semaphore_wait_to_signaller_ring()
2700 ring->id, ipehr, offset); in semaphore_wait_to_signaller_ring()
2706 semaphore_waits_for(struct intel_engine_cs *ring, u32 *seqno) in semaphore_waits_for() argument
2708 struct drm_i915_private *dev_priv = ring->dev->dev_private; in semaphore_waits_for()
2713 ipehr = I915_READ(RING_IPEHR(ring->mmio_base)); in semaphore_waits_for()
2714 if (!ipehr_is_semaphore_wait(ring->dev, ipehr)) in semaphore_waits_for()
2725 head = I915_READ_HEAD(ring) & HEAD_ADDR; in semaphore_waits_for()
2726 backwards = (INTEL_INFO(ring->dev)->gen >= 8) ? 5 : 4; in semaphore_waits_for()
2734 head &= ring->buffer->size - 1; in semaphore_waits_for()
2737 cmd = ioread32(ring->buffer->virtual_start + head); in semaphore_waits_for()
2747 *seqno = ioread32(ring->buffer->virtual_start + head + 4) + 1; in semaphore_waits_for()
2748 if (INTEL_INFO(ring->dev)->gen >= 8) { in semaphore_waits_for()
2749 offset = ioread32(ring->buffer->virtual_start + head + 12); in semaphore_waits_for()
2751 offset = ioread32(ring->buffer->virtual_start + head + 8); in semaphore_waits_for()
2753 return semaphore_wait_to_signaller_ring(ring, ipehr, offset); in semaphore_waits_for()
2756 static int semaphore_passed(struct intel_engine_cs *ring) in semaphore_passed() argument
2758 struct drm_i915_private *dev_priv = ring->dev->dev_private; in semaphore_passed()
2762 ring->hangcheck.deadlock++; in semaphore_passed()
2764 signaller = semaphore_waits_for(ring, &seqno); in semaphore_passed()
2785 struct intel_engine_cs *ring; in semaphore_clear_deadlocks() local
2788 for_each_ring(ring, dev_priv, i) in semaphore_clear_deadlocks()
2789 ring->hangcheck.deadlock = 0; in semaphore_clear_deadlocks()
2793 ring_stuck(struct intel_engine_cs *ring, u64 acthd) in ring_stuck() argument
2795 struct drm_device *dev = ring->dev; in ring_stuck()
2799 if (acthd != ring->hangcheck.acthd) { in ring_stuck()
2800 if (acthd > ring->hangcheck.max_acthd) { in ring_stuck()
2801 ring->hangcheck.max_acthd = acthd; in ring_stuck()
2816 tmp = I915_READ_CTL(ring); in ring_stuck()
2820 ring->name); in ring_stuck()
2821 I915_WRITE_CTL(ring, tmp); in ring_stuck()
2826 switch (semaphore_passed(ring)) { in ring_stuck()
2832 ring->name); in ring_stuck()
2833 I915_WRITE_CTL(ring, tmp); in ring_stuck()
2857 struct intel_engine_cs *ring; in i915_hangcheck_elapsed() local
2868 for_each_ring(ring, dev_priv, i) { in i915_hangcheck_elapsed()
2875 seqno = ring->get_seqno(ring, false); in i915_hangcheck_elapsed()
2876 acthd = intel_ring_get_active_head(ring); in i915_hangcheck_elapsed()
2878 if (ring->hangcheck.seqno == seqno) { in i915_hangcheck_elapsed()
2879 if (ring_idle(ring, seqno)) { in i915_hangcheck_elapsed()
2880 ring->hangcheck.action = HANGCHECK_IDLE; in i915_hangcheck_elapsed()
2882 if (waitqueue_active(&ring->irq_queue)) { in i915_hangcheck_elapsed()
2884 if (!test_and_set_bit(ring->id, &dev_priv->gpu_error.missed_irq_rings)) { in i915_hangcheck_elapsed()
2885 if (!(dev_priv->gpu_error.test_irq_rings & intel_ring_flag(ring))) in i915_hangcheck_elapsed()
2887 ring->name); in i915_hangcheck_elapsed()
2890 ring->name); in i915_hangcheck_elapsed()
2891 wake_up_all(&ring->irq_queue); in i915_hangcheck_elapsed()
2894 ring->hangcheck.score += BUSY; in i915_hangcheck_elapsed()
2913 ring->hangcheck.action = ring_stuck(ring, in i915_hangcheck_elapsed()
2916 switch (ring->hangcheck.action) { in i915_hangcheck_elapsed()
2922 ring->hangcheck.score += BUSY; in i915_hangcheck_elapsed()
2925 ring->hangcheck.score += KICK; in i915_hangcheck_elapsed()
2928 ring->hangcheck.score += HUNG; in i915_hangcheck_elapsed()
2934 ring->hangcheck.action = HANGCHECK_ACTIVE; in i915_hangcheck_elapsed()
2939 if (ring->hangcheck.score > 0) in i915_hangcheck_elapsed()
2940 ring->hangcheck.score--; in i915_hangcheck_elapsed()
2942 ring->hangcheck.acthd = ring->hangcheck.max_acthd = 0; in i915_hangcheck_elapsed()
2945 ring->hangcheck.seqno = seqno; in i915_hangcheck_elapsed()
2946 ring->hangcheck.acthd = acthd; in i915_hangcheck_elapsed()
2950 for_each_ring(ring, dev_priv, i) { in i915_hangcheck_elapsed()
2951 if (ring->hangcheck.score >= HANGCHECK_SCORE_RING_HUNG) { in i915_hangcheck_elapsed()
2954 ring->name); in i915_hangcheck_elapsed()
3690 notify_ring(dev, &dev_priv->ring[RCS]); in i8xx_irq_handler()
3879 notify_ring(dev, &dev_priv->ring[RCS]); in i915_irq_handler()
4106 notify_ring(dev, &dev_priv->ring[RCS]); in i965_irq_handler()
4108 notify_ring(dev, &dev_priv->ring[VCS]); in i965_irq_handler()