drm/i915/irq: move locking inside valleyview_{enable, disable}_display_irqs()
authorJani Nikula <jani.nikula@intel.com>
Tue, 6 May 2025 13:06:44 +0000 (16:06 +0300)
committerJani Nikula <jani.nikula@intel.com>
Wed, 7 May 2025 08:03:14 +0000 (11:03 +0300)
All users of valleyview_enable_display_irqs() and
valleyview_disable_display_irqs() have a lock/unlock pair. Move the
locking inside the functions.

Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Link: https://lore.kernel.org/r/bb6d941c47260aea11e4af5d52572b0e5f139929.1746536745.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display_irq.c
drivers/gpu/drm/i915/display/intel_display_power_well.c

index 22bb0fc10736eb46919fc0a63389ef24fe587085..3d2294a4d83d780ed1f46ea84e0961cf7960ab10 100644 (file)
@@ -2117,10 +2117,10 @@ void valleyview_enable_display_irqs(struct intel_display *display)
 {
        struct drm_i915_private *dev_priv = to_i915(display->drm);
 
-       lockdep_assert_held(&dev_priv->irq_lock);
+       spin_lock_irq(&dev_priv->irq_lock);
 
        if (display->irq.vlv_display_irqs_enabled)
-               return;
+               goto out;
 
        display->irq.vlv_display_irqs_enabled = true;
 
@@ -2128,21 +2128,26 @@ void valleyview_enable_display_irqs(struct intel_display *display)
                _vlv_display_irq_reset(display);
                vlv_display_irq_postinstall(display);
        }
+
+out:
+       spin_unlock_irq(&dev_priv->irq_lock);
 }
 
 void valleyview_disable_display_irqs(struct intel_display *display)
 {
        struct drm_i915_private *dev_priv = to_i915(display->drm);
 
-       lockdep_assert_held(&dev_priv->irq_lock);
+       spin_lock_irq(&dev_priv->irq_lock);
 
        if (!display->irq.vlv_display_irqs_enabled)
-               return;
+               goto out;
 
        display->irq.vlv_display_irqs_enabled = false;
 
        if (intel_irqs_enabled(dev_priv))
                _vlv_display_irq_reset(display);
+out:
+       spin_unlock_irq(&dev_priv->irq_lock);
 }
 
 void ilk_de_irq_postinstall(struct intel_display *display)
index 6335fa909a7b3460957b5195a399090102bd52f9..b104bce0e14df676059e8376eb6955c557d7a2b9 100644 (file)
@@ -1212,7 +1212,6 @@ static void vlv_init_display_clock_gating(struct intel_display *display)
 
 static void vlv_display_power_well_init(struct intel_display *display)
 {
-       struct drm_i915_private *dev_priv = to_i915(display->drm);
        struct intel_encoder *encoder;
        enum pipe pipe;
 
@@ -1236,9 +1235,7 @@ static void vlv_display_power_well_init(struct intel_display *display)
 
        vlv_init_display_clock_gating(display);
 
-       spin_lock_irq(&dev_priv->irq_lock);
        valleyview_enable_display_irqs(display);
-       spin_unlock_irq(&dev_priv->irq_lock);
 
        /*
         * During driver initialization/resume we can avoid restoring the
@@ -1265,9 +1262,7 @@ static void vlv_display_power_well_deinit(struct intel_display *display)
 {
        struct drm_i915_private *dev_priv = to_i915(display->drm);
 
-       spin_lock_irq(&dev_priv->irq_lock);
        valleyview_disable_display_irqs(display);
-       spin_unlock_irq(&dev_priv->irq_lock);
 
        /* make sure we're done processing display irqs */
        intel_synchronize_irq(dev_priv);