<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Arial" size="2"><span style="font-size:10pt;">
<div style="padding-right:5pt;padding-left:5pt;"><font color="blue">[AMD Official Use Only - General]<br>

</font></div>
<div style="margin-top:5pt;"><font face="Times New Roman" size="3"><span style="font-size:12pt;"><br>

</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> -----Original Message-----</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> From: Lazar, Lijo <<a href="mailto:Lijo.Lazar@amd.com"><font color="#0563C1"><u>Lijo.Lazar@amd.com</u></font></a>></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> Sent: Friday, March 15, 2024 6:14 PM</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> To: Ma, Le <<a href="mailto:Le.Ma@amd.com"><font color="#0563C1"><u>Le.Ma@amd.com</u></font></a>>; <a href="mailto:amd-gfx@lists.freedesktop.org"><font color="#0563C1"><u>amd-gfx@lists.freedesktop.org</u></font></a></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> Cc: Zhang, Hawking <<a href="mailto:Hawking.Zhang@amd.com"><font color="#0563C1"><u>Hawking.Zhang@amd.com</u></font></a>>; Song, Asher</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> <<a href="mailto:Asher.Song@amd.com"><font color="#0563C1"><u>Asher.Song@amd.com</u></font></a>>; Deucher, Alexander <<a href="mailto:Alexander.Deucher@amd.com"><font color="#0563C1"><u>Alexander.Deucher@amd.com</u></font></a>></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> Subject: Re: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> On 3/15/2024 2:46 PM, Le Ma wrote:</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > To fix the entity rq NULL issue. This setting has been moved to upper level.</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> ></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> Need to call amdgpu_ttm_set_buffer_funcs_status(adev, true/false) in</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> mode-2 reset handlers as well.</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">Thanks for pointing out this. I think we can make another separated patch to handle it for mode2 since this patch is for alignment purpose. Actually, the set_buffer_funcs will not be unset/set
in reset case as the conditions below:</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;">void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool enable)</span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;">{</span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;">        struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);</span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;">        uint64_t size;</span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;">        int r;</span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;">        if (!adev->mman.initialized || amdgpu_in_reset(adev) ||</span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;">            adev->mman.buffer_funcs_enabled == enable || adev->gmc.is_app_apu)</span></font></div>
<div style="padding-left:36pt;"><font face="Calibri" size="2"><span style="font-size:11pt;">                return;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> Thanks,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> Lijo</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > Fixes b70438004a14 ("drm/amdgpu: move buffer funcs setting up a</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > level")</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> ></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > Signed-off-by: Le Ma <<a href="mailto:le.ma@amd.com"><font color="#0563C1"><u>le.ma@amd.com</u></font></a>></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > ---</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >  drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c | 20 +-------------------</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >  1 file changed, 1 insertion(+), 19 deletions(-)</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> ></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > b/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > index eaa4f5f49949..589a734982a7 100644</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > @@ -431,16 +431,11 @@ static void sdma_v4_4_2_inst_gfx_stop(struct</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> amdgpu_device *adev,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES];</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      u32 doorbell_offset, doorbell;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      u32 rb_cntl, ib_cntl;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -   int i, unset = 0;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > +   int i;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> ></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      for_each_inst(i, inst_mask) {</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >              sdma[i] = &adev->sdma.instance[i].ring;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> ></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -           if ((adev->mman.buffer_funcs_ring == sdma[i]) && unset != 1) {</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -                   amdgpu_ttm_set_buffer_funcs_status(adev, false);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -                   unset = 1;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -           }</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >              rb_cntl = RREG32_SDMA(i, regSDMA_GFX_RB_CNTL);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >              rb_cntl = REG_SET_FIELD(rb_cntl, SDMA_GFX_RB_CNTL,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> RB_ENABLE, 0);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >              WREG32_SDMA(i, regSDMA_GFX_RB_CNTL, rb_cntl); @@ -</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> 490,17 +485,10 @@</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > static void sdma_v4_4_2_inst_page_stop(struct amdgpu_device *adev,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES];</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      u32 rb_cntl, ib_cntl;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      int i;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -   bool unset = false;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> ></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      for_each_inst(i, inst_mask) {</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >              sdma[i] = &adev->sdma.instance[i].page;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> ></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -           if ((adev->mman.buffer_funcs_ring == sdma[i]) &&</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -                   (!unset)) {</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -                   amdgpu_ttm_set_buffer_funcs_status(adev, false);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -                   unset = true;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -           }</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >              rb_cntl = RREG32_SDMA(i, regSDMA_PAGE_RB_CNTL);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >              rb_cntl = REG_SET_FIELD(rb_cntl, SDMA_PAGE_RB_CNTL,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >                                      RB_ENABLE, 0);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > @@ -950,13 +938,7 @@ static int sdma_v4_4_2_inst_start(struct</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> amdgpu_device *adev,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >                      r = amdgpu_ring_test_helper(page);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >                      if (r)</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >                              return r;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -                   if (adev->mman.buffer_funcs_ring == page)</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -                           amdgpu_ttm_set_buffer_funcs_status(adev,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> true);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >              }</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -           if (adev->mman.buffer_funcs_ring == ring)</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> > -                   amdgpu_ttm_set_buffer_funcs_status(adev, true);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      }</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> ></span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> >      return r;</span></font></div>
</span></font>
</body>
</html>