struct i915_hw_context *ctx;
        struct i915_address_space *vm;
        const u32 ctx_id = i915_execbuffer2_get_context_id(*args);
-       u32 exec_start = args->batch_start_offset, exec_len;
+       u64 exec_start = args->batch_start_offset, exec_len;
        u32 mask, flags;
        int ret, mode, i;
        bool need_relocs;
 
 
 static int
 i965_dispatch_execbuffer(struct intel_ring_buffer *ring,
-                        u32 offset, u32 length,
+                        u64 offset, u32 length,
                         unsigned flags)
 {
        int ret;
 #define I830_BATCH_LIMIT (256*1024)
 static int
 i830_dispatch_execbuffer(struct intel_ring_buffer *ring,
-                               u32 offset, u32 len,
+                               u64 offset, u32 len,
                                unsigned flags)
 {
        int ret;
 
 static int
 i915_dispatch_execbuffer(struct intel_ring_buffer *ring,
-                        u32 offset, u32 len,
+                        u64 offset, u32 len,
                         unsigned flags)
 {
        int ret;
 
 static int
 gen8_ring_dispatch_execbuffer(struct intel_ring_buffer *ring,
-                             u32 offset, u32 len,
+                             u64 offset, u32 len,
                              unsigned flags)
 {
        struct drm_i915_private *dev_priv = ring->dev->dev_private;
 
        /* FIXME(BDW): Address space and security selectors. */
        intel_ring_emit(ring, MI_BATCH_BUFFER_START_GEN8 | (ppgtt<<8));
-       intel_ring_emit(ring, offset);
-       intel_ring_emit(ring, 0);
+       intel_ring_emit(ring, lower_32_bits(offset));
+       intel_ring_emit(ring, upper_32_bits(offset));
        intel_ring_emit(ring, MI_NOOP);
        intel_ring_advance(ring);
 
 
 static int
 hsw_ring_dispatch_execbuffer(struct intel_ring_buffer *ring,
-                             u32 offset, u32 len,
+                             u64 offset, u32 len,
                              unsigned flags)
 {
        int ret;
 
 static int
 gen6_ring_dispatch_execbuffer(struct intel_ring_buffer *ring,
-                             u32 offset, u32 len,
+                             u64 offset, u32 len,
                              unsigned flags)
 {
        int ret;
 
        void            (*set_seqno)(struct intel_ring_buffer *ring,
                                     u32 seqno);
        int             (*dispatch_execbuffer)(struct intel_ring_buffer *ring,
-                                              u32 offset, u32 length,
+                                              u64 offset, u32 length,
                                               unsigned flags);
 #define I915_DISPATCH_SECURE 0x1
 #define I915_DISPATCH_PINNED 0x2