drm/i915: fix up locking inconsistency around gem_do_init
The locking in our setup and teardown paths is rather arbitrary, but generally we try to protect gem stuff with dev->struct_mutex. Further, the ums/gem ioctl to setup gem _does_ take the look. So fix up this benign inconsistency. Notice while reading through code. v2: Rebased on top of the ppgtt code. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
@@ -1196,6 +1196,7 @@ static int i915_load_gem_init(struct drm_device *dev)
|
|||||||
/* Basic memrange allocator for stolen space */
|
/* Basic memrange allocator for stolen space */
|
||||||
drm_mm_init(&dev_priv->mm.stolen, 0, prealloc_size);
|
drm_mm_init(&dev_priv->mm.stolen, 0, prealloc_size);
|
||||||
|
|
||||||
|
mutex_lock(&dev->struct_mutex);
|
||||||
if (i915_enable_ppgtt && HAS_ALIASING_PPGTT(dev)) {
|
if (i915_enable_ppgtt && HAS_ALIASING_PPGTT(dev)) {
|
||||||
/* PPGTT pdes are stolen from global gtt ptes, so shrink the
|
/* PPGTT pdes are stolen from global gtt ptes, so shrink the
|
||||||
* aperture accordingly when using aliasing ppgtt. */
|
* aperture accordingly when using aliasing ppgtt. */
|
||||||
@@ -1222,7 +1223,6 @@ static int i915_load_gem_init(struct drm_device *dev)
|
|||||||
i915_gem_do_init(dev, 0, mappable_size, gtt_size - PAGE_SIZE);
|
i915_gem_do_init(dev, 0, mappable_size, gtt_size - PAGE_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&dev->struct_mutex);
|
|
||||||
ret = i915_gem_init_hw(dev);
|
ret = i915_gem_init_hw(dev);
|
||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
Reference in New Issue
Block a user