<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_ASSIGNED "
   title="ASSIGNED - [bsw] execlists causes machine lockups"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=93467#c9">Comment # 9</a>
              on <a class="bz_bug_link 
          bz_status_ASSIGNED "
   title="ASSIGNED - [bsw] execlists causes machine lockups"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=93467">bug 93467</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>commit 3a7325e4989352c7a3150628e0f941573dffbf62
Author: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>>
Date:   Tue Mar 8 11:43:31 2016 +0000

    igt/gem_exec_nop: Add a basic test

    Demonstrate how trivial it is to lockup Braswell, at least my N3050 nuc,
    by saturating the interrupt handler with a few requests.

    References: <a class="bz_bug_link 
          bz_status_ASSIGNED "
   title="ASSIGNED - [bsw] execlists causes machine lockups"
   href="show_bug.cgi?id=93467">https://bugs.freedesktop.org/show_bug.cgi?id=93467</a>
    Signed-off-by: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>>

adds a basic test that reliably reproduces the issue on my Braswell. A simpler
fix is

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 53e5104..30d8bb7 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1829,7 +1829,7 @@ static irqreturn_t cherryview_irq_handler(int irq, void
*arg)
        /* IRQs are synced during runtime_suspend, we don't require a wakeref
*/
        disable_rpm_wakeref_asserts(dev_priv);

-       for (;;) {
+       do {
                master_ctl = I915_READ(GEN8_MASTER_IRQ) &
~GEN8_MASTER_IRQ_CONTROL;
                iir = I915_READ(VLV_IIR);

@@ -1857,7 +1857,7 @@ static irqreturn_t cherryview_irq_handler(int irq, void
*arg)

                I915_WRITE(GEN8_MASTER_IRQ, DE_MASTER_IRQ_CONTROL);
                POSTING_READ(GEN8_MASTER_IRQ);
-       }
+       } while (0);

        enable_rpm_wakeref_asserts(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 QA Contact for the bug.</li>
      </ul>
    </body>
</html>