<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <meta http-equiv="Content-Type" content="text/html;
      charset=ISO-8859-1">
    <pre>we have reconsidered good suggestions and evaluated performance and complexity again.</pre>
    <pre>Timer Constant callback would continuously wake up CPU and entire
package, results in lower CPU and package C-state and shorter battery life,
especially for standby time.</pre>
    <pre>execbuf is a good one, and we had taken it into account too. execbuf
can happen much more frequent than flips. Synchronization and calculation
overhead were the main reasons that we tried to avoid using too much IA
resource to benefit GT.

Here's is a revised version of software turbo for BDW, please take a
look and see if there's any concern.</pre>
    <pre>For software turbo, it can be tough to find out a perfect solution
, may need some trade-off.

</pre>
    <pre>Revised design:<tt><span style="font-size: 11pt;">
GT busyness will still be calculated when page_flip comes in, then GT frequency 
will be adjusted accordingly. This point stays the same as previous design.</span></tt>
<tt><span style="font-size: 11pt;">For the cases no flip will happen(server or background task with no display activity) 
which is a previous concern,  set GT frequency to RP0(no turbo algorithm interfered in this
case).</span></tt>
</pre>
    <pre>Implementation details:<tt><span style="font-size: 11pt;">
</span></tt>1)<tt><span style="font-size: 11pt;"> Driver start with RP0 as GT frequency.</span></tt><tt><span style="font-size: 11pt; color: black;">
2)</span></tt><tt><span style="font-size: 7pt; color: black;"></span></tt><tt><span style="font-size: 11pt; color: black;"> When the flip comes, do the regular software turbo busyness calculation. Also set a timer with 250ms;</span></tt><tt><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></tt><tt><span style="font-size: 11pt;">
3)</span></tt><tt><span style="font-size: 11pt;"> If the flip keep coming in time, keep turbo algorithm, reset timer;</span></tt><tt><span style="font-size: 11pt;">
4)</span></tt><tt><span style="font-size: 7pt;"></span></tt><tt><span style="font-size: 11pt;"> When the timer is fired, set RP frequency to RP0 so that the background task will still be taken
care of(the RPS boost and idle need to be disabled in this situation).</span></tt>
5) <tt><span style="font-size: 7pt;"></span></tt><tt><span style="font-size: 11pt;">If the flip comes again, go to 2).</span></tt>
</pre>
    <pre>To recap, 
For most common cases, GT will run at a desired frequency as a
result of software turbo algorithm;           
For background workloads or no flip environment, GT will be running at RP0 with
shorter execution time to extend RC6 and pkg C state residency as long as power
is concerned. 
</pre>
    <pre>I'll start with the implementation if all concerns are ironed out. 
</pre>
    <pre>- Daisy
</pre>
    <meta name="ProgId" content="OneNote.File">
    <meta name="Generator" content="Microsoft OneNote 15">
    <div class="moz-cite-prefix"><br>
      On 7/25/2014 12:22 AM, Daniel Vetter wrote:<br>
    </div>
    <blockquote cite="mid:20140725072210.GF4747@phenom.ffwll.local"
      type="cite">
      <pre wrap="">On Thu, Jul 24, 2014 at 01:28:21PM -0700, Jesse Barnes wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">If that won't work, you could just use a timer, or tie into some other
event that happens when the GPU is busy (e.g. execbuf or retire) instead
of trying to tie into the display side of things.
</pre>
      </blockquote>
      <pre wrap="">
Yes, tying into a normal timer is probably best. At least I get the
impression that we only need something regular. Of course once the gpu is
idle we need to stop rearming that timer and restart it upon first batch
when transitioning out of idle.
-Daniel

</pre>
      <blockquote type="cite">
        <pre wrap="">
Jesse

On Tue, 15 Jul 2014 06:35:20 +0000
"Sun, Daisy" <a class="moz-txt-link-rfc2396E" href="mailto:daisy.sun@intel.com"><daisy.sun@intel.com></a> wrote:

</pre>
        <blockquote type="cite">
          <pre wrap="">Hi Daniel, Chris

The concern for traditional X and media server do make sense. I'll update the patch with RP_UP_EI_INTERRUPT as trigger instead of the page flip.
Thanks for the valuable input.

- Daisy

-----Original Message-----
From: <a class="moz-txt-link-abbreviated" href="mailto:daniel.vetter@ffwll.ch">daniel.vetter@ffwll.ch</a> [<a class="moz-txt-link-freetext" href="mailto:daniel.vetter@ffwll.ch">mailto:daniel.vetter@ffwll.ch</a>] On Behalf Of Daniel Vetter
Sent: Monday, July 14, 2014 12:04 AM
To: Sun, Daisy
Cc: Chris Wilson; <a class="moz-txt-link-abbreviated" href="mailto:intel-gfx@lists.freedesktop.org">intel-gfx@lists.freedesktop.org</a>
Subject: Re: [Intel-gfx] [PATCH v2] drm/i915/bdw: BDW Software Turbo

On Mon, Jul 14, 2014 at 8:59 AM, Daniel Vetter <a class="moz-txt-link-rfc2396E" href="mailto:daniel@ffwll.ch"><daniel@ffwll.ch></a> wrote:
</pre>
          <blockquote type="cite">
            <pre wrap="">On Mon, Jul 14, 2014 at 04:22:44AM +0000, Sun, Daisy wrote:
</pre>
            <blockquote type="cite">
              <pre wrap="">3) The function will be called when flip happened, this should cover 
most of the cases. One exception is background media process without 
any display output, it's relatively rare.  Please let me know if you 
have concern on other cases, I will try to cover it definitely.
</pre>
            </blockquote>
            <pre wrap="">
Traditional X never flips. And we kinda have to keep this working. 
Instead of checking when flipping we need to check at regular time 
intervals I guess, for as long as the gt is busy.
</pre>
          </blockquote>
          <pre wrap="">
Oh and transcode servers are a real thing apparently. They also never flip, and we actually care from a business pov ...
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - <a class="moz-txt-link-freetext" href="http://blog.ffwll.ch">http://blog.ffwll.ch</a>
_______________________________________________
Intel-gfx mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Intel-gfx@lists.freedesktop.org">Intel-gfx@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freedesktop.org/mailman/listinfo/intel-gfx">http://lists.freedesktop.org/mailman/listinfo/intel-gfx</a>

</pre>
        </blockquote>
        <pre wrap="">

-- 
Jesse Barnes, Intel Open Source Technology Center
</pre>
      </blockquote>
      <pre wrap="">
</pre>
    </blockquote>
    <br>
  </body>
</html>