OSDN Git Service

drm/i915: Clarify gpu_error.lock locking
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 15 Sep 2014 12:55:24 +0000 (14:55 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 19 Sep 2014 12:43:18 +0000 (14:43 +0200)
i915_capture_error_state can be called from all kinds of contexts, so
needs the full irqsave dance. But the other two places to grab and
release the error state are only called from process context. So
simplify them to the plaine _irq spinlock versions to clarify the
locking semantics.

Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gpu_error.c

index 2c87a79..386e45d 100644 (file)
@@ -1326,13 +1326,12 @@ void i915_error_state_get(struct drm_device *dev,
                          struct i915_error_state_file_priv *error_priv)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
-       unsigned long flags;
 
-       spin_lock_irqsave(&dev_priv->gpu_error.lock, flags);
+       spin_lock_irq(&dev_priv->gpu_error.lock);
        error_priv->error = dev_priv->gpu_error.first_error;
        if (error_priv->error)
                kref_get(&error_priv->error->ref);
-       spin_unlock_irqrestore(&dev_priv->gpu_error.lock, flags);
+       spin_unlock_irq(&dev_priv->gpu_error.lock);
 
 }
 
@@ -1346,12 +1345,11 @@ void i915_destroy_error_state(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct drm_i915_error_state *error;
-       unsigned long flags;
 
-       spin_lock_irqsave(&dev_priv->gpu_error.lock, flags);
+       spin_lock_irq(&dev_priv->gpu_error.lock);
        error = dev_priv->gpu_error.first_error;
        dev_priv->gpu_error.first_error = NULL;
-       spin_unlock_irqrestore(&dev_priv->gpu_error.lock, flags);
+       spin_unlock_irq(&dev_priv->gpu_error.lock);
 
        if (error)
                kref_put(&error->ref, i915_error_state_free);