<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body>
    And BTW <span style="color: rgb(0, 0, 0); font-family: "Segoe
      UI", "Segoe UI Web (West European)", "Segoe
      UI", -apple-system, BlinkMacSystemFont, Roboto,
      "Helvetica Neue", sans-serif; font-size: 14.6667px;
      background-color: rgb(255, 255, 255); display: inline !important;">amdgpu_ctx_fence_time()
      should probably be static.<br>
      <br>
      Christian.<br>
    </span><br>
    <div class="moz-cite-prefix">Am 12.05.21 um 08:55 schrieb Christian
      König:<br>
    </div>
    <blockquote type="cite"
      cite="mid:9b373f49-51ad-089c-2494-032b13a9a39c@gmail.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      In this case <span style="color: rgb(0, 0, 0); font-family:
        "Segoe UI", "Segoe UI Web (West European)",
        "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto,
        "Helvetica Neue", sans-serif; font-size: 14.6667px;
        background-color: rgb(255, 255, 255); display: inline
        !important;">amdgpu_ctx_fence_time should probably be changed to
        initialize the variable itself.<br>
        <br>
        That is really bad coding style otherwise.<br>
        <br>
        Christian.<br>
      </span><br>
      <div class="moz-cite-prefix">Am 11.05.21 um 20:14 schrieb Nieto,
        David M:<br>
      </div>
      <blockquote type="cite"
cite="mid:BYAPR12MB284099C33725C0BB0FDD8D48F4539@BYAPR12MB2840.namprd12.prod.outlook.com">
        <meta http-equiv="Content-Type" content="text/html;
          charset=windows-1252">
        <style type="text/css" style="display:none;">P {margin-top:0;margin-bottom:0;}</style>
        <p
          style="font-family:Arial;font-size:11pt;color:#0078D7;margin:5pt;"
          align="Left"> [AMD Official Use Only - Internal Distribution
          Only]<br>
        </p>
        <br>
        <div>
          <div style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 12pt; color: rgb(0, 0, 0);
            background-color: rgb(255, 255, 255);"> The local variables
            need to be initialized to zero, since <span style="color:
              rgb(0, 0, 0); font-family: "Segoe UI",
              "Segoe UI Web (West European)", "Segoe
              UI", -apple-system, BlinkMacSystemFont, Roboto,
              "Helvetica Neue", sans-serif; font-size:
              14.6667px; background-color: rgb(255, 255, 255); display:
              inline !important;">amdgpu_ctx_fence_time accumulates and
              does not initialize</span></div>
          <div style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 12pt; color: rgb(0, 0, 0);
            background-color: rgb(255, 255, 255);"> <span style="color:
              rgb(0, 0, 0); font-family: "Segoe UI",
              "Segoe UI Web (West European)", "Segoe
              UI", -apple-system, BlinkMacSystemFont, Roboto,
              "Helvetica Neue", sans-serif; font-size:
              14.6667px; background-color: rgb(255, 255, 255); display:
              inline !important;"><br>
            </span></div>
          <div style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 12pt; color: rgb(0, 0, 0);
            background-color: rgb(255, 255, 255);"> <span style="color:
              rgb(0, 0, 0); font-family: "Segoe UI",
              "Segoe UI Web (West European)", "Segoe
              UI", -apple-system, BlinkMacSystemFont, Roboto,
              "Helvetica Neue", sans-serif; font-size:
              14.6667px; background-color: rgb(255, 255, 255); display:
              inline !important;">David</span></div>
          <hr style="display:inline-block;width:98%" tabindex="-1">
          <div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt"
              face="Calibri, sans-serif" color="#000000"><b>From:</b>
              Christian König <a class="moz-txt-link-rfc2396E"
                href="mailto:ckoenig.leichtzumerken@gmail.com"
                moz-do-not-send="true"><ckoenig.leichtzumerken@gmail.com></a><br>
              <b>Sent:</b> Tuesday, May 11, 2021 12:53 AM<br>
              <b>To:</b> Nieto, David M <a
                class="moz-txt-link-rfc2396E"
                href="mailto:David.Nieto@amd.com" moz-do-not-send="true"><David.Nieto@amd.com></a>;
              <a class="moz-txt-link-abbreviated"
                href="mailto:amd-gfx@lists.freedesktop.org"
                moz-do-not-send="true">amd-gfx@lists.freedesktop.org</a>
              <a class="moz-txt-link-rfc2396E"
                href="mailto:amd-gfx@lists.freedesktop.org"
                moz-do-not-send="true"><amd-gfx@lists.freedesktop.org></a><br>
              <b>Subject:</b> Re: [PATCH 2/2] drm/amdgpu: fix fence
              calculation</font>
            <div> </div>
          </div>
          <div class="BodyFragment"><font size="2"><span
                style="font-size:11pt;">
                <div class="PlainText">Am 10.05.21 um 22:29 schrieb
                  David M Nieto:<br>
                  > The proper metric for fence utilization over
                  several<br>
                  > contexts is an harmonic mean, but such
                  calculation is<br>
                  > prohibitive in kernel space, so the code
                  approximates it.<br>
                  ><br>
                  > Because the approximation diverges when one
                  context has a<br>
                  > very small ratio compared with the other context,
                  this change<br>
                  > filter out ratios smaller that 0.01%<br>
                  ><br>
                  > Signed-off-by: David M Nieto <a
                    class="moz-txt-link-rfc2396E"
                    href="mailto:david.nieto@amd.com"
                    moz-do-not-send="true"><david.nieto@amd.com></a><br>
                  > Change-Id:
                  I5b6e0ce5f489a5f55855d35354a6a3653e9d613b<br>
                  > ---<br>
                  >   drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 13
                  ++++++++++++-<br>
                  >   drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h |  1 +<br>
                  >   2 files changed, 13 insertions(+), 1
                  deletion(-)<br>
                  ><br>
                  > diff --git
                  a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
                  b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c<br>
                  > index 9036c93b4a0c..89ee464b9424 100644<br>
                  > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c<br>
                  > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c<br>
                  > @@ -698,16 +698,27 @@ ktime_t
                  amdgpu_ctx_mgr_fence_usage(struct amdgpu_ctx_mgr *mgr,
                  uint32_t hwip,<br>
                  >        struct amdgpu_ctx_entity *centity;<br>
                  >        ktime_t total = 0, max = 0;<br>
                  >   <br>
                  > +<br>
                  <br>
                  Unrelated white space change.<br>
                  <br>
                  >        if (idx >= AMDGPU_MAX_ENTITY_NUM)<br>
                  >                return 0;<br>
                  >        idp = &mgr->ctx_handles;<br>
                  >        mutex_lock(&mgr->lock);<br>
                  >        idr_for_each_entry(idp, ctx, id) {<br>
                  > +             ktime_t ttotal = tmax =
                  ktime_set(0, 0);<br>
                  <br>
                  There should be a blank line between decleration and
                  code and please <br>
                  don't initialize local variables if it isn't
                  necessary.<br>
                  <br>
                  Christian.<br>
                  <br>
                  >                if (!ctx->entities[hwip][idx])<br>
                  >                        continue;<br>
                  >   <br>
                  >                centity =
                  ctx->entities[hwip][idx];<br>
                  > -             amdgpu_ctx_fence_time(ctx, centity,
                  &total, &max);<br>
                  > +             amdgpu_ctx_fence_time(ctx, centity,
                  &ttotal, &tmax);<br>
                  > +<br>
                  > +             /* Harmonic mean approximation
                  diverges for very small<br>
                  > +              * values. If ratio < 0.01%
                  ignore<br>
                  > +              */<br>
                  > +             if
                  (AMDGPU_CTX_FENCE_USAGE_MIN_RATIO(tmax, ttotal))<br>
                  > +                     continue;<br>
                  > +<br>
                  > +             total = ktime_add(total, ttotal);<br>
                  > +             max = ktime_after(tmax, max) ? tmax
                  : max;<br>
                  >        }<br>
                  >   <br>
                  >        mutex_unlock(&mgr->lock);<br>
                  > diff --git
                  a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h
                  b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h<br>
                  > index 10dcf59a5c6b..3541dfb059ec 100644<br>
                  > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h<br>
                  > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h<br>
                  > @@ -30,6 +30,7 @@ struct drm_file;<br>
                  >   struct amdgpu_fpriv;<br>
                  >   <br>
                  >   #define AMDGPU_MAX_ENTITY_NUM 4<br>
                  > +#define AMDGPU_CTX_FENCE_USAGE_MIN_RATIO(max,
                  total) (max > 16384ULL*total)<br>
                  >   <br>
                  >   struct amdgpu_ctx_entity {<br>
                  >        uint64_t                sequence;<br>
                  <br>
                </div>
              </span></font></div>
        </div>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>