<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Monk needs to answer this, but I don't
      think that this will work.<br>
      <br>
      This explanation even sounds like only one VF can use the feature
      at the same time, is that correct?<br>
      <br>
      Regards,<br>
      Christian.<br>
      <br>
      Am 20.04.20 um 14:08 schrieb Tao, Yintian:<br>
    </div>
    <blockquote type="cite" cite="mid:MN2PR12MB3039D470FCE5F13DF9AD9945E5D40@MN2PR12MB3039.namprd12.prod.outlook.com">
      
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]-->
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:等线;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@等线";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:微软雅黑;
        panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
        {font-family:"\@微软雅黑";}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
p.xmsonormal, li.xmsonormal, div.xmsonormal
        {mso-style-name:x_msonormal;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
p.xmsochpdefault, li.xmsochpdefault, div.xmsochpdefault
        {mso-style-name:x_msochpdefault;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
span.xmsohyperlink
        {mso-style-name:x_msohyperlink;
        color:#0563C1;
        text-decoration:underline;}
span.xmsohyperlinkfollowed
        {mso-style-name:x_msohyperlinkfollowed;
        color:#954F72;
        text-decoration:underline;}
span.xemailstyle17
        {mso-style-name:x_emailstyle17;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle25
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle26
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle29
        {mso-style-type:personal-reply;
        font-family:等线;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US">Hi  Monk, Christian
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US">According to the discussion with Jacob offline,
            UMD will only enable SPM feature when testing
          </span><span style="font-size:10.5pt;font-family:等线;color:red;background:yellow;mso-highlight:yellow" lang="EN-US">RGP</span><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US">.<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US">And under virtualization , only
          </span><span style="font-size:10.5pt;font-family:等线;color:red;background:yellow;mso-highlight:yellow" lang="EN-US">pp_one_vf</span><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US"> mode can test RGP.<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US">Therefore, whether we can directly use MMIO to
            READ/WRITE register for
          </span><span style="color:windowtext" lang="EN-US">RLC_SPM_MC_CNTL?<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">Best
            Regards<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">Yintian
            Tao</span><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线;color:windowtext" lang="EN-US"><o:p> </o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0cm 0cm 0cm">
            <p class="MsoNormal"><b><span style="color:windowtext" lang="EN-US">From:</span></b><span style="color:windowtext" lang="EN-US"> amd-gfx
                <a class="moz-txt-link-rfc2396E" href="mailto:amd-gfx-bounces@lists.freedesktop.org"><amd-gfx-bounces@lists.freedesktop.org></a>
                <b>On Behalf Of </b>Liu, Monk<br>
                <b>Sent:</b> 2020</span><span style="font-family:"微软雅黑",sans-serif;color:windowtext">年</span><span style="color:windowtext" lang="EN-US">4</span><span style="font-family:"微软雅黑",sans-serif;color:windowtext">月</span><span style="color:windowtext" lang="EN-US">20</span><span style="font-family:"微软雅黑",sans-serif;color:windowtext">日</span><span style="color:windowtext" lang="EN-US"> 16:33<br>
                <b>To:</b> Koenig, Christian
                <a class="moz-txt-link-rfc2396E" href="mailto:Christian.Koenig@amd.com"><Christian.Koenig@amd.com></a>; He, Jacob
                <a class="moz-txt-link-rfc2396E" href="mailto:Jacob.He@amd.com"><Jacob.He@amd.com></a><br>
                <b>Cc:</b> <a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
                <b>Subject:</b> RE: why we need to do infinite RLC_SPM
                register setting during VM flush<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">Christian</span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US"> </span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">What
            we want to do is like:</span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">Read
            reg value from RLC_SPM_MC_CNTL to tmp</span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">Set
            bits:3:0 to VMID  to tmp</span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">Write
            tmp to RLC_SPM_MC_CNTL</span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US"> </span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">I
            didn’t find any PM4 packet on GFX9/10 can achieve above goal
            ….
          </span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US"> </span><span lang="EN-US"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US"> </span><span lang="EN-US"><o:p></o:p></span></p>
        <div>
          <p class="MsoNormal"><span style="color:windowtext" lang="EN-US">_____________________________________</span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="font-size:12.0pt;background:white" lang="EN-US">Monk
              Liu|GPU Virtualization Team |</span><span style="font-size:12.0pt;color:#C82613;border:none
              windowtext 1.0pt;padding:0cm;background:white" lang="EN-US">AMD</span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:windowtext" lang="EN-US"><img style="width:.8333in;height:.8333in" id="_x0000_i1025" src="cid:part1.BF021B7C.4820FFBB@amd.com" alt="sig-cloud-gpu" class="" width="80" height="80"></span><span lang="EN-US"><o:p></o:p></span></p>
        </div>
        <p class="MsoNormal"><span style="color:windowtext" lang="EN-US"> </span><span lang="EN-US"><o:p></o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0cm 0cm 0cm">
            <p class="MsoNormal"><b><span style="color:windowtext" lang="EN-US">From:</span></b><span style="color:windowtext" lang="EN-US"> Christian König
                <<a href="mailto:ckoenig.leichtzumerken@gmail.com" moz-do-not-send="true">ckoenig.leichtzumerken@gmail.com</a>>
                <br>
                <b>Sent:</b> Monday, April 20, 2020 4:03 PM<br>
                <b>To:</b> Liu, Monk <<a href="mailto:Monk.Liu@amd.com" moz-do-not-send="true">Monk.Liu@amd.com</a>>;
                He, Jacob <<a href="mailto:Jacob.He@amd.com" moz-do-not-send="true">Jacob.He@amd.com</a>>;
                Koenig, Christian <<a href="mailto:Christian.Koenig@amd.com" moz-do-not-send="true">Christian.Koenig@amd.com</a>><br>
                <b>Cc:</b> <a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true">amd-gfx@lists.freedesktop.org</a><br>
                <b>Subject:</b> Re: why we need to do infinite RLC_SPM
                register setting during VM flush</span><span lang="EN-US"><o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
        <div>
          <p class="MsoNormal"><span lang="EN-US">I would also prefer to
              update the SPM VMID register using PM4 packets instead of
              the current handling.<br>
              <br>
              Regards,<br>
              Christian.<br>
              <br>
              Am 20.04.20 um 09:50 schrieb Liu, Monk:<o:p></o:p></span></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal"><span lang="EN-US">I just try to explain
              what I want to do here, no real patch formalized yet
              <o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
          <div>
            <p class="MsoNormal"><span lang="EN-US">_____________________________________<o:p></o:p></span></p>
            <p class="MsoNormal"><span style="font-size:12.0pt;background:white" lang="EN-US">Monk
                Liu|GPU Virtualization Team |</span><span style="font-size:12.0pt;color:#C82613;border:none
                windowtext 1.0pt;padding:0cm;background:white" lang="EN-US">AMD</span><span lang="EN-US"><o:p></o:p></span></p>
            <p class="MsoNormal"><span lang="EN-US"><img style="width:.8333in;height:.8333in" id="Picture_x0020_1" src="cid:part1.BF021B7C.4820FFBB@amd.com" alt="sig-cloud-gpu" class="" width="80" height="80" border="0"><o:p></o:p></span></p>
          </div>
          <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
          <div>
            <div style="border:none;border-top:solid #E1E1E1
              1.0pt;padding:3.0pt 0cm 0cm 0cm">
              <p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> He, Jacob
                  <a href="mailto:Jacob.He@amd.com" moz-do-not-send="true"><Jacob.He@amd.com></a>
                  <br>
                  <b>Sent:</b> Monday, April 20, 2020 3:45 PM<br>
                  <b>To:</b> Liu, Monk <a href="mailto:Monk.Liu@amd.com" moz-do-not-send="true"><Monk.Liu@amd.com></a>;
                  Koenig, Christian
                  <a href="mailto:Christian.Koenig@amd.com" moz-do-not-send="true"><Christian.Koenig@amd.com></a><br>
                  <b>Cc:</b> <a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true">amd-gfx@lists.freedesktop.org</a><br>
                  <b>Subject:</b> Re: why we need to do infinite RLC_SPM
                  register setting during VM flush<o:p></o:p></span></p>
            </div>
          </div>
          <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
          <p style="margin:15.0pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#0078D7" lang="EN-US">[AMD Official Use Only - Internal
              Distribution Only]</span><span lang="EN-US"><o:p></o:p></span></p>
          <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
          <div>
            <div>
              <p class="MsoNormal"><span style="font-size:12.0pt" lang="EN-US">Do you miss a file which adds </span><span style="color:#201F1E;background:white" lang="EN-US">spm_updated</span><span style="font-size:12.0pt" lang="EN-US"> to vm
                  structure?</span><span lang="EN-US"><o:p></o:p></span></p>
            </div>
            <div class="MsoNormal" style="text-align:center" align="center"><span lang="EN-US">
                <hr width="98%" size="2" align="center">
              </span></div>
            <div id="divRplyFwdMsg">
              <p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Liu, Monk <<a href="mailto:Monk.Liu@amd.com" moz-do-not-send="true">Monk.Liu@amd.com</a>><br>
                  <b>Sent:</b> Monday, April 20, 2020 3:32 PM<br>
                  <b>To:</b> He, Jacob <<a href="mailto:Jacob.He@amd.com" moz-do-not-send="true">Jacob.He@amd.com</a>>;
                  Koenig, Christian <<a href="mailto:Christian.Koenig@amd.com" moz-do-not-send="true">Christian.Koenig@amd.com</a>><br>
                  <b>Cc:</b> <a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true">amd-gfx@lists.freedesktop.org</a>
                  <<a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true">amd-gfx@lists.freedesktop.org</a>><br>
                  <b>Subject:</b> why we need to do infinite RLC_SPM
                  register setting during VM flush
                  <o:p></o:p></span></p>
              <div>
                <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
              </div>
            </div>
            <div>
              <div>
                <p class="xmsonormal"><span lang="EN-US">Hi Jaco &
                    Christian<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">As titled ,
                    check below patch:<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">commit
                    10790a09ea584cc832353a5c2a481012e5e31a13<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">Author: Jacob
                    He <<a href="mailto:jacob.he@amd.com" moz-do-not-send="true">jacob.he@amd.com</a>><o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">Date:   Fri Feb
                    28 20:24:41 2020 +0800<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">    drm/amdgpu:
                    Update SPM_VMID with the job's vmid when application
                    reserves the vmid<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">    SPM access
                    the video memory according to SPM_VMID. It should be
                    updated<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">    with the
                    job's vmid right before the job is scheduled.
                    SPM_VMID is a<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">    global
                    resource<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">    Change-Id:
                    Id3881908960398f87e7c95026a54ff83ff826700<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">   
                    Signed-off-by: Jacob He <<a href="mailto:jacob.he@amd.com" moz-do-not-send="true">jacob.he@amd.com</a>><o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">   
                    Reviewed-by: Christian König <<a href="mailto:christian.koenig@amd.com" moz-do-not-send="true">christian.koenig@amd.com</a>><o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">diff --git
                    a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
                    b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">index
                    6e6fc8c..ba2236a 100644<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">---
                    a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+++
                    b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">@@ -1056,8
                    +1056,12 @@ int amdgpu_vm_flush(struct amdgpu_ring
                    *ring, struct amdgpu_job *job,<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">        struct
                    dma_fence *fence = NULL;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">        bool
                    pasid_mapping_needed = false;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">       
                    unsigned patch_offset = 0;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+       bool
                    update_spm_vmid_needed = (job->vm &&
                    (job->vm->reserved_vmid[vmhub] != NULL));<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">        int r;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+       if
                    (update_spm_vmid_needed &&
                    adev->gfx.rlc.funcs->update_spm_vmid)<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+              
                    adev->gfx.rlc.funcs->update_spm_vmid(adev,
                    job->vmid);<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">        if
                    (amdgpu_vmid_had_gpu_reset(adev, id)) {<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">               
                    gds_switch_needed = true;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">               
                    vm_flush_needed = true;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">this
                    update_spm_vmid() looks an completely overkill to
                    me, we only need to do it once for its VM …<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">in SRIOV the
                    register reading/writing for update_spm_vmid() is
                    now carried by KIQ thus there is too much burden on
                    KIQ for such unnecessary jobs …<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">I want to
                    change it to only do it once per VM, like:<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">diff --git
                    a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
                    b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">index
                    6e6fc8c..ba2236a 100644<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">---
                    a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+++
                    b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">@@ -1056,8
                    +1056,12 @@ int amdgpu_vm_flush(struct amdgpu_ring
                    *ring, struct amdgpu_job *job,<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">        struct
                    dma_fence *fence = NULL;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">       bool
                    pasid_mapping_needed = false;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">       
                    unsigned patch_offset = 0;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+       bool
                    update_spm_vmid_needed = (job->vm &&
                    (job->vm->reserved_vmid[vmhub] != NULL));<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">        int r;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+       if
                    (update_spm_vmid_needed &&
                    adev->gfx.rlc.funcs->update_spm_vmid
                    &&  !vm->spm_updated) {<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+              
                    adev->gfx.rlc.funcs->update_spm_vmid(adev,
                    job->vmid);
                    <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+              
                    vm->spm_updated = true;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">+       }<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">        if
                    (amdgpu_vmid_had_gpu_reset(adev, id)) {<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">               
                    gds_switch_needed = true;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">               
                    vm_flush_needed = true;<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">what do you
                    think ?<o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">P.S.: the best
                    way is to let GFX ring itself to do the
                    update_spm_vmid() instead of let CPU doing it, e.g.:
                    we put more PM4 command in VM-FLUSH packets ….
                    <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">But I prefer
                    the simple way first like I demonstrated above
                    <o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US">_____________________________________<o:p></o:p></span></p>
                <p class="xmsonormal"><span style="font-size:12.0pt;background:white" lang="EN-US">Monk Liu|GPU Virtualization Team |</span><span style="font-size:12.0pt;color:#C82613;border:none
                    windowtext 1.0pt;padding:0cm;background:white" lang="EN-US">AMD</span><span lang="EN-US"><o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"><img style="width:.8333in;height:.8333in" id="x_Picture_x0020_1" src="cid:part1.BF021B7C.4820FFBB@amd.com" alt="sig-cloud-gpu" class="" width="80" height="80" border="0"><o:p></o:p></span></p>
                <p class="xmsonormal"><span lang="EN-US"> <o:p></o:p></span></p>
              </div>
            </div>
          </div>
          <p class="MsoNormal"><span lang="EN-US"><br>
              <br>
              <br>
              <o:p></o:p></span></p>
          <pre><span lang="EN-US">_______________________________________________<o:p></o:p></span></pre>
          <pre><span lang="EN-US">amd-gfx mailing list<o:p></o:p></span></pre>
          <pre><span lang="EN-US"><a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true">amd-gfx@lists.freedesktop.org</a><o:p></o:p></span></pre>
          <pre><span lang="EN-US"><a href="https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7Cyintian.tao%40amd.com%7C94ed105b251d4c2629cc08d7e5056f39%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637229683834893085&sdata=IJiVlGsX0rL0%2FcTvlSWquG%2F3aufz9R%2FvMlkk%2BpVaQSM%3D&reserved=0" moz-do-not-send="true">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><o:p></o:p></span></pre>
        </blockquote>
        <p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
      </div>
    </blockquote>
    <br>
  </body>
</html>