err = PTR_ERR(cmd);
                goto err;
        }
+
        *cmd = MI_BATCH_BUFFER_END;
+       i915_gem_chipset_flush(i915);
+
        i915_gem_object_unpin_map(obj);
 
        err = i915_gem_object_set_to_gtt_domain(obj, false);
                *cmd++ = lower_32_bits(vma->node.start);
        }
        *cmd++ = MI_BATCH_BUFFER_END; /* terminate early in case of error */
+       i915_gem_chipset_flush(i915);
 
-       wmb();
        i915_gem_object_unpin_map(obj);
 
        return vma;
                return PTR_ERR(cmd);
 
        *cmd = MI_BATCH_BUFFER_END;
-       wmb();
+       i915_gem_chipset_flush(batch->vm->i915);
 
        i915_gem_object_unpin_map(batch->obj);
 
                                              I915_MAP_WC);
                if (!IS_ERR(cmd)) {
                        *cmd = MI_BATCH_BUFFER_END;
-                       wmb();
+                       i915_gem_chipset_flush(i915);
+
                        i915_gem_object_unpin_map(request[id]->batch->obj);
                }
 
 
                *batch++ = lower_32_bits(vma->node.start);
        }
        *batch++ = MI_BATCH_BUFFER_END; /* not reached */
+       i915_gem_chipset_flush(h->i915);
 
        flags = 0;
        if (INTEL_GEN(vm->i915) <= 5)
 static void hang_fini(struct hang *h)
 {
        *h->batch = MI_BATCH_BUFFER_END;
-       wmb();
+       i915_gem_chipset_flush(h->i915);
 
        i915_gem_object_unpin_map(h->obj);
        i915_gem_object_put(h->obj);
                i915_gem_request_get(rq);
 
                *h.batch = MI_BATCH_BUFFER_END;
+               i915_gem_chipset_flush(i915);
+
                __i915_add_request(rq, true);
 
                timeout = i915_wait_request(rq,
                pr_info("%s: Completed %d resets\n", engine->name, count);
 
                *h.batch = MI_BATCH_BUFFER_END;
-               wmb();
+               i915_gem_chipset_flush(i915);
 
                i915_gem_request_put(prev);
        }