git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
drm/i915: more struct_mutex locking
[pandora-kernel.git]
/
drivers
/
gpu
/
drm
/
i915
/
intel_overlay.c
diff --git
a/drivers/gpu/drm/i915/intel_overlay.c
b/drivers/gpu/drm/i915/intel_overlay.c
index
a670c00
..
cffd3ed
100644
(file)
--- a/
drivers/gpu/drm/i915/intel_overlay.c
+++ b/
drivers/gpu/drm/i915/intel_overlay.c
@@
-773,14
+773,10
@@
static int intel_overlay_do_put_image(struct intel_overlay *overlay,
if (ret != 0)
return ret;
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;
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;
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;
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,
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;
/* 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(®_bo->base);
i915_gem_object_unpin(reg_bo);
out_free_bo:
drm_gem_object_unreference(®_bo->base);
+ mutex_unlock(&dev->struct_mutex);
out_free:
kfree(overlay);
return;
out_free:
kfree(overlay);
return;