drm/i915: don't grab dev->struct_mutex for userspace forcewak
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 9 Aug 2012 20:33:58 +0000 (22:33 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 12 Aug 2012 09:28:49 +0000 (11:28 +0200)
Since forcewake is now protected by a spinlock, we don't need to grab
dev->struct_mutex any more. This way we can also get rid of a stale
comment, noticed by Ben Widawsky while reviewing some locking changes.

v2: Kill the unused variable ret, noticed by Fengguang Wu.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_debugfs.c

index 0e8f14d04cdacaa9860219f0095040a73909044d..a18e93687b8ba11dcec3087f0746de4f1a2f77c2 100644 (file)
@@ -1956,16 +1956,11 @@ static int i915_forcewake_open(struct inode *inode, struct file *file)
 {
        struct drm_device *dev = inode->i_private;
        struct drm_i915_private *dev_priv = dev->dev_private;
-       int ret;
 
        if (INTEL_INFO(dev)->gen < 6)
                return 0;
 
-       ret = mutex_lock_interruptible(&dev->struct_mutex);
-       if (ret)
-               return ret;
        gen6_gt_force_wake_get(dev_priv);
-       mutex_unlock(&dev->struct_mutex);
 
        return 0;
 }
@@ -1974,24 +1969,11 @@ static int i915_forcewake_release(struct inode *inode, struct file *file)
 {
        struct drm_device *dev = inode->i_private;
        struct drm_i915_private *dev_priv = dev->dev_private;
-       int ret;
 
        if (INTEL_INFO(dev)->gen < 6)
                return 0;
 
-       /*
-        * It's bad that we can potentially hang userspace if struct_mutex gets
-        * forever stuck.  However, if we cannot acquire this lock it means that
-        * almost certainly the driver has hung, is not unload-able. Therefore
-        * hanging here is probably a minor inconvenience not to be seen my
-        * almost every user.
-        */
-       ret = mutex_lock_interruptible(&dev->struct_mutex);
-       if (ret)
-               return ret;
-
        gen6_gt_force_wake_put(dev_priv);
-       mutex_unlock(&dev->struct_mutex);
 
        return 0;
 }