<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [BAT BDW] sporadic WARNING: "Device suspended during HW access" during kms_pipe_crc_basic on pipe B/C"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=93699#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [BAT BDW] sporadic WARNING: "Device suspended during HW access" during kms_pipe_crc_basic on pipe B/C"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=93699">bug 93699</a>
              from <span class="vcard"><a class="email" href="mailto:ville.syrjala@linux.intel.com" title="Ville Syrjala <ville.syrjala@linux.intel.com>"> <span class="fn">Ville Syrjala</span></a>
</span></b>
        <pre>I'd say it's the same problem as in <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [BAT BYT regression] WARNING "Unclaimed register detected before reading register 0x186500""
   href="show_bug.cgi?id=93698">bug #93698</a>, namely that the modeset path
calls intel_pre_plane_update() somewhat unconditionally. A quick glance
suggests that we should just:

--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -13831,9 +13831,8 @@ static int intel_atomic_commit(struct drm_device *dev,
                if (!needs_modeset(crtc->state))
                        continue;

-               intel_pre_plane_update(intel_crtc);
-
                if (crtc_state->active) {
+                       intel_pre_plane_update(intel_crtc);
                        intel_crtc_disable_planes(crtc,
crtc_state->plane_mask);
                        dev_priv->display.crtc_disable(crtc);
                        intel_crtc->active = false;
@@ -13885,12 +13884,12 @@ static int intel_atomic_commit(struct drm_device
*dev,
                        hw_check = true;
                }

-               if (!modeset)
-                       intel_pre_plane_update(intel_crtc);
-
                if (crtc->state->active &&
-                   (crtc->state->planes_changed || update_pipe))
+                   (crtc->state->planes_changed || update_pipe)) {
+                       if (!modeset)
+                               intel_pre_plane_update(intel_crtc);
                        drm_atomic_helper_commit_planes_on_crtc(crtc_state);
+               }

                if (put_domains)
                        modeset_put_power_domains(dev_priv, put_domains);

but it's bit of mess all around so it's hard to be sure without more digging.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
          <li>You are on the CC list for the bug.</li>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>