<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - xorg-server 1.18.2 freeze desktop on i915"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=94515#c41">Comment # 41</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - xorg-server 1.18.2 freeze desktop on i915"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=94515">bug 94515</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>(In reply to Joakim Tjernlund from <a href="show_bug.cgi?id=94515#c39">comment #39</a>)
<span class="quote">> +if (warn_unless(msc - swap->msc < 1ull<<32))
> Should that be <= ?</span >

No. if msc was current + 1<<32 (swap->msc should be the current msc give or
take a vblank occurring between the start of PresentPixmap and the end of the
function), then (uint32_t)msc == swap->msc and the scheduled event returns
instantly. We then see that that the target msc hasn't occurred and requeue the
event, which fires instantly again. And we get trapped into the loop.

<span class="quote">> or possibly just cap the time to 1<<32 ?</span >

Possibly, but given the choice of reporting "I can't support this value" and
faking it, we should punt that decision up. It saves having to make a policy
decision in the driver.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>