<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Hi AlexBin,<br>
      <br>
      <blockquote type="cite">Missing kunmap mapping in <span
          style="font-family: Calibri, Arial, Helvetica, sans-serif;
          font-size: 16px;">vmalloc will </span>make kernel master page
        table incorrect.</blockquote>
      That's what I tried to explain yesterday, but unfortunately didn't
      had time to do so. There is not corruption of the kernel master
      page table in this case!<br>
      <br>
      The call of ttm_bo_kunmap is completely optional, take a look at
      amdgpu_ttm_io_mem_reserve() and amdgpu_ttm_io_mem_free().<br>
      <br>
      The aperture is kept mapped into the page tables for the whole
      time the driver is loaded. So this is a complete no-op and only
      done for consistency.<br>
      <br>
      <blockquote type="cite">
        <p>It is good that you agree that there is no real
          world bad example caused by my patch. I will not discuss
          whether it is an improvement or not now to save time for both
          of us.</p>
      </blockquote>
      Great at least we can now agree to completely drop this patch.<br>
      <br>
      Thanks,<br>
      Christian.<br>
      <br>
      Am 19.04.2017 um 21:30 schrieb Xie, AlexBin:<br>
    </div>
    <blockquote
cite="mid:MWHPR1201MB0045B04F77E1F1C6D37D24FBF2180@MWHPR1201MB0045.namprd12.prod.outlook.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
      <div id="divtagdefaultwrapper"
style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;"
        dir="ltr">
        <p>Hi Christian,</p>
        <p><br>
        </p>
        <p>Missing kunmap mapping in <span style="font-family: Calibri,
            Arial, Helvetica, sans-serif; font-size: 16px;">vmalloc
            will </span>make kernel master page table incorrect. I
          would not call such issue as completely harmless. Please note
          that AMD graphic driver can run in 32 bit system. In 32 bit
          system, vmalloc address space is much smaller than size of
          most GPU VRAM.</p>
        <p><br>
        </p>
        <p><span style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 16px;">amdgpu_bo_free_kernel has same
            issue as <span>amdgpu_vram_scratch_fini. 1. It calls <span>amdgpu_bo_reserve
                interruptible too. 2. It misses kunmap when <span>amdgpu_bo_reserve
                  returns error too. As result, </span>kernel master
                page table can become incorrect, or as you call
                it "completely harmless vmalloc space leaking". </span></span></span></p>
        <p><span style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 16px;"><span><span><br>
              </span></span></span></p>
        <p><span style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 16px;"><span><span>Because <span
                  style="font-family: Calibri, Arial, Helvetica,
                  sans-serif; font-size: 16px;">amdgpu_bo_free_kernel is
                  used in more places, such as psp command submission,
                  there will be bigger chance to have other usage
                  where signal is not blocked. This will become a real
                  bug.</span></span></span></span></p>
        <p><span style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 16px;"><br>
          </span></p>
        <p><span style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 16px;">I am thinking that we may fix
            the issue completely when TTM releases BO. But that is a
            bigger change.</span></p>
        <p><span style="font-family: Calibri, Arial, Helvetica,
            sans-serif; font-size: 16px;"><br>
          </span></p>
        <p>It is good that you agree that there is no real
          world bad example caused by my patch. I will not discuss
          whether it is an improvement or not now to save time for both
          of us.</p>
        <p><br>
        </p>
        <p>Thanks, </p>
        <p>Alex Bin Xie</p>
        <p><br>
        </p>
        <div style="color: rgb(0, 0, 0);">
          <hr tabindex="-1" style="display:inline-block; width:98%">
          <div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt"
              color="#000000" face="Calibri, sans-serif"><b>From:</b>
              Christian König <a class="moz-txt-link-rfc2396E" href="mailto:deathsimple@vodafone.de"><deathsimple@vodafone.de></a><br>
              <b>Sent:</b> Wednesday, April 19, 2017 7:50 AM<br>
              <b>To:</b> Xie, AlexBin; Zhou, David(ChunMing);
              <a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
              <b>Subject:</b> Re: [PATCH] dmr/amdgpu: Fix wrongly unref
              of BO</font>
            <div> </div>
          </div>
          <div>
            <div class="moz-cite-prefix">
              <blockquote type="cite">Without correctly kunmap, page
                table is corrupted. Page entries point to wrong memory
                locations. You might call it completely harmless. But I
                think this is a severe bug. Leaking memory is better
                than a corrupted page table. Think security.</blockquote>
              We are talking about the page tables for the vmalloc area
              in the kernel here, so no security problem. Leaking memory
              is much more problematic.<br>
              <br>
              <blockquote type="cite">
                <p>Would you provide any document and reference by
                  saying"<span
                    style="font-family:Calibri,Arial,Helvetica,sans-serif,EmojiFont,'Apple
                    Color Emoji','Segoe UI Emoji',NotoColorEmoji,'Segoe
                    UI Symbol','Android Emoji',EmojiSymbols;
                    font-size:16px"> It is impossible to receive a
                    signal during module load/unload"? For example, if
                    the unload stuck in a lock, can CTRL+C stop the
                    unload?</span></p>
              </blockquote>
              No, CTRL+C doesn't abort module load/unload. There have
              been patches to changes this a while ago, but IIRC it
              broke a whole bunch of driver relying on this.<br>
              <br>
              <blockquote type="cite">
                <p><span style="font-size:12pt;
                    font-family:Calibri,Arial,Helvetica,sans-serif">What
                    about there is some other return error? What about
                    in future somebody improve <span
                      style="font-family:Calibri,Arial,Helvetica,sans-serif;
                      font-size:16px">amdgpu_bo_reserve to return other
                      errors, then function <span>amdgpu_vram_scratch_fini</span>
                      becomes buggy?</span></span></p>
              </blockquote>
              Yes, that is indeed an issue. For example -EDEADLK is
              possible as well. That's why I said we should use
              amdgpu_bo_free_kernel() instead.<br>
              <br>
              <blockquote type="cite">
                <p>While I am thinking whether there is a better way for
                  the current situation, would you give a real world
                  example that my patch really not working? Then we can
                  address it.</p>
              </blockquote>
              I don't think there is because the driver can't receive a
              signal during load/unload, but the problem is rather that
              the patch doesn't improve the situation at all.<br>
              <br>
              Regards,<br>
              Christian.<br>
              <br>
              Am 19.04.2017 um 13:37 schrieb Xie, AlexBin:<br>
            </div>
            <blockquote type="cite">
              <div id="divtagdefaultwrapper" dir="ltr"
                style="font-size:12pt; color:#000000;
                font-family:Calibri,Arial,Helvetica,sans-serif">
                <p>Hi Christian,</p>
                <p><br>
                </p>
                <p>Without correctly kunmap, page table is corrupted.
                  Page entries point to wrong memory locations. You
                  might call it completely harmless. But I think this is
                  a severe bug. Leaking memory is better than a
                  corrupted page table. Think security.</p>
                <p><br>
                </p>
                <p>Would you provide any document and reference by
                  saying"<span
                    style="font-family:Calibri,Arial,Helvetica,sans-serif,EmojiFont,'Apple
                    Color Emoji','Segoe UI Emoji',NotoColorEmoji,'Segoe
                    UI Symbol','Android Emoji',EmojiSymbols;
                    font-size:16px"> It is impossible to receive a
                    signal during module load/unload"? For example, if
                    the unload stuck in a lock, can CTRL+C stop the
                    unload?</span></p>
                <p><span style=""><br>
                  </span></p>
                <p><span style="">If "<span
                      style="font-family:Calibri,Arial,Helvetica,sans-serif,EmojiFont,'Apple
                      Color Emoji','Segoe UI
                      Emoji',NotoColorEmoji,'Segoe UI Symbol','Android
                      Emoji',EmojiSymbols; font-size:16px">It is
                      impossible to receive a signal during module
                      load/unload", interruptible waiting is fine too,
                      because function </span></span><span
                    style="font-size:12pt;
                    font-family:Calibri,Arial,Helvetica,sans-serif">amdgpu_bo_reserve
                    will return successfully.</span></p>
                <p><span style="font-size:12pt;
                    font-family:Calibri,Arial,Helvetica,sans-serif"><br>
                  </span></p>
                <p><span style="font-size:12pt;
                    font-family:Calibri,Arial,Helvetica,sans-serif">What
                    about there is some other return error? What about
                    in future somebody improve <span
                      style="font-family:Calibri,Arial,Helvetica,sans-serif;
                      font-size:16px">amdgpu_bo_reserve to return other
                      errors, then function <span>amdgpu_vram_scratch_fini</span>
                      becomes buggy?</span></span></p>
                <p><span style=""><br>
                  </span></p>
                <p>While I am thinking whether there is a better way for
                  the current situation, would you give a real world
                  example that my patch really not working? Then we can
                  address it.</p>
                <p><br>
                </p>
                <p>Thanks,</p>
                <p>Alex Bin</p>
                <br>
                <div style="color:rgb(0,0,0)">
                  <hr tabindex="-1" style="display:inline-block;
                    width:98%">
                  <div id="divRplyFwdMsg" dir="ltr"><font
                      style="font-size:11pt" color="#000000"
                      face="Calibri, sans-serif"><b>From:</b> Christian
                      König
                      <a moz-do-not-send="true"
                        class="moz-txt-link-rfc2396E"
                        href="mailto:deathsimple@vodafone.de"><deathsimple@vodafone.de></a><br>
                      <b>Sent:</b> Wednesday, April 19, 2017 2:35 AM<br>
                      <b>To:</b> Xie, AlexBin; Zhou, David(ChunMing); <a
                        moz-do-not-send="true"
                        class="moz-txt-link-abbreviated"
                        href="mailto:amd-gfx@lists.freedesktop.org">
                        amd-gfx@lists.freedesktop.org</a><br>
                      <b>Subject:</b> Re: [PATCH] dmr/amdgpu: Fix
                      wrongly unref of BO</font>
                    <div> </div>
                  </div>
                  <div>
                    <div class="moz-cite-prefix">Hi AlexBin,<br>
                      <br>
                      the answer is ttm_bo_kunmap isn't called at all
                      and yes in the case of an iomap we leak the
                      address space reserved.<br>
                      <br>
                      But that is completely harmless on a 64bit system
                      compared to leaking the memory backing the address
                      space.<br>
                      <br>
                      Using <span style=""><span>amdgpu_bo_free_kernel()
                          instead of openly coding it here is probably a
                          good idea.<br>
                          <br>
                          Additional to that it's probably a good idea
                          to set the no_intr flag when reserving kernel
                          BOs. It is impossible to receive a signal
                          during module load/unload, but it's probably
                          better to document that in the code as well.<br>
                          <br>
                          Regards,<br>
                          Christian.<br>
                        </span></span><br>
                      Am 18.04.2017 um 20:54 schrieb Xie, AlexBin:<br>
                    </div>
                    <blockquote type="cite">
                      <div id="divtagdefaultwrapper" dir="ltr"
                        style="font-size:12pt; color:#000000;
                        font-family:Calibri,Arial,Helvetica,sans-serif">
                        Hi Christian,
                        <div><br>
                        </div>
                        <div>Have you found how/where/when? When you
                          said "<span
                            style="font-family:Calibri,Arial,Helvetica,sans-serif;
                            font-size:16px">mapping will just</span><span
style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:16px"> be
                            released a bit later on", you must know the
                            answer. </span></div>
                        <div><br>
                        </div>
                        <div>It is difficult to prove something does not
                          exist. Anyway, I will give it a try to prove
                          such "later on" does not exist.</div>
                        <div><br>
                        </div>
                        <div><span>Function ttm_bo_kunmap is the
                            only function to unmap. To prove this,
                            search <span>ttm_bo_map_iomap, only <span
                                style="">ttm_bo_kunmap use this enum to
                                correctly kunmap.</span></span></span><br>
                        </div>
                        <div><span><span><span style=""><br>
                              </span></span></span></div>
                        <div><span><span><span style=""><span>Function ttm_bo_kunmap
                                  is not called by ttm itself. This is a
                                  hint that all TTM delay delete
                                  mechanism or unref mechanism will NOT
                                  kunmap BO later on.</span><br>
                              </span></span></span></div>
                        <div><span><span><span style=""><span><br>
                                </span></span></span></span></div>
                        <div><span><span><span style=""><span><span
                                    style="">Function </span><span
                                    style="">ttm_bo_kunmap is called by
                                    AMDGPU function <span>amdgpu_bo_kunmap
                                      and <span>amdgpu_gem_prime_vunmap.</span></span></span><br>
                                </span></span></span></span></div>
                        <div><br>
                        </div>
                        <div>Search AMDGPU for <span style="">amdgpu_bo_kunmap.
                            All matches do not kunmap for scratch
                            VRAM BO.  <span>amdgpu_bo_free_kernel is a
                              suspect but the answer is still NO.</span></span></div>
                        <div><span style=""><span><br>
                            </span></span></div>
                        <div><span style=""><span>So all possibilities
                              are searched. Did I miss anything?</span></span></div>
                        <div><span style=""><span><br>
                            </span></span></div>
                        <div>Thanks,</div>
                        <div>Alex Bin Xie</div>
                        <div><br>
                        </div>
                      </div>
                      <hr tabindex="-1" style="display:inline-block;
                        width:98%">
                      <div id="divRplyFwdMsg" dir="ltr"><font
                          style="font-size:11pt" color="#000000"
                          face="Calibri, sans-serif"><b>From:</b> Xie,
                          AlexBin<br>
                          <b>Sent:</b> Tuesday, April 18, 2017 2:04:33
                          PM<br>
                          <b>To:</b> Christian König; Zhou,
                          David(ChunMing); <a moz-do-not-send="true"
                            class="moz-txt-link-abbreviated"
                            href="mailto:amd-gfx@lists.freedesktop.org">
                            amd-gfx@lists.freedesktop.org</a><br>
                          <b>Subject:</b> Re: [PATCH] dmr/amdgpu: Fix
                          wrongly unref of BO</font>
                        <div> </div>
                      </div>
                      <div>
                        <div id="divtagdefaultwrapper" dir="ltr"
                          style="font-size:12pt; color:#000000;
                          font-family:Calibri,Arial,Helvetica,sans-serif">
                          <p>Hi Christian,</p>
                          <p><br>
                          </p>
                          <p>Would you point out where/when will kunmap
                            happen for this BO when release? <span
                              style="font-size:12pt">It must be
                              somewhere </span><span
                              style="font-size:12pt"></span><span
                              style="font-size:12pt">in some function
                              calls</span><span style="font-size:12pt">.</span></p>
                          <p><span style="font-size:12pt"><br>
                            </span></p>
                          <p><span style="font-size:12pt">I checked
                              before I asked for review. But I did not
                              see such obvious kunmap function call.</span></p>
                          <p><span style="font-size:12pt"><br>
                            </span></p>
                          <p><span style="font-size:12pt">If so, there
                              should be a comment in function <span>amdgpu_vram_scratch_fini </span>to
                              avoid future confusion.</span></p>
                          <br>
                          Thanks,
                          <div>Alex Bin Xie<br>
                            <div style="color:rgb(0,0,0)">
                              <hr tabindex="-1"
                                style="display:inline-block; width:98%">
                              <div id="divRplyFwdMsg" dir="ltr"><font
                                  style="font-size:11pt" color="#000000"
                                  face="Calibri, sans-serif"><b>From:</b>
                                  Christian König
                                  <a moz-do-not-send="true"
                                    class="moz-txt-link-rfc2396E"
                                    href="mailto:deathsimple@vodafone.de"><deathsimple@vodafone.de></a><br>
                                  <b>Sent:</b> Tuesday, April 18, 2017
                                  1:46 PM<br>
                                  <b>To:</b> Xie, AlexBin; Zhou,
                                  David(ChunMing); <a
                                    moz-do-not-send="true"
                                    class="moz-txt-link-abbreviated"
                                    href="mailto:amd-gfx@lists.freedesktop.org">
                                    amd-gfx@lists.freedesktop.org</a><br>
                                  <b>Subject:</b> Re: [PATCH]
                                  dmr/amdgpu: Fix wrongly unref of BO</font>
                                <div> </div>
                              </div>
                              <div>
                                <div class="moz-cite-prefix">Hi AlexBin,<br>
                                  <br>
                                  No, David is right. This is a very
                                  common coding pattern in the kernel
                                  module.<br>
                                  <br>
                                  Freeing up a BO while there still
                                  exists a kernel mapping is perfectly
                                  ok, the mapping will just be released
                                  a bit later on.<br>
                                  <br>
                                  So this code is actually perfectly ok
                                  and just an optimization, but your
                                  patch breaks it and creates a memory
                                  leak.<br>
                                  <br>
                                  Regards,<br>
                                  Christian.<br>
                                  <br>
                                  Am 18.04.2017 um 17:17 schrieb Xie,
                                  AlexBin:<br>
                                </div>
                                <blockquote type="cite">
                                  <div id="divtagdefaultwrapper"
                                    dir="ltr" style="font-size:12pt;
                                    color:#000000;
                                    font-family:Calibri,Arial,Helvetica,sans-serif">
                                    <p>Hi David,</p>
                                    <p><br>
                                    </p>
                                    <p>When <span style="font-size:12pt;
font-family:Calibri,Arial,Helvetica,sans-serif">amdgpu_bo_reserve return
                                        errors, we cannot release the
                                        BO. This is not a memory leak.
                                        General speaking, memory leak
                                        is unnoticed and unintentional.</span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif"><br>
                                      </span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif">The
                                        caller of function <span>amdgpu_vram_scratch_fini
                                          ignores the return error
                                          value...</span></span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif"><span><br>
                                        </span></span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif"><span>The
                                          "memory leak" is not caused by
                                          my patch. It is caused because
                                          reserving BO fails.</span></span></p>
                                    <p><span
                                        style="font-family:Calibri,Arial,Helvetica,sans-serif;
                                        font-size:12pt"><br>
                                      </span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif"><span></span></span><span
style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt">This patch
                                        only aim to make function </span><span
style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt">amdgpu_vram_scratch_fini
                                        behave correctly.</span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif"><span><br>
                                        </span></span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif"><span>To
                                          follow up, we can add a
                                          warning message when
                                          <span
                                            style="font-family:Calibri,Arial,Helvetica,sans-serif;
                                            font-size:16px">amdgpu_bo_reserve</span>
                                          error happens in a different
                                          patch.</span></span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif"><span><br>
                                        </span></span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif">If
                                        function call </span><span
                                        style="font-family:Calibri,Arial,Helvetica,sans-serif;
                                        font-size:12pt">amdgpu_bo_reserve
                                        is changed to uninterruptible,
                                        this changes driver behaviour.
                                        Without a substantial issue, I
                                        would be cautious for such a
                                        change.</span></p>
                                    <p><span style="font-size:12pt;
                                        font-family:Calibri,Arial,Helvetica,sans-serif"><br>
                                      </span></p>
                                    <p>Thanks,</p>
                                    <p>Alex Bin Xie</p>
                                    <br>
                                    <div style="color:rgb(0,0,0)">
                                      <hr tabindex="-1"
                                        style="display:inline-block;
                                        width:98%">
                                      <div id="divRplyFwdMsg" dir="ltr"><font
                                          style="font-size:11pt"
                                          color="#000000" face="Calibri,
                                          sans-serif"><b>From:</b> Zhou,
                                          David(ChunMing)<br>
                                          <b>Sent:</b> Monday, April 17,
                                          2017 10:38 PM<br>
                                          <b>To:</b> Xie, AlexBin; <a
                                            moz-do-not-send="true"
                                            class="moz-txt-link-abbreviated"
href="mailto:amd-gfx@lists.freedesktop.org">
amd-gfx@lists.freedesktop.org</a><br>
                                          <b>Subject:</b> Re: [PATCH]
                                          dmr/amdgpu: Fix wrongly unref
                                          of BO</font>
                                        <div> </div>
                                      </div>
                                      <div><br>
                                        <br>
                                        <div class="moz-cite-prefix">On
                                          2017年04月17日 22:54, Xie,
                                          AlexBin wrote:<br>
                                        </div>
                                        <blockquote type="cite">
                                          <div id="divtagdefaultwrapper"
                                            dir="ltr"
                                            style="font-size:12pt;
                                            color:#000000;
                                            font-family:Calibri,Arial,Helvetica,sans-serif">
                                            <p>Hi David,</p>
                                            <p><br>
                                            </p>
                                            <p>Thanks for the comments.
                                              However, please have look
                                              at <span style="">amdgpu_bo_reserve</span>
                                              definition.</p>
                                            <p><span>static inline int
                                                amdgpu_bo_reserve(struct
                                                amdgpu_bo *bo, bool
                                                no_intr)</span><br>
                                            </p>
                                          </div>
                                        </blockquote>
                                        Ah, this is a wired wrapper for
                                        ttm_bo_reserve.<br>
                                        <br>
                                        <blockquote type="cite">
                                          <div id="divtagdefaultwrapper"
                                            dir="ltr"
                                            style="font-size:12pt;
                                            color:#000000;
                                            font-family:Calibri,Arial,Helvetica,sans-serif">
                                            <p><span><br>
                                              </span></p>
                                            <p><span>When we call this
                                                function like the
                                                following:</span></p>
                                            <p><span><span style="">   
                                                       r =
                                                  amdgpu_bo_reserve(adev->vram_scratch.robj,
                                                  false);</span><br
                                                  style="">
                                              </span><span
                                                style="font-size:12pt">The
                                                false means <span>interruptible</span>.</span><span><br>
                                              </span></p>
                                            <p><span
                                                style="font-size:12pt"><br>
                                              </span></p>
                                            <p><span
                                                style="font-size:12pt">On
                                                the other hand,  when <span
                                                  style="">amdgpu_bo_reserve
                                                  function return error,
                                                  why do we unref BO
                                                  without kunmap and
                                                  unpin the BO? This is
                                                  wrong
                                                  implementation when <span
                                                    style="">amdgpu_bo_reserve
                                                    return any error.</span></span></span></p>
                                          </div>
                                        </blockquote>
                                        Yeah, I see your mean, it's in
                                        driver un-loading, How about
                                        changing to no interruptible?
                                        Your patch will make a memleak
                                        if bo_reserve fails, but it
                                        seems not matter. I have no
                                        strong preference.<br>
                                        <br>
                                        Regards,<br>
                                        David Zhou<br>
                                        <blockquote type="cite">
                                          <div id="divtagdefaultwrapper"
                                            dir="ltr"
                                            style="font-size:12pt;
                                            color:#000000;
                                            font-family:Calibri,Arial,Helvetica,sans-serif">
                                            <p><br>
                                            </p>
                                            Thanks,
                                            <div>Alex Bin Xie<br>
                                              <br>
                                              <div
                                                style="color:rgb(0,0,0)">
                                                <div>
                                                  <hr tabindex="-1"
                                                    style="display:inline-block;
                                                    width:98%">
                                                  <div
                                                    id="x_divRplyFwdMsg"
                                                    dir="ltr"><font
                                                      style="font-size:11pt"
                                                      color="#000000"
                                                      face="Calibri,
                                                      sans-serif"><b>From:</b>
                                                      Zhou,
                                                      David(ChunMing)<br>
                                                      <b>Sent:</b>
                                                      Friday, April 14,
                                                      2017 12:00 AM<br>
                                                      <b>To:</b> Xie,
                                                      AlexBin; <a
                                                        moz-do-not-send="true"
class="moz-txt-link-abbreviated"
                                                        href="mailto:amd-gfx@lists.freedesktop.org">
amd-gfx@lists.freedesktop.org</a><br>
                                                      <b>Subject:</b>
                                                      Re: [PATCH]
                                                      dmr/amdgpu: Fix
                                                      wrongly unref of
                                                      BO</font>
                                                    <div> </div>
                                                  </div>
                                                </div>
                                                <font size="2"><span
                                                    style="font-size:10pt">
                                                    <div
                                                      class="PlainText"><br>
                                                      <br>
                                                      On 2017年04月14日
                                                      05:34, Alex Xie
                                                      wrote:<br>
                                                      > According to
                                                      comment of
                                                      amdgpu_bo_reserve,
                                                      amdgpu_bo_reserve<br>
                                                      > can return
                                                      with -ERESTARTSYS.
                                                      When this function
                                                      was interrupted<br>
                                                      > by a signal,
                                                      BO should not be
                                                      unref. Otherwise
                                                      the BO might be<br>
                                                      > released
                                                      while is kmapped
                                                      and pinned, or BO
                                                      MIGHT be deref<br>
                                                      > multiple
                                                      times, etc.<br>
                                                               r =
                                                      amdgpu_bo_reserve(adev->vram_scratch.robj,
                                                      false);<br>
                                                      we have specified
                                                      interruptible to
                                                      false, so
                                                      -ERESTARTSYS isn't
                                                      possible <br>
                                                      here.<br>
                                                      <br>
                                                      Thanks,<br>
                                                      David Zhou<br>
                                                      ><br>
                                                      > Change-Id:
                                                      If76071a768950a0d3ad9d5da7fcae04881807621<br>
                                                      >
                                                      Signed-off-by:
                                                      Alex Xie <a
                                                        moz-do-not-send="true"
class="moz-txt-link-rfc2396E" href="mailto:AlexBin.Xie@amd.com">
<AlexBin.Xie@amd.com></a><br>
                                                      > ---<br>
                                                      >  
                                                      drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
                                                      | 2 +-<br>
                                                      >   1 file
                                                      changed, 1
                                                      insertion(+), 1
                                                      deletion(-)<br>
                                                      ><br>
                                                      > diff --git
                                                      a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c<br>
                                                      > index
                                                      53996e3..1dcc2d1
                                                      100644<br>
                                                      > ---
                                                      a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c<br>
                                                      > +++
                                                      b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c<br>
                                                      > @@ -355,8
                                                      +355,8 @@ static
                                                      void
                                                      amdgpu_vram_scratch_fini(struct
                                                      amdgpu_device
                                                      *adev)<br>
>                amdgpu_bo_kunmap(adev->vram_scratch.robj);<br>
>                amdgpu_bo_unpin(adev->vram_scratch.robj);<br>
>                amdgpu_bo_unreserve(adev->vram_scratch.robj);<br>
                                                      > +            
amdgpu_bo_unref(&adev->vram_scratch.robj);<br>
                                                      >        }<br>
                                                      > -    
                                                      amdgpu_bo_unref(&adev->vram_scratch.robj);<br>
                                                      >   }<br>
                                                      >   <br>
                                                      >   /**<br>
                                                      <br>
                                                    </div>
                                                  </span></font></div>
                                            </div>
                                          </div>
                                        </blockquote>
                                        <br>
                                      </div>
                                    </div>
                                  </div>
                                  <br>
                                  <fieldset class="mimeAttachmentHeader"></fieldset>
                                  <br>
                                  <pre>_______________________________________________
amd-gfx mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a>
</pre>
                                </blockquote>
                                <p><br>
                                </p>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                      <br>
                      <fieldset class="mimeAttachmentHeader"></fieldset>
                      <br>
                      <pre>_______________________________________________
amd-gfx mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a>
</pre>
                    </blockquote>
                    <p><br>
                    </p>
                  </div>
                </div>
              </div>
              <br>
              <fieldset class="mimeAttachmentHeader"></fieldset>
              <br>
              <pre>_______________________________________________
amd-gfx mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a>
</pre>
            </blockquote>
            <p><br>
            </p>
          </div>
        </div>
      </div>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>