<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Thanks, <br>
      <br>
      Reviewed-by: Lionel Landwerlin
      <a class="moz-txt-link-rfc2396E" href="mailto:lionel.g.landwerlin@intel.com"><lionel.g.landwerlin@intel.com></a><br>
      <br>
      On 18/07/18 16:24, Jason Ekstrand wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAOFGe94zdtf4DUcUP_TayOUOgOKOuFds-DakrGSvWb=VEkwzcg@mail.gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div dir="ltr">
        <div class="gmail_quote">
          <div dir="ltr">On Wed, Jul 18, 2018 at 3:08 AM Lionel
            Landwerlin <<a
              href="mailto:lionel.g.landwerlin@intel.com"
              moz-do-not-send="true">lionel.g.landwerlin@intel.com</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">On
            18/07/18 00:05, Jason Ekstrand wrote:<br>
            > For large buffers which span an entire l1 page table,
            we got the range<br>
            > calculations wrong.  In this case, we end up with an
            l1_start which is<br>
            > the first byte represented by the given l1 table and an
            l1_end which is<br>
            > the first byte after the range represented by the l1
            table.  Then<br>
            > l2_start_index == L2_index(l2_end) due to roll-over. 
            Instead, compute<br>
            > lN_end using (1Ull << shift) - 1 so that lN_end
            is the last byte in the<br>
            > range represented by the Nth level page table.  When we
            do this, we<br>
            > don't need the conditional expression anymore.<br>
            > ---<br>
            >   src/intel/tools/intel_dump_gpu.c | 12 ++++++------<br>
            >   1 file changed, 6 insertions(+), 6 deletions(-)<br>
            ><br>
            > diff --git a/src/intel/tools/intel_dump_gpu.c
            b/src/intel/tools/intel_dump_gpu.c<br>
            > index 766ba662d91..5a0283960c1 100644<br>
            > --- a/src/intel/tools/intel_dump_gpu.c<br>
            > +++ b/src/intel/tools/intel_dump_gpu.c<br>
            > @@ -457,28 +457,28 @@ map_ppgtt(uint64_t start,
            uint64_t size)<br>
            >   <br>
            >      for (uint64_t l4 = l4_start; l4 < l4_end; l4 +=
            (1ULL << 39)) {<br>
            >         uint64_t l3_start = max(l4, start &
            0xffffc0000000);<br>
            > -      uint64_t l3_end = min(l4 + (1ULL << 39),<br>
            > +      uint64_t l3_end = min(l4 + (1ULL << 39) -
            1,<br>
            >                               ((start + size - 1) |
            0x00003fffffff) & 0xffffffffffff);<br>
            >         uint64_t l3_start_idx = L3_index(l3_start);<br>
            > -      uint64_t l3_end_idx = L3_index(l3_start) >=
            l3_start_idx ? L3_index(l3_end) : 0x1ff;<br>
            > +      uint64_t l3_end_idx = L3_index(l3_start);<br>
            <br>
            uint64_t l3_end_idx = L3_index(l3_end);<br>
          </blockquote>
          <div><br>
          </div>
          <div>Right.  Fixed locally.  Review?<br>
          </div>
          <div> </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            >   <br>
            >         populate_ppgtt_table(L3_table(l4),
            l3_start_idx, l3_end_idx, 3);<br>
            >   <br>
            >         for (uint64_t l3 = l3_start; l3 < l3_end; l3
            += (1ULL << 30)) {<br>
            >            uint64_t l2_start = max(l3, start &
            0xffffffe00000);<br>
            > -         uint64_t l2_end = min(l3 + (1ULL <<
            30),<br>
            > +         uint64_t l2_end = min(l3 + (1ULL << 30)
            - 1,<br>
            >                                  ((start + size - 1) |
            0x0000001fffff) & 0xffffffffffff);<br>
            >            uint64_t l2_start_idx = L2_index(l2_start);<br>
            > -         uint64_t l2_end_idx = L2_index(l2_end) >=
            l2_start_idx ? L2_index(l2_end) : 0x1ff;<br>
            > +         uint64_t l2_end_idx = L2_index(l2_end);<br>
            >   <br>
            >            populate_ppgtt_table(L2_table(l3),
            l2_start_idx, l2_end_idx, 2);<br>
            >   <br>
            >            for (uint64_t l2 = l2_start; l2 < l2_end;
            l2 += (1ULL << 21)) {<br>
            >               uint64_t l1_start = max(l2, start &
            0xfffffffff000);<br>
            > -            uint64_t l1_end = min(l2 + (1ULL <<
            21),<br>
            > +            uint64_t l1_end = min(l2 + (1ULL <<
            21) - 1,<br>
            >                                     ((start + size - 1)
            | 0x000000000fff) & 0xffffffffffff);<br>
            >               uint64_t l1_start_idx =
            L1_index(l1_start);<br>
            > -            uint64_t l1_end_idx = L1_index(l1_end)
            >= l1_start_idx ? L1_index(l1_end) : 0x1ff;<br>
            > +            uint64_t l1_end_idx = L1_index(l1_end);<br>
            >   <br>
            >               populate_ppgtt_table(L1_table(l2),
            l1_start_idx, l1_end_idx, 1);<br>
            >            }<br>
            <br>
            <br>
          </blockquote>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
mesa-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>