<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO - [BYT] Offscreen tests performance drops to <1/3 due to power management"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=102336#c6">Comment # 6</a>
              on <a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO - [BYT] Offscreen tests performance drops to <1/3 due to power management"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=102336">bug 102336</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>Swapped out the revert for commit 177776dba04e4e02d46ec46d7927580eaeb106b6
Author: John Stultz <<a href="mailto:john.stultz@linaro.org">john.stultz@linaro.org</a>>
Date:   Fri Aug 25 15:57:04 2017 -0700

    time: Fix ktime_get_raw() issues caused by incorrect base accumulation

    In commit fc6eead7c1e2 ("time: Clean up CLOCK_MONOTONIC_RAW time
    handling"), I mistakenly added the following:

     /* Update the monotonic raw base */
     seconds = tk->raw_sec;
     nsec = (u32)(tk->tkr_raw.xtime_nsec >> tk->tkr_raw.shift);
     tk->tkr_raw.base = ns_to_ktime(seconds * NSEC_PER_SEC + nsec);

    Which adds the raw_sec value and the shifted down raw xtime_nsec
    to the base value.

    This is problematic as when calling ktime_get_raw(), we add the
    tk->tkr_raw.xtime_nsec and current offset, shift it down and add
    it to the raw base.

    This results in the shifted down tk->tkr_raw.xtime_nsec being
    added twice.

    My mistake, was that I was matching the monotonic base logic
    above:

     seconds = (u64)(tk->xtime_sec + tk->wall_to_monotonic.tv_sec);
     nsec = (u32) tk->wall_to_monotonic.tv_nsec;
     tk->tkr_mono.base = ns_to_ktime(seconds * NSEC_PER_SEC + nsec);

    Which adds the wall_to_monotonic.tv_nsec value, but not the
    tk->tkr_mono.xtime_nsec value to the base.

    The result of this is that ktime_get_raw() users (which are all
    internal users) see the raw time move faster then it should
    (the rate at which can vary with the current size of
    tkr_raw.xtime_nsec), which has resulted in at least problems
    with graphics rendering performance.

    To fix this, we simplify the tkr_raw.base accumulation to only
    accumulate the raw_sec portion, and do not include the
    tkr_raw.xtime_nsec portion, which will be added at read time.

in topic/core-for-CI</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>