Merge branch 'drm-intel-fixes' into drm-intel-next
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 9 Dec 2010 20:22:04 +0000 (20:22 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 9 Dec 2010 20:22:04 +0000 (20:22 +0000)
1  2 
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_ringbuffer.c
drivers/gpu/drm/i915/intel_ringbuffer.h

Simple merge
@@@ -689,23 -689,13 +689,13 @@@ static int intel_wrap_ring_buffer(struc
        return 0;
  }
  
 -int intel_wait_ring_buffer(struct drm_device *dev,
 -                         struct intel_ring_buffer *ring, int n)
 +int intel_wait_ring_buffer(struct intel_ring_buffer *ring, int n)
  {
 +      struct drm_device *dev = ring->dev;
 +      struct drm_i915_private *dev_priv = dev->dev_private;
        unsigned long end;
 -      drm_i915_private_t *dev_priv = dev->dev_private;
        u32 head;
  
-       head = intel_read_status_page(ring, 4);
-       if (head) {
-               ring->head = head & HEAD_ADDR;
-               ring->space = ring->head - (ring->tail + 8);
-               if (ring->space < 0)
-                       ring->space += ring->size;
-               if (ring->space >= n)
-                       return 0;
-       }
        trace_i915_ring_wait_begin (dev);
        end = jiffies + 3 * HZ;
        do {
@@@ -40,35 -25,45 +40,36 @@@ struct  intel_ring_buffer 
                RING_BLT = 0x4,
        } id;
        u32             mmio_base;
 -      unsigned long   size;
        void            *virtual_start;
        struct          drm_device *dev;
 -      struct          drm_gem_object *gem_object;
 +      struct          drm_i915_gem_object *obj;
  
-       unsigned int    head;
-       unsigned int    tail;
+       u32             actual_head;
+       u32             head;
+       u32             tail;
        int             space;
 +      int             size;
        struct intel_hw_status_page status_page;
  
 -      u32             irq_gem_seqno;          /* last seq seem at irq time */
 -      u32             waiting_gem_seqno;
 -      int             user_irq_refcount;
 -      void            (*user_irq_get)(struct drm_device *dev,
 -                      struct intel_ring_buffer *ring);
 -      void            (*user_irq_put)(struct drm_device *dev,
 -                      struct intel_ring_buffer *ring);
 +      u32             irq_seqno;              /* last seq seem at irq time */
 +      u32             waiting_seqno;
 +      u32             sync_seqno[I915_NUM_RINGS-1];
 +      u32             irq_refcount;
 +      void            (*irq_get)(struct intel_ring_buffer *ring);
 +      void            (*irq_put)(struct intel_ring_buffer *ring);
  
 -      int             (*init)(struct drm_device *dev,
 -                      struct intel_ring_buffer *ring);
 +      int             (*init)(struct intel_ring_buffer *ring);
  
 -      void            (*write_tail)(struct drm_device *dev,
 -                                    struct intel_ring_buffer *ring,
 +      void            (*write_tail)(struct intel_ring_buffer *ring,
                                      u32 value);
 -      void            (*flush)(struct drm_device *dev,
 -                      struct intel_ring_buffer *ring,
 -                      u32     invalidate_domains,
 -                      u32     flush_domains);
 -      u32             (*add_request)(struct drm_device *dev,
 -                      struct intel_ring_buffer *ring,
 -                      u32 flush_domains);
 -      u32             (*get_seqno)(struct drm_device *dev,
 -                                   struct intel_ring_buffer *ring);
 -      int             (*dispatch_gem_execbuffer)(struct drm_device *dev,
 -                      struct intel_ring_buffer *ring,
 -                      struct drm_i915_gem_execbuffer2 *exec,
 -                      struct drm_clip_rect *cliprects,
 -                      uint64_t exec_offset);
 +      void            (*flush)(struct intel_ring_buffer *ring,
 +                               u32    invalidate_domains,
 +                               u32    flush_domains);
 +      int             (*add_request)(struct intel_ring_buffer *ring,
 +                                     u32 *seqno);
 +      u32             (*get_seqno)(struct intel_ring_buffer *ring);
 +      int             (*dispatch_execbuffer)(struct intel_ring_buffer *ring,
 +                                             u32 offset, u32 length);
        void            (*cleanup)(struct intel_ring_buffer *ring);
  
        /**