{
        int ret;
 
-       ret = intel_ring_begin(ring, 4);
+       ret = intel_ring_begin(ring, 6);
        if (ret)
                return ret;
 
+       if (IS_GEN7(ring->dev))
+               intel_ring_emit(ring, MI_ARB_ON_OFF | MI_ARB_DISABLE);
+       else
+               intel_ring_emit(ring, MI_NOOP);
+
        intel_ring_emit(ring, MI_NOOP);
        intel_ring_emit(ring, MI_SET_CONTEXT);
        intel_ring_emit(ring, new_context->obj->gtt_offset |
        /* w/a: MI_SET_CONTEXT must always be followed by MI_NOOP */
        intel_ring_emit(ring, MI_NOOP);
 
+       if (IS_GEN7(ring->dev))
+               intel_ring_emit(ring, MI_ARB_ON_OFF | MI_ARB_ENABLE);
+       else
+               intel_ring_emit(ring, MI_NOOP);
+
        intel_ring_advance(ring);
 
        return ret;
 
 #define MI_DISPLAY_FLIP                MI_INSTR(0x14, 2)
 #define MI_DISPLAY_FLIP_I915   MI_INSTR(0x14, 1)
 #define   MI_DISPLAY_FLIP_PLANE(n) ((n) << 20)
+#define MI_ARB_ON_OFF          MI_INSTR(0x08, 0)
+#define   MI_ARB_ENABLE                        (1<<0)
+#define   MI_ARB_DISABLE               (0<<0)
 #define MI_SET_CONTEXT         MI_INSTR(0x18, 0)
 #define   MI_MM_SPACE_GTT              (1<<8)
 #define   MI_MM_SPACE_PHYSICAL         (0<<8)