<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<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: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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
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]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi Alex,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It is strange I didn’t get your email on Wednesday. I will add one patch to move all the doorbell definitions to a separate amdgpu_doorbell.h
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Oak<o:p></o:p></p>
</div>
<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> Deucher, Alexander <Alexander.Deucher@amd.com> <br>
<b>Sent:</b> Friday, November 23, 2018 1:57 PM<br>
<b>To:</b> Alex Deucher <alexdeucher@gmail.com>; Zeng, Oak <Oak.Zeng@amd.com>; Koenig, Christian <Christian.Koenig@amd.com><br>
<b>Cc:</b> amd-gfx list <amd-gfx@lists.freedesktop.org><br>
<b>Subject:</b> Re: [PATCH 7/7] drm/amdgpu: Use new doorbell layout for vega20 and future asic<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div id="divtagdefaultwrapper">
<p><span style="font-size:12.0pt;color:black">The main idea is to be able to use different layouts on different asics that may share the same IP code.<o:p></o:p></span></p>
<p><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
<p><span style="font-size:12.0pt;color:black">Alex<o:p></o:p></span></p>
</div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="3" width="98%" align="center">
</div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="color:black">From:</span></b><span style="color:black"> amd-gfx <<a href="mailto:amd-gfx-bounces@lists.freedesktop.org">amd-gfx-bounces@lists.freedesktop.org</a>> on behalf of Christian König <<a href="mailto:ckoenig.leichtzumerken@gmail.com">ckoenig.leichtzumerken@gmail.com</a>><br>
<b>Sent:</b> Thursday, November 22, 2018 4:26:53 AM<br>
<b>To:</b> Alex Deucher; Zeng, Oak<br>
<b>Cc:</b> amd-gfx list<br>
<b>Subject:</b> Re: [PATCH 7/7] drm/amdgpu: Use new doorbell layout for vega20 and future asic</span>
<o:p></o:p></p>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">Am 21.11.18 um 17:39 schrieb Alex Deucher:<br>
> On Wed, Nov 21, 2018 at 11:37 AM Zeng, Oak <<a href="mailto:Oak.Zeng@amd.com">Oak.Zeng@amd.com</a>> wrote:<br>
>>> No need to add a new file for this.  Just add this to vega20_reg_init.c.<br>
>> Agreed.<br>
>><br>
>>> Also, please use the doorbell enums rather than hardcoding the numbers.<br>
>> Ok. Where should I put the doorbell enums for vega20? In amdgpu.h or in vega20_reg_init.c?<br>
> Maybe add amdgpu_doorbell.h and move all of the enums there?<br>
<br>
Mhm, isn't part of the goal of this work to get rid of the enums?<br>
<br>
I mean when we have a structure to hold the indexes to we really need <br>
the enums any more? I don't think so.<br>
<br>
Christian.<br>
<br>
><br>
> Alex<br>
><br>
>> thanks,<br>
>> Oak<br>
>><br>
>> -----Original Message-----<br>
>> From: amd-gfx <<a href="mailto:amd-gfx-bounces@lists.freedesktop.org">amd-gfx-bounces@lists.freedesktop.org</a>> On Behalf Of Alex Deucher<br>
>> Sent: Wednesday, November 21, 2018 11:22 AM<br>
>> To: Zeng, Oak <<a href="mailto:Oak.Zeng@amd.com">Oak.Zeng@amd.com</a>><br>
>> Cc: Zeng, Oak <<a href="mailto:Oak.Zeng@amd.com">Oak.Zeng@amd.com</a>>; amd-gfx list <<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>><br>
>> Subject: Re: [PATCH 7/7] drm/amdgpu: Use new doorbell layout for vega20 and future asic<br>
>><br>
>> On Wed, Nov 21, 2018 at 10:52 AM Oak Zeng <<a href="mailto:ozeng@amd.com">ozeng@amd.com</a>> wrote:<br>
>>> Change-Id: I04d22fb717ac50483c0835f160a2e860e344f358<br>
>>> Signed-off-by: Oak Zeng <<a href="mailto:ozeng@amd.com">ozeng@amd.com</a>><br>
>>> Suggested-by: Felix Kuehling <<a href="mailto:Felix.Kuehling@amd.com">Felix.Kuehling@amd.com</a>><br>
>>> Suggested-by: Alex Deucher <<a href="mailto:alexander.deucher@amd.com">alexander.deucher@amd.com</a>><br>
>>> ---<br>
>>>   drivers/gpu/drm/amd/amdgpu/Makefile                |  4 +-<br>
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c         |  4 +-<br>
>>>   drivers/gpu/drm/amd/amdgpu/soc15.h                 |  1 +<br>
>>>   .../drm/amd/amdgpu/vega20_doorbell_index_init.c    | 64 ++++++++++++++++++++++<br>
>>>   4 files changed, 70 insertions(+), 3 deletions(-)  create mode 100644<br>
>>> drivers/gpu/drm/amd/amdgpu/vega20_doorbell_index_init.c<br>
>>><br>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile<br>
>>> b/drivers/gpu/drm/amd/amdgpu/Makefile<br>
>>> index 3ab8eba..b3b150b 100644<br>
>>> --- a/drivers/gpu/drm/amd/amdgpu/Makefile<br>
>>> +++ b/drivers/gpu/drm/amd/amdgpu/Makefile<br>
>>> @@ -63,8 +63,8 @@ amdgpu-$(CONFIG_DRM_AMDGPU_SI)+= si.o gmc_v6_0.o<br>
>>> gfx_v6_0.o si_ih.o si_dma.o dce<br>
>>><br>
>>>   amdgpu-y += \<br>
>>>          vi.o mxgpu_vi.o nbio_v6_1.o soc15.o emu_soc.o mxgpu_ai.o nbio_v7_0.o vega10_reg_init.o \<br>
>>> -       vega20_reg_init.o nbio_v7_4.o vega10_doorbell_index_init.o vega12_doorbell_index_init.o \<br>
>>> -       vi_doorbell_index_init.o<br>
>>> +       vega20_reg_init.o nbio_v7_4.o vi_doorbell_index_init.o vega10_doorbell_index_init.o \<br>
>>> +       vega12_doorbell_index_init.o vega20_doorbell_index_init.o<br>
>>><br>
>>>   # add DF block<br>
>>>   amdgpu-y += \<br>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c<br>
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c<br>
>>> index 3ffd8f5..19f2149 100644<br>
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c<br>
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c<br>
>>> @@ -517,8 +517,10 @@ static int amdgpu_device_doorbell_init(struct amdgpu_device *adev)<br>
>>>                  vi_doorbell_index_init(adev);<br>
>>>          else if (adev->asic_type == CHIP_VEGA10)<br>
>>>                  vega10_doorbell_index_init(adev);<br>
>>> -       else<br>
>>> +       else if (adev->asic_type == CHIP_VEGA12 || adev->asic_type ==<br>
>>> + CHIP_RAVEN)<br>
>>>                  vega12_doorbell_index_init(adev);<br>
>>> +       else<br>
>>> +               vega20_doorbell_index_init(adev);<br>
>>><br>
>>>          /* No doorbell on SI hardware generation */<br>
>>>          if (adev->asic_type < CHIP_BONAIRE) { diff --git<br>
>>> a/drivers/gpu/drm/amd/amdgpu/soc15.h<br>
>>> b/drivers/gpu/drm/amd/amdgpu/soc15.h<br>
>>> index 939c0e8..6ba0d26 100644<br>
>>> --- a/drivers/gpu/drm/amd/amdgpu/soc15.h<br>
>>> +++ b/drivers/gpu/drm/amd/amdgpu/soc15.h<br>
>>> @@ -60,4 +60,5 @@ int vega20_reg_base_init(struct amdgpu_device<br>
>>> *adev);<br>
>>><br>
>>>   void vega10_doorbell_index_init(struct amdgpu_device *adev);  void<br>
>>> vega12_doorbell_index_init(struct amdgpu_device *adev);<br>
>>> +void vega20_doorbell_index_init(struct amdgpu_device *adev);<br>
>>>   #endif<br>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/vega20_doorbell_index_init.c<br>
>>> b/drivers/gpu/drm/amd/amdgpu/vega20_doorbell_index_init.c<br>
>>> new file mode 100644<br>
>>> index 0000000..dcaef7f<br>
>>> --- /dev/null<br>
>>> +++ b/drivers/gpu/drm/amd/amdgpu/vega20_doorbell_index_init.c<br>
>>> @@ -0,0 +1,64 @@<br>
>>> +/*<br>
>>> + * Copyright 2018 Advanced Micro Devices, Inc.<br>
>>> + *<br>
>>> + * Permission is hereby granted, free of charge, to any person<br>
>>> +obtaining a<br>
>>> + * copy of this software and associated documentation files (the<br>
>>> +"Software"),<br>
>>> + * to deal in the Software without restriction, including without<br>
>>> +limitation<br>
>>> + * the rights to use, copy, modify, merge, publish, distribute,<br>
>>> +sublicense,<br>
>>> + * and/or sell copies of the Software, and to permit persons to whom<br>
>>> +the<br>
>>> + * Software is furnished to do so, subject to the following conditions:<br>
>>> + *<br>
>>> + * The above copyright notice and this permission notice shall be<br>
>>> +included in<br>
>>> + * all copies or substantial portions of the Software.<br>
>>> + *<br>
>>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,<br>
>>> +EXPRESS OR<br>
>>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF<br>
>>> +MERCHANTABILITY,<br>
>>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT<br>
>>> +SHALL<br>
>>> + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM,<br>
>>> +DAMAGES OR<br>
>>> + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR<br>
>>> +OTHERWISE,<br>
>>> + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE<br>
>>> +OR<br>
>>> + * OTHER DEALINGS IN THE SOFTWARE.<br>
>>> + *<br>
>>> + */<br>
>>> +<br>
>>> +#include "amdgpu.h"<br>
>>> +<br>
>>> +void vega20_doorbell_index_init(struct amdgpu_device *adev) {<br>
>>> +       /* Compute + GFX: 0~255 */<br>
>>> +       adev->doorbell_index.kiq = 0x00;<br>
>>> +       adev->doorbell_index.mec_ring0 = 0x03;<br>
>>> +       adev->doorbell_index.mec_ring1 = 0x04;<br>
>>> +       adev->doorbell_index.mec_ring2 = 0x05;<br>
>>> +       adev->doorbell_index.mec_ring3 = 0x06;<br>
>>> +       adev->doorbell_index.mec_ring4 = 0x07;<br>
>>> +       adev->doorbell_index.mec_ring5 = 0x08;<br>
>>> +       adev->doorbell_index.mec_ring6 = 0x09;<br>
>>> +       adev->doorbell_index.mec_ring7 = 0x0a;<br>
>>> +       adev->doorbell_index.userqueue_start = 0x0b;<br>
>>> +       adev->doorbell_index.userqueue_end = 0x8a;<br>
>>> +       adev->doorbell_index.gfx_ring0 = 0x8b;<br>
>>> +       /* SDMA:256~335*/<br>
>>> +       adev->doorbell_index.sdma_engine0 = 0x100;<br>
>>> +       adev->doorbell_index.sdma_engine1 = 0x10a;<br>
>>> +       adev->doorbell_index.sdma_engine2 = 0x114;<br>
>>> +       adev->doorbell_index.sdma_engine3 = 0x11e;<br>
>>> +       adev->doorbell_index.sdma_engine4 = 0x128;<br>
>>> +       adev->doorbell_index.sdma_engine5 = 0x132;<br>
>>> +       adev->doorbell_index.sdma_engine6 = 0x13C;<br>
>>> +       adev->doorbell_index.sdma_engine7 = 0x146;<br>
>>> +       /* IH: 376~391 */<br>
>>> +       adev->doorbell_index.ih = 0x178;<br>
>>> +       /* MMSCH: 392~407 */<br>
>>> +       adev->doorbell_index.uvd_vce.uvd_ring0_1 = 0x188;<br>
>>> +       adev->doorbell_index.uvd_vce.uvd_ring2_3 = 0x189;<br>
>>> +       adev->doorbell_index.uvd_vce.uvd_ring4_5 = 0x18a;<br>
>>> +       adev->doorbell_index.uvd_vce.uvd_ring6_7 = 0x18b;<br>
>>> +       adev->doorbell_index.uvd_vce.vce_ring0_1 = 0x18c;<br>
>>> +       adev->doorbell_index.uvd_vce.vce_ring2_3 = 0x18d;<br>
>>> +       adev->doorbell_index.uvd_vce.vce_ring4_5 = 0x18e;<br>
>>> +       adev->doorbell_index.uvd_vce.vce_ring6_7 = 0x18f;<br>
>>> +       /* In unit of dword doorbell */<br>
>>> +       adev->doorbell_index.max_assignment = 0x18f << 1; }<br>
>> No need to add a new file for this.  Just add this to vega20_reg_init.c.  Also, please use the doorbell enums rather than hardcoding the numbers.<br>
>><br>
>> Alex<br>
>><br>
>>> +<br>
>>> --<br>
>>> 2.7.4<br>
>>><br>
>>> _______________________________________________<br>
>>> amd-gfx mailing list<br>
>>> <a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
>>> <a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
>> _______________________________________________<br>
>> amd-gfx mailing list<br>
>> <a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
>> <a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
> _______________________________________________<br>
> amd-gfx mailing list<br>
> <a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
<br>
_______________________________________________<br>
amd-gfx mailing list<br>
<a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>