<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    Hi Jack,<br>
    <br>
    Am 10.02.23 um 10:51 schrieb Xiao, Jack:<br>
    <blockquote type="cite" cite="mid:MW3PR12MB44588B8BD8DD804DA96DBC65EFDE9@MW3PR12MB4458.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-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:DengXian;
        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:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}p.msipheaderdf3d92d6, li.msipheaderdf3d92d6, div.msipheaderdf3d92d6
        {mso-style-name:msipheaderdf3d92d6;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.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]-->
      <p class="msipheaderdf3d92d6" style="margin:0" align="Left"><span style="font-size:10.0pt;font-family:Arial;color:#0000FF">[AMD
          Official Use Only - General]</span></p>
      <br>
      <div class="WordSection1">
        <p class="MsoNormal">Hi Christian,<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">>> Allocating buffers temporary for
          stuff like that is illegal during resume.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Can you *<b>deeply</b>* explain why it is
          illegal during ip late_init stage which is a part stage of
          resume?</p>
      </div>
    </blockquote>
    <br>
    Well no, I don't have the time to explain this to everybody
    individually.<br>
    <br>
    <blockquote type="cite" cite="mid:MW3PR12MB44588B8BD8DD804DA96DBC65EFDE9@MW3PR12MB4458.namprd12.prod.outlook.com">
      <div class="WordSection1">
        <p class="MsoNormal"><o:p></o:p></p>
        <p class="MsoNormal">In my understanding, after gmc ready,
          driver can allocate/free kernel bo, and after SDMA ready,
          <o:p></o:p></p>
        <p class="MsoNormal">the eviction should be ready. What else
          prevent driver doing that during resume?</p>
      </div>
    </blockquote>
    <br>
    The driver are resumed before the core Linux memory management is
    ready to serve allocations. E.g. swap for example isn't turned on
    yet.<br>
    <br>
    This means that this stuff only worked because we were able to
    allocate memory from the pool which isn't guaranteed in any way. <br>
    <br>
    <blockquote type="cite" cite="mid:MW3PR12MB44588B8BD8DD804DA96DBC65EFDE9@MW3PR12MB4458.namprd12.prod.outlook.com">
      <div class="WordSection1">
        <p class="MsoNormal"><o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">>> I strongly suggest to just remove
          the MES test. It's abusing the kernel ring interface in a way
          we didn't want anyway and is currently replaced by Shahanks
          work.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">The kernel mes unit test is very meaningful
          and important to catch MES firmware issue at first time before
          <o:p></o:p></p>
        <p class="MsoNormal">issue went spread to other components like
          kfd/umd to avoid the problem complicated, Otherwise, the issue
          <o:p></o:p></p>
        <p class="MsoNormal">would become hard to catch and debug. <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Secondly, for mes unit test is
          self-containing and no dependency, it is a part of milestone
          to qualify MES ready,<o:p></o:p></p>
        <p class="MsoNormal">indicating that it can deliver to other
          component especially during brinup. It is likely ring test and
          ib test indicating
          <o:p></o:p></p>
        <p class="MsoNormal">gfx is ready to go. After totally
          transitioning to gfx user queue, mes unit test may be the only
          one unit test which<o:p></o:p></p>
        <p class="MsoNormal">can indicate gfx is ready at the very early
          stage of bringup when UMD is not ready.</p>
      </div>
    </blockquote>
    <br>
    Alex and I are the maintainers of the driver who are deciding stuff
    like that and at least I don't really buy that argument. The ring,
    IB and benchmark tests are in the kernel module because they are
    simple.<br>
    <br>
    If we have a complicated unit test like simulating creating an MES
    user queue to test the firmware functionality than that's really
    overkill. Especially when you need to allocate memory for it.<br>
    <br>
    We previously had people requesting to add shader code and other
    complicated testing and rejected that as well because it just bloat
    up the kernel driver unnecessarily.<br>
    <br>
    If we can modify the MES test to not abuse the amdgpu_ring structure
    only work with memory from the SA for example we could keep this,
    but not really in the current state.<br>
    <br>
    Regards,<br>
    Christian.<br>
    <br>
    <blockquote type="cite" cite="mid:MW3PR12MB44588B8BD8DD804DA96DBC65EFDE9@MW3PR12MB4458.namprd12.prod.outlook.com">
      <div class="WordSection1">
        <p class="MsoNormal"><o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Regards,<o:p></o:p></p>
        <p class="MsoNormal">Jack<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b>From:</b> Koenig, Christian
              <a class="moz-txt-link-rfc2396E" href="mailto:Christian.Koenig@amd.com"><Christian.Koenig@amd.com></a> <br>
              <b>Sent:</b> Friday, February 10, 2023 4:08 PM<br>
              <b>To:</b> Quan, Evan <a class="moz-txt-link-rfc2396E" href="mailto:Evan.Quan@amd.com"><Evan.Quan@amd.com></a>; Christian
              König <a class="moz-txt-link-rfc2396E" href="mailto:ckoenig.leichtzumerken@gmail.com"><ckoenig.leichtzumerken@gmail.com></a>; Xiao, Jack
              <a class="moz-txt-link-rfc2396E" href="mailto:Jack.Xiao@amd.com"><Jack.Xiao@amd.com></a>; <a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>;
              Deucher, Alexander <a class="moz-txt-link-rfc2396E" href="mailto:Alexander.Deucher@amd.com"><Alexander.Deucher@amd.com></a><br>
              <b>Subject:</b> Re: [PATCH] drm/amdgpu: only WARN freeing
              buffers when DMA is unavailable<o:p></o:p></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal" style="margin-bottom:12.0pt">Hi Evan,<br>
          <br>
          yeah, exactly that's what this warning should prevent.
          Allocating buffers temporary for stuff like that is illegal
          during resume.<br>
          <br>
          I strongly suggest to just remove the MES test. It's abusing
          the kernel ring interface in a way we didn't want anyway and
          is currently replaced by Shahanks work.<br>
          <br>
          Regards,<br>
          Christian.<o:p></o:p></p>
        <div>
          <p class="MsoNormal">Am 10.02.23 um 05:12 schrieb Quan, Evan:<o:p></o:p></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="msipheaderdf3d92d6" style="margin:0in"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:blue">[AMD
              Official Use Only - General]</span><o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">Hi Jack,<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">Are you trying to fix the call trace
            popped up on resuming below?<o:p></o:p></p>
          <p class="MsoNormal">It seems mes created some bo for its self
            test and freed it up later at the final stage of the
            resuming process.
            <o:p></o:p></p>
          <p class="MsoNormal">All these happened before the in_suspend
            flag cleared. And that triggered the call trace.<o:p></o:p></p>
          <p class="MsoNormal">Is my understanding correct?<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">[74084.799260] WARNING: CPU: 2 PID: 2891
            at drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:425
            amdgpu_bo_free_kernel+0xfc/0x110 [amdgpu]<o:p></o:p></p>
          <p class="MsoNormal">[74084.811019] Modules linked in:
            nls_iso8859_1 amdgpu(OE) iommu_v2 gpu_sched drm_buddy
            drm_ttm_helper ttm drm_display_helper drm_kms_helper
            i2c_algo_bit fb_sys_fops syscopyarea sysfillrect sysimgblt
            snd_sm<o:p></o:p></p>
          <p class="MsoNormal">[74084.811042]  ip_tables x_tables
            autofs4 hid_logitech_hidpp hid_logitech_dj hid_generic
            e1000e usbhid ptp uas hid video i2c_i801 ahci pps_core
            crc32_pclmul i2c_smbus usb_storage libahci wmi<o:p></o:p></p>
          <p class="MsoNormal">[74084.914519] CPU: 2 PID: 2891 Comm:
            kworker/u16:38 Tainted: G        W IOE      6.0.0-custom #1<o:p></o:p></p>
          <p class="MsoNormal">[74084.923146] Hardware name: ASUS System
            Product Name/PRIME Z390-A, BIOS 2004 11/02/2021<o:p></o:p></p>
          <p class="MsoNormal">[74084.931074] Workqueue: events_unbound
            async_run_entry_fn<o:p></o:p></p>
          <p class="MsoNormal">[74084.936393] RIP:
            0010:amdgpu_bo_free_kernel+0xfc/0x110 [amdgpu]<o:p></o:p></p>
          <p class="MsoNormal">[74084.942422] Code: 00 4d 85 ed 74 08 49
            c7 45 00 00 00 00 00 4d 85 e4 74 08 49 c7 04 24 00 00 00 00
            5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc <0f> 0b
            e9 39 ff ff ff 3d 00 fe ff ff 0f 85 75 96 47 00 ebf<o:p></o:p></p>
          <p class="MsoNormal">[74084.961199] RSP: 0000:ffffbed6812ebb90
            EFLAGS: 00010202<o:p></o:p></p>
          <p class="MsoNormal">[74084.966435] RAX: 0000000000000000 RBX:
            ffffbed6812ebc50 RCX: 0000000000000000<o:p></o:p></p>
          <p class="MsoNormal">[74084.973578] RDX: ffffbed6812ebc70 RSI:
            ffffbed6812ebc60 RDI: ffffbed6812ebc50<o:p></o:p></p>
          <p class="MsoNormal">[74084.980725] RBP: ffffbed6812ebbb8 R08:
            0000000000000000 R09: 00000000000001ff<o:p></o:p></p>
          <p class="MsoNormal">[74084.987869] R10: ffffbed6812ebb40 R11:
            0000000000000000 R12: ffffbed6812ebc70<o:p></o:p></p>
          <p class="MsoNormal">[74084.995015] R13: ffffbed6812ebc60 R14:
            ffff963a2945cc00 R15: ffff9639c7da5630<o:p></o:p></p>
          <p class="MsoNormal">[74085.002160] FS: 
            0000000000000000(0000) GS:ffff963d1dc80000(0000)
            knlGS:0000000000000000<o:p></o:p></p>
          <p class="MsoNormal">[74085.010262] CS:  0010 DS: 0000 ES:
            0000 CR0: 0000000080050033<o:p></o:p></p>
          <p class="MsoNormal">[74085.016016] CR2: 0000000000000000 CR3:
            0000000377c0a001 CR4: 00000000003706e0<o:p></o:p></p>
          <p class="MsoNormal">[74085.023164] DR0: 0000000000000000 DR1:
            0000000000000000 DR2: 0000000000000000<o:p></o:p></p>
          <p class="MsoNormal">[74085.030307] DR3: 0000000000000000 DR6:
            00000000fffe0ff0 DR7: 0000000000000400<o:p></o:p></p>
          <p class="MsoNormal">[74085.037453] Call Trace:<o:p></o:p></p>
          <p class="MsoNormal">[74085.039911]  <TASK><o:p></o:p></p>
          <p class="MsoNormal">[74085.042023] 
            amdgpu_mes_self_test+0x385/0x460 [amdgpu]<o:p></o:p></p>
          <p class="MsoNormal">[74085.047293] 
            mes_v11_0_late_init+0x44/0x50 [amdgpu]<o:p></o:p></p>
          <p class="MsoNormal">[74085.052291] 
            amdgpu_device_ip_late_init+0x50/0x270 [amdgpu]<o:p></o:p></p>
          <p class="MsoNormal">[74085.058032] 
            amdgpu_device_resume+0xb0/0x2d0 [amdgpu]<o:p></o:p></p>
          <p class="MsoNormal">[74085.063187] 
            amdgpu_pmops_resume+0x37/0x70 [amdgpu]<o:p></o:p></p>
          <p class="MsoNormal">[74085.068162]  pci_pm_resume+0x68/0x100<o:p></o:p></p>
          <p class="MsoNormal">[74085.071836]  ?
            pci_legacy_resume+0x80/0x80<o:p></o:p></p>
          <p class="MsoNormal">[74085.075943] 
            dpm_run_callback+0x4c/0x160<o:p></o:p></p>
          <p class="MsoNormal">[74085.079873]  device_resume+0xad/0x210<o:p></o:p></p>
          <p class="MsoNormal">[74085.083546]  async_resume+0x1e/0x40<o:p></o:p></p>
          <p class="MsoNormal">[74085.087046] 
            async_run_entry_fn+0x30/0x120<o:p></o:p></p>
          <p class="MsoNormal">[74085.091152] 
            process_one_work+0x21a/0x3f0<o:p></o:p></p>
          <p class="MsoNormal">[74085.095173]  worker_thread+0x50/0x3e0<o:p></o:p></p>
          <p class="MsoNormal">[74085.098845]  ?
            process_one_work+0x3f0/0x3f0<o:p></o:p></p>
          <p class="MsoNormal">[74085.103039]  kthread+0xfa/0x130<o:p></o:p></p>
          <p class="MsoNormal">[74085.106189]  ?
            kthread_complete_and_exit+0x20/0x20<o:p></o:p></p>
          <p class="MsoNormal">[74085.110993]  ret_from_fork+0x1f/0x30<o:p></o:p></p>
          <p class="MsoNormal">[74085.114576]  </TASK><o:p></o:p></p>
          <p class="MsoNormal">[74085.116773] ---[ end trace
            0000000000000000 ]---<o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">BR<o:p></o:p></p>
          <p class="MsoNormal">Evan<o:p></o:p></p>
          <div style="border:none;border-left:solid blue
            1.5pt;padding:0in 0in 0in 4.0pt">
            <div>
              <div style="border:none;border-top:solid #E1E1E1
                1.0pt;padding:3.0pt 0in 0in 0in">
                <p class="MsoNormal"><b>From:</b> amd-gfx <a href="mailto:amd-gfx-bounces@lists.freedesktop.org" moz-do-not-send="true">
                    <amd-gfx-bounces@lists.freedesktop.org></a> <b>On
                    Behalf Of </b>Christian König<br>
                  <b>Sent:</b> Monday, February 6, 2023 5:00 PM<br>
                  <b>To:</b> Xiao, Jack <a href="mailto:Jack.Xiao@amd.com" moz-do-not-send="true"><Jack.Xiao@amd.com></a>;
                  Koenig, Christian
                  <a href="mailto:Christian.Koenig@amd.com" moz-do-not-send="true"><Christian.Koenig@amd.com></a>;
                  <a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true" class="moz-txt-link-freetext">
                    amd-gfx@lists.freedesktop.org</a>; Deucher,
                  Alexander <a href="mailto:Alexander.Deucher@amd.com" moz-do-not-send="true">
                    <Alexander.Deucher@amd.com></a><br>
                  <b>Subject:</b> Re: [PATCH] drm/amdgpu: only WARN
                  freeing buffers when DMA is unavailable<o:p></o:p></p>
              </div>
            </div>
            <p class="MsoNormal"> <o:p></o:p></p>
            <p class="MsoNormal" style="margin-bottom:12.0pt">Am
              06.02.23 um 09:28 schrieb Xiao, Jack:<o:p></o:p></p>
            <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
              <p class="msipheaderdf3d92d6" style="margin:0in"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:blue">[AMD
                  Official Use Only - General]</span><o:p></o:p></p>
              <p class="MsoNormal"> <o:p></o:p></p>
              <p class="MsoNormal" style="margin-bottom:12.0pt">              
                               >> >> It's simply not allowed
                to free up resources during suspend since those can't be
                acquired again during resume.<o:p></o:p></p>
              <p class="MsoNormal">                             
                >> The in_suspend flag is set at the beginning of
                suspend and unset at the end of resume. It can’t filter
                the case you mentioned.<o:p></o:p></p>
              <p class="MsoNormal"><br>
                               Why not? This is exactly what it should
                do.<o:p></o:p></p>
              <p class="MsoNormal"> <o:p></o:p></p>
              <p class="MsoNormal">[Jack] If freeing up resources during
                resume, it should not hit the issue you described. But
                only checking in_suspend flag would take these cases as
                warning.<o:p></o:p></p>
            </blockquote>
            <p class="MsoNormal" style="margin-bottom:12.0pt"><br>
              No, once more: Freeing up or allocating resources between
              suspend and resume is illegal!<br>
              <br>
              If you free up a resource during resume you should
              absolutely hit that, this is intentional!<br>
              <br>
              Regards,<br>
              Christian.<br>
              <br>
              <br>
              <o:p></o:p></p>
            <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
              <p class="MsoNormal"> <o:p></o:p></p>
              <p class="MsoNormal">Regards,<o:p></o:p></p>
              <p class="MsoNormal">Jack<o:p></o:p></p>
              <p class="MsoNormal"> <o:p></o:p></p>
              <div>
                <div style="border:none;border-top:solid #E1E1E1
                  1.0pt;padding:3.0pt 0in 0in 0in">
                  <p class="MsoNormal"><b>From:</b> Koenig, Christian <a href="mailto:Christian.Koenig@amd.com" moz-do-not-send="true">
                      <Christian.Koenig@amd.com></a> <br>
                    <b>Sent:</b> Monday, February 6, 2023 4:06 PM<br>
                    <b>To:</b> Xiao, Jack <a href="mailto:Jack.Xiao@amd.com" moz-do-not-send="true"><Jack.Xiao@amd.com></a>;
                    Christian König
                    <a href="mailto:ckoenig.leichtzumerken@gmail.com" moz-do-not-send="true"><ckoenig.leichtzumerken@gmail.com></a>;
                    <a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true" class="moz-txt-link-freetext">amd-gfx@lists.freedesktop.org</a>;
                    Deucher, Alexander
                    <a href="mailto:Alexander.Deucher@amd.com" moz-do-not-send="true"><Alexander.Deucher@amd.com></a><br>
                    <b>Subject:</b> Re: [PATCH] drm/amdgpu: only WARN
                    freeing buffers when DMA is unavailable<o:p></o:p></p>
                </div>
              </div>
              <p class="MsoNormal"> <o:p></o:p></p>
              <p class="MsoNormal" style="margin-bottom:12.0pt">Am
                06.02.23 um 08:23 schrieb Xiao, Jack:<o:p></o:p></p>
              <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
                <p class="msipheaderdf3d92d6" style="margin:0in"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:blue">[AMD
                    Official Use Only - General]</span><o:p></o:p></p>
                <p class="MsoNormal"> <o:p></o:p></p>
                <p class="MsoNormal">>> Nope, that is not related
                  to any hw state.<o:p></o:p></p>
                <p class="MsoNormal"> <o:p></o:p></p>
                <p class="MsoNormal">can use other flag.<o:p></o:p></p>
                <p class="MsoNormal"> <o:p></o:p></p>
                <p class="MsoNormal" style="margin-bottom:12.0pt">>>
                  It's simply not allowed to free up resources during
                  suspend since those can't be acquired again during
                  resume.<o:p></o:p></p>
                <p class="MsoNormal">The in_suspend flag is set at the
                  beginning of suspend and unset at the end of resume.
                  It can’t filter the case you mentioned.<o:p></o:p></p>
              </blockquote>
              <p class="MsoNormal" style="margin-bottom:12.0pt"><br>
                Why not? This is exactly what it should do.<br>
                <br>
                <br>
                <o:p></o:p></p>
              <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
                <p class="MsoNormal">Do you know the root cause of these
                  cases hitting the issue? So that we can get an exact
                  point to warn the freeing up behavior.<o:p></o:p></p>
              </blockquote>
              <p class="MsoNormal" style="margin-bottom:12.0pt"><br>
                Well the root cause are programming errors. See between
                suspending and resuming you should not allocate nor free
                memory.<br>
                <br>
                Otherwise we can run into trouble. And this check here
                is one part of that, we should probably add another
                warning during allocation of memory. But this here is
                certainly correct.<br>
                <br>
                Regards,<br>
                Christian.<br>
                <br>
                <br>
                <o:p></o:p></p>
              <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
                <p class="MsoNormal"> <o:p></o:p></p>
                <p class="MsoNormal">Thanks,<o:p></o:p></p>
                <p class="MsoNormal">Jack<o:p></o:p></p>
                <p class="MsoNormal"> <o:p></o:p></p>
                <div>
                  <div style="border:none;border-top:solid #E1E1E1
                    1.0pt;padding:3.0pt 0in 0in 0in">
                    <p class="MsoNormal"><b>From:</b> Christian König <a href="mailto:ckoenig.leichtzumerken@gmail.com" moz-do-not-send="true">
                        <ckoenig.leichtzumerken@gmail.com></a> <br>
                      <b>Sent:</b> Friday, February 3, 2023 9:20 PM<br>
                      <b>To:</b> Xiao, Jack <a href="mailto:Jack.Xiao@amd.com" moz-do-not-send="true"><Jack.Xiao@amd.com></a>;
                      Koenig, Christian
                      <a href="mailto:Christian.Koenig@amd.com" moz-do-not-send="true"><Christian.Koenig@amd.com></a>;
                      <a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true" class="moz-txt-link-freetext">
                        amd-gfx@lists.freedesktop.org</a>; Deucher,
                      Alexander <a href="mailto:Alexander.Deucher@amd.com" moz-do-not-send="true">
                        <Alexander.Deucher@amd.com></a><br>
                      <b>Subject:</b> Re: [PATCH] drm/amdgpu: only WARN
                      freeing buffers when DMA is unavailable<o:p></o:p></p>
                  </div>
                </div>
                <p class="MsoNormal"> <o:p></o:p></p>
                <p class="MsoNormal" style="margin-bottom:12.0pt">Nope,
                  that is not related to any hw state.<br>
                  <br>
                  It's simply not allowed to free up resources during
                  suspend since those can't be acquired again during
                  resume.<br>
                  <br>
                  We had a couple of cases now where this was wrong. If
                  you get a warning from that please fix the code which
                  tried to free something during suspend instead.<br>
                  <br>
                  Regards,<br>
                  Christian.<o:p></o:p></p>
                <div>
                  <p class="MsoNormal">Am 03.02.23 um 07:04 schrieb
                    Xiao, Jack:<o:p></o:p></p>
                </div>
                <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
                  <p class="msipheaderdf3d92d6" style="margin:0in"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:blue">[AMD
                      Official Use Only - General]</span><o:p></o:p></p>
                  <p class="MsoNormal"> <o:p></o:p></p>
                  <p class="MsoNormal">>> It's simply illegal to
                    free up memory during suspend.<o:p></o:p></p>
                  <p class="MsoNormal">Why? In my understanding, the
                    limit was caused by DMA shutdown.<o:p></o:p></p>
                  <p class="MsoNormal"> <o:p></o:p></p>
                  <p class="MsoNormal">Regards,<o:p></o:p></p>
                  <p class="MsoNormal">Jack<o:p></o:p></p>
                  <p class="MsoNormal"> <o:p></o:p></p>
                  <div>
                    <div style="border:none;border-top:solid #E1E1E1
                      1.0pt;padding:3.0pt 0in 0in 0in">
                      <p class="MsoNormal"><b>From:</b> Koenig,
                        Christian <a href="mailto:Christian.Koenig@amd.com" moz-do-not-send="true">
                          <Christian.Koenig@amd.com></a> <br>
                        <b>Sent:</b> Thursday, February 2, 2023 7:43 PM<br>
                        <b>To:</b> Xiao, Jack <a href="mailto:Jack.Xiao@amd.com" moz-do-not-send="true"><Jack.Xiao@amd.com></a>;
                        <a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true" class="moz-txt-link-freetext">amd-gfx@lists.freedesktop.org</a>;
                        Deucher, Alexander
                        <a href="mailto:Alexander.Deucher@amd.com" moz-do-not-send="true"><Alexander.Deucher@amd.com></a><br>
                        <b>Subject:</b> AW: [PATCH] drm/amdgpu: only
                        WARN freeing buffers when DMA is unavailable<o:p></o:p></p>
                    </div>
                  </div>
                  <p class="MsoNormal"> <o:p></o:p></p>
                  <div>
                    <p class="MsoNormal">Big NAK to this! This warning
                      is not related in any way to the hw state.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">It's simply illegal to free up
                      memory during suspend.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Regards,<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Christian.<o:p></o:p></p>
                  </div>
                  <p class="MsoNormal"> <o:p></o:p></p>
                  <div class="MsoNormal" style="text-align:center" align="center">
                    <hr width="98%" size="2" align="center">
                  </div>
                  <div id="divRplyFwdMsg">
                    <p class="MsoNormal"><b><span style="color:black">Von:</span></b><span style="color:black"> Xiao, Jack <</span><a href="mailto:Jack.Xiao@amd.com" moz-do-not-send="true" class="moz-txt-link-freetext">Jack.Xiao@amd.com</a><span style="color:black">><br>
                        <b>Gesendet:</b> Donnerstag, 2. Februar 2023
                        10:54<br>
                        <b>An:</b> </span><a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true" class="moz-txt-link-freetext">amd-gfx@lists.freedesktop.org</a><span style="color:black"> <</span><a href="mailto:amd-gfx@lists.freedesktop.org" moz-do-not-send="true" class="moz-txt-link-freetext">amd-gfx@lists.freedesktop.org</a><span style="color:black">>; Deucher, Alexander
                        <</span><a href="mailto:Alexander.Deucher@amd.com" moz-do-not-send="true" class="moz-txt-link-freetext">Alexander.Deucher@amd.com</a><span style="color:black">>; Koenig, Christian <</span><a href="mailto:Christian.Koenig@amd.com" moz-do-not-send="true" class="moz-txt-link-freetext">Christian.Koenig@amd.com</a><span style="color:black">><br>
                        <b>Cc:</b> Xiao, Jack <</span><a href="mailto:Jack.Xiao@amd.com" moz-do-not-send="true" class="moz-txt-link-freetext">Jack.Xiao@amd.com</a><span style="color:black">><br>
                        <b>Betreff:</b> [PATCH] drm/amdgpu: only WARN
                        freeing buffers when DMA is unavailable</span>
                      <o:p></o:p></p>
                    <div>
                      <p class="MsoNormal"> <o:p></o:p></p>
                    </div>
                  </div>
                  <div>
                    <div>
                      <p class="MsoNormal" style="margin-bottom:12.0pt">Reduce
                        waringings, only warn when DMA is unavailable.<br>
                        <br>
                        Signed-off-by: Jack Xiao <<a href="mailto:Jack.Xiao@amd.com" moz-do-not-send="true" class="moz-txt-link-freetext">Jack.Xiao@amd.com</a>><br>
                        ---<br>
                         drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3
                        ++-<br>
                         1 file changed, 2 insertions(+), 1 deletion(-)<br>
                        <br>
                        diff --git
                        a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
                        b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c<br>
                        index 2d237f3d3a2e..e3e3764ea697 100644<br>
                        --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c<br>
                        +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c<br>
                        @@ -422,7 +422,8 @@ void
                        amdgpu_bo_free_kernel(struct amdgpu_bo **bo, u64
                        *gpu_addr,<br>
                                 if (*bo == NULL)<br>
                                         return;<br>
                         <br>
                        -      
                        WARN_ON(amdgpu_ttm_adev((*bo)->tbo.bdev)->in_suspend);<br>
                        +      
                        WARN_ON(amdgpu_ttm_adev((*bo)->tbo.bdev)->in_suspend
                        &&<br>
                        +              
!amdgpu_ttm_adev((*bo)->tbo.bdev)->ip_blocks[AMD_IP_BLOCK_TYPE_SDMA].status.hw);<br>
                         <br>
                                 if (likely(amdgpu_bo_reserve(*bo, true)
                        == 0)) {<br>
                                         if (cpu_addr)<br>
                        -- <br>
                        2.37.3<o:p></o:p></p>
                    </div>
                  </div>
                </blockquote>
                <p class="MsoNormal"> <o:p></o:p></p>
              </blockquote>
              <p class="MsoNormal"> <o:p></o:p></p>
            </blockquote>
            <p class="MsoNormal"> <o:p></o:p></p>
          </div>
        </blockquote>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
    </blockquote>
    <br>
  </body>
</html>