<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [bsw] unclaimed read/write to PORT_HOTPLUG_EN during init"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=98255#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [bsw] unclaimed read/write to PORT_HOTPLUG_EN during init"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=98255">bug 98255</a>
              from <span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span></b>
        <pre>Food for thought:

diff --git a/drivers/gpu/drm/i915/intel_hotplug.c
b/drivers/gpu/drm/i915/intel_hotplug.c
index 334d47b..2fe29d8 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -219,8 +219,10 @@ static void intel_hpd_irq_storm_reenable_work(struct
work_struct *work)
                        }
                }
        }
-       if (dev_priv->display.hpd_irq_setup)
-               dev_priv->display.hpd_irq_setup(dev_priv);
+       if (dev_priv->display_irqs_enabled) {
+               if (dev_priv->display.hpd_irq_setup)
+                       dev_priv->display.hpd_irq_setup(dev_priv);
+       }
        spin_unlock_irq(&dev_priv->irq_lock);

        intel_runtime_pm_put(dev_priv);
@@ -425,8 +427,10 @@ void intel_hpd_irq_handler(struct drm_i915_private
*dev_priv,
                }
        }

-       if (storm_detected)
-               dev_priv->display.hpd_irq_setup(dev_priv);
+       if (dev_priv->display_irqs_enabled) {
+               if (storm_detected)
+                       dev_priv->display.hpd_irq_setup(dev_priv);
+       }
        spin_unlock(&dev_priv->irq_lock);

        /*
@@ -471,10 +475,16 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
         * Interrupt setup is already guaranteed to be single-threaded, this is
         * just to make the assert_spin_locked checks happy.
         */
-       spin_lock_irq(&dev_priv->irq_lock);
-       if (dev_priv->display.hpd_irq_setup)
-               dev_priv->display.hpd_irq_setup(dev_priv);
-       spin_unlock_irq(&dev_priv->irq_lock);
+       if (dev_priv->display_irqs_enabled) {
+               intel_runtime_pm_get(dev_priv);
+
+               spin_lock_irq(&dev_priv->irq_lock);
+               if (dev_priv->display.hpd_irq_setup)
+                       dev_priv->display.hpd_irq_setup(dev_priv);
+               spin_unlock_irq(&dev_priv->irq_lock);
+
+               intel_runtime_pm_put(dev_priv);
+       }
 }</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
          <li>You are the assignee for the bug.</li>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>