]> git.karo-electronics.de Git - linux-beck.git/commitdiff
drm/i915: Remove the confusing global waiting/irq seqno
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 27 Oct 2010 14:27:33 +0000 (15:27 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 27 Oct 2010 22:30:59 +0000 (23:30 +0100)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/intel_ringbuffer.h

index c5aa6bee3abb7d4d29663a1c5052a9ed26315313..beb3de7921b51922ce92fce9bee0f110550c5f92 100644 (file)
@@ -319,6 +319,19 @@ static int i915_gem_request_info(struct seq_file *m, void *data)
        return 0;
 }
 
+static void i915_ring_seqno_info(struct seq_file *m,
+                                struct intel_ring_buffer *ring)
+{
+       if (ring->get_seqno) {
+               seq_printf(m, "Current sequence (%s): %d\n",
+                          ring->name, ring->get_seqno(ring));
+               seq_printf(m, "Waiter sequence (%s):  %d\n",
+                          ring->name, ring->waiting_seqno);
+               seq_printf(m, "IRQ sequence (%s):     %d\n",
+                          ring->name, ring->irq_seqno);
+       }
+}
+
 static int i915_gem_seqno_info(struct seq_file *m, void *data)
 {
        struct drm_info_node *node = (struct drm_info_node *) m->private;
@@ -330,15 +343,9 @@ static int i915_gem_seqno_info(struct seq_file *m, void *data)
        if (ret)
                return ret;
 
-       if (dev_priv->render_ring.status_page.page_addr != NULL) {
-               seq_printf(m, "Current sequence: %d\n",
-                          dev_priv->render_ring.get_seqno(&dev_priv->render_ring));
-       } else {
-               seq_printf(m, "Current sequence: hws uninitialized\n");
-       }
-       seq_printf(m, "Waiter sequence:  %d\n",
-                       dev_priv->mm.waiting_gem_seqno);
-       seq_printf(m, "IRQ sequence:     %d\n", dev_priv->mm.irq_gem_seqno);
+       i915_ring_seqno_info(m, &dev_priv->render_ring);
+       i915_ring_seqno_info(m, &dev_priv->bsd_ring);
+       i915_ring_seqno_info(m, &dev_priv->blt_ring);
 
        mutex_unlock(&dev->struct_mutex);
 
@@ -390,22 +397,9 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
        }
        seq_printf(m, "Interrupts received: %d\n",
                   atomic_read(&dev_priv->irq_received));
-       if (dev_priv->render_ring.get_seqno) {
-               seq_printf(m, "Current sequence (render):    %d\n",
-                          dev_priv->render_ring.get_seqno(&dev_priv->render_ring));
-       }
-       if (dev_priv->bsd_ring.get_seqno) {
-               seq_printf(m, "Current sequence (BSD):    %d\n",
-                          dev_priv->bsd_ring.get_seqno(&dev_priv->bsd_ring));
-       }
-       if (dev_priv->blt_ring.get_seqno) {
-               seq_printf(m, "Current sequence (BLT):    %d\n",
-                          dev_priv->blt_ring.get_seqno(&dev_priv->blt_ring));
-       }
-       seq_printf(m, "Waiter sequence:     %d\n",
-                  dev_priv->mm.waiting_gem_seqno);
-       seq_printf(m, "IRQ sequence:        %d\n",
-                  dev_priv->mm.irq_gem_seqno);
+       i915_ring_seqno_info(m, &dev_priv->render_ring);
+       i915_ring_seqno_info(m, &dev_priv->bsd_ring);
+       i915_ring_seqno_info(m, &dev_priv->blt_ring);
        mutex_unlock(&dev->struct_mutex);
 
        return 0;
index c241468c632eaf5eb91d4233e91d6b81cbaa7e6a..2af8e1604b44f0ecd784981339c5ab3f0d40aa7f 100644 (file)
@@ -608,16 +608,6 @@ typedef struct drm_i915_private {
                 */
                struct delayed_work retire_work;
 
-               /**
-                * Waiting sequence number, if any
-                */
-               uint32_t waiting_gem_seqno;
-
-               /**
-                * Last seq seen at irq time
-                */
-               uint32_t irq_gem_seqno;
-
                /**
                 * Flag if the X Server, and thus DRM, is not currently in
                 * control of the device.
index 580244c1e7932b93afe14032330e75e72be356c8..74f5525d156f753e93bc9b5bb24b776e59f7e629 100644 (file)
@@ -1984,7 +1984,7 @@ i915_do_wait_request(struct drm_device *dev, uint32_t seqno,
 
                trace_i915_gem_request_wait_begin(dev, seqno);
 
-               ring->waiting_gem_seqno = seqno;
+               ring->waiting_seqno = seqno;
                ring->user_irq_get(ring);
                if (interruptible)
                        ret = wait_event_interruptible(ring->irq_queue,
@@ -1996,7 +1996,7 @@ i915_do_wait_request(struct drm_device *dev, uint32_t seqno,
                                || atomic_read(&dev_priv->mm.wedged));
 
                ring->user_irq_put(ring);
-               ring->waiting_gem_seqno = 0;
+               ring->waiting_seqno = 0;
 
                trace_i915_gem_request_wait_end(dev, seqno);
        }
index 23b28528c642e5ccad299e7f381e000541dd704c..29cbcb33b92c593d1caf0d51c325c01a0449f5e2 100644 (file)
@@ -298,7 +298,7 @@ static void notify_ring(struct drm_device *dev,
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
        u32 seqno = ring->get_seqno(ring);
-       ring->irq_gem_seqno = seqno;
+       ring->irq_seqno = seqno;
        trace_i915_gem_request_complete(dev, seqno);
        wake_up_all(&ring->irq_queue);
        dev_priv->hangcheck_count = 0;
@@ -1319,10 +1319,10 @@ static bool i915_hangcheck_ring_idle(struct intel_ring_buffer *ring, bool *err)
        if (list_empty(&ring->request_list) ||
            i915_seqno_passed(ring->get_seqno(ring), ring_last_seqno(ring))) {
                /* Issue a wake-up to catch stuck h/w. */
-               if (ring->waiting_gem_seqno && waitqueue_active(&ring->irq_queue)) {
+               if (ring->waiting_seqno && waitqueue_active(&ring->irq_queue)) {
                        DRM_ERROR("Hangcheck timer elapsed... %s idle [waiting on %d, at %d], missed IRQ?\n",
                                  ring->name,
-                                 ring->waiting_gem_seqno,
+                                 ring->waiting_seqno,
                                  ring->get_seqno(ring));
                        wake_up_all(&ring->irq_queue);
                        *err = true;
index 84f6919de8e099d7ceeaeb2d4ac969cac90c31fc..7ad9e94220b4afbc823c1f15db2b8d5b2df911f0 100644 (file)
@@ -35,8 +35,8 @@ struct  intel_ring_buffer {
        int             size;
        struct intel_hw_status_page status_page;
 
-       u32             irq_gem_seqno;          /* last seq seem at irq time */
-       u32             waiting_gem_seqno;
+       u32             irq_seqno;              /* last seq seem at irq time */
+       u32             waiting_seqno;
        int             user_irq_refcount;
        void            (*user_irq_get)(struct intel_ring_buffer *ring);
        void            (*user_irq_put)(struct intel_ring_buffer *ring);