drm/i915: more struct_mutex locking
[pandora-kernel.git] / drivers / gpu / drm / i915 / intel_overlay.c
index a670c00..cffd3ed 100644 (file)
@@ -773,14 +773,10 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
        if (ret != 0)
                return ret;
 
-       ret = i915_gem_object_pin(new_bo, PAGE_SIZE, true);
+       ret = i915_gem_object_pin_to_display_plane(new_bo, 0, NULL);
        if (ret != 0)
                return ret;
 
-       ret = i915_gem_object_set_to_gtt_domain(new_bo, 0);
-       if (ret != 0)
-               goto out_unpin;
-
        ret = i915_gem_object_put_fence(new_bo);
        if (ret)
                goto out_unpin;
@@ -1416,6 +1412,8 @@ void intel_setup_overlay(struct drm_device *dev)
                goto out_free;
        overlay->reg_bo = reg_bo;
 
+       mutex_lock(&dev->struct_mutex);
+
        if (OVERLAY_NEEDS_PHYSICAL(dev)) {
                ret = i915_gem_attach_phys_object(dev, reg_bo,
                                                  I915_GEM_PHYS_OVERLAY_REGS,
@@ -1440,6 +1438,8 @@ void intel_setup_overlay(struct drm_device *dev)
                 }
        }
 
+       mutex_unlock(&dev->struct_mutex);
+
        /* init all values */
        overlay->color_key = 0x0101fe;
        overlay->brightness = -19;
@@ -1464,6 +1464,7 @@ out_unpin_bo:
        i915_gem_object_unpin(reg_bo);
 out_free_bo:
        drm_gem_object_unreference(&reg_bo->base);
+       mutex_unlock(&dev->struct_mutex);
 out_free:
        kfree(overlay);
        return;