i915_gem_setup(struct drm_i915_gem_object *obj, u64 size)
 {
        struct intel_memory_region *mr = obj->mm.placements[0];
+       unsigned int flags;
        int ret;
 
        size = round_up(size, object_max_page_size(obj));
        if (i915_gem_object_size_2big(size))
                return -E2BIG;
 
-       ret = mr->ops->init_object(mr, obj, size, 0);
+       /*
+        * For now resort to CPU based clearing for device local-memory, in the
+        * near future this will use the blitter engine for accelerated, GPU
+        * based clearing.
+        */
+       flags = 0;
+       if (mr->type == INTEL_MEMORY_LOCAL)
+               flags = I915_BO_ALLOC_CPU_CLEAR;
+
+       ret = mr->ops->init_object(mr, obj, size, flags);
        if (ret)
                return ret;