<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Yes, I made that suggestion in order to make it easy for us to replace the massive function we use in emulation with a stub function for upstream. I figured if we had that function in a separate file it would be cleaner,
 but maybe that is not the case. <br>
</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">I was thinking that we could replace the upstream stub file with an NPI-specific file for most of our emulator work, then go back to the stub file once VBIOS was enabled and we no longer needed the SOC init sequence from
 HW.</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">I guess from a CM perspective it doesn't make a lot of difference whether we add 20,000 lines to a file and delete them later or replace a short file with a 20,000 line file and then replace it again later... so maybe
 we don't need to move the function out after all.<br>
</p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" color="#000000" face="Calibri, sans-serif"><b>From:</b> Liu, Shaoyun<br>
<b>Sent:</b> February 6, 2018 4:55 PM<br>
<b>To:</b> Alex Deucher; Bridgman, John<br>
<b>Cc:</b> amd-gfx list<br>
<b>Subject:</b> RE: [PATCH] drm/amdgpu: Add place holder for soc15 asic init on emulation</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Ye, I  try to put  the asic specific  register sequences for emulation in a separate emu_soc.c file, I think it's suggested by John or you ?  The asic specific code will  be  keep in separate bring up branch , but a common place to add
 them  seems  not bad to me . <br>
<br>
Shaoyun.liu<br>
<br>
-----Original Message-----<br>
From: Alex Deucher [<a href="mailto:alexdeucher@gmail.com">mailto:alexdeucher@gmail.com</a>]
<br>
Sent: Tuesday, February 06, 2018 4:46 PM<br>
To: Liu, Shaoyun<br>
Cc: amd-gfx list<br>
Subject: Re: [PATCH] drm/amdgpu: Add place holder for soc15 asic init on emulation<br>
<br>
On Tue, Feb 6, 2018 at 4:41 PM, Shaoyun Liu <Shaoyun.Liu@amd.com> wrote:<br>
> Change-Id: I6ff04e1199d1ebdbdb31d0e7e8ca3c240c61ab3a<br>
> Signed-off-by: Shaoyun Liu <Shaoyun.Liu@amd.com><br>
<br>
What is the purpose of this?  If it's just as a hint the the driver writer as to where to add the emulation register sequences from the IP teams, I don't see much value in it.  Just add a comment.<br>
<br>
Alex<br>
<br>
<br>
> ---<br>
>  drivers/gpu/drm/amd/amdgpu/Makefile  |  2 +-  <br>
> drivers/gpu/drm/amd/amdgpu/amdgpu.h  |  2 ++  <br>
> drivers/gpu/drm/amd/amdgpu/emu_soc.c | 33 +++++++++++++++++++++++++++++++++<br>
>  drivers/gpu/drm/amd/amdgpu/soc15.c   |  4 ++++<br>
>  4 files changed, 40 insertions(+), 1 deletion(-)  create mode 100644 <br>
> drivers/gpu/drm/amd/amdgpu/emu_soc.c<br>
><br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile <br>
> b/drivers/gpu/drm/amd/amdgpu/Makefile<br>
> index 1f6d43e..6f5db5e 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/Makefile<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/Makefile<br>
> @@ -41,7 +41,7 @@ amdgpu-$(CONFIG_DRM_AMDGPU_CIK)+= cik.o cik_ih.o <br>
> kv_smc.o kv_dpm.o \  amdgpu-$(CONFIG_DRM_AMDGPU_SI)+= si.o gmc_v6_0.o <br>
> gfx_v6_0.o si_ih.o si_dma.o dce_v6_0.o si_dpm.o si_smc.o<br>
><br>
>  amdgpu-y += \<br>
> -       vi.o mxgpu_vi.o nbio_v6_1.o soc15.o mxgpu_ai.o nbio_v7_0.o vega10_reg_init.o vega20_reg_init.o nbio_v7_4.o<br>
> +       vi.o mxgpu_vi.o nbio_v6_1.o soc15.o emu_soc.o mxgpu_ai.o <br>
> + nbio_v7_0.o vega10_reg_init.o vega20_reg_init.o nbio_v7_4.o<br>
><br>
>  # add GMC block<br>
>  amdgpu-y += \<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h <br>
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
> index d417cfb..13aa8a8 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
> @@ -1740,6 +1740,8 @@ void amdgpu_mm_wreg(struct amdgpu_device *adev, <br>
> uint32_t reg, uint32_t v,  bool amdgpu_device_asic_has_dc_support(enum <br>
> amd_asic_type asic_type);  bool amdgpu_device_has_dc_support(struct <br>
> amdgpu_device *adev);<br>
><br>
> +int emu_soc_asic_init(struct amdgpu_device *adev);<br>
> +<br>
>  /*<br>
>   * Registers read & write functions.<br>
>   */<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/emu_soc.c <br>
> b/drivers/gpu/drm/amd/amdgpu/emu_soc.c<br>
> new file mode 100644<br>
> index 0000000..d72c25c<br>
> --- /dev/null<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/emu_soc.c<br>
> @@ -0,0 +1,33 @@<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
<div>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
Is there an expectation that MAM block features will become available under virtualization at some point in the future, eg Navi10 ?
</div>
<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>
> +#include "amdgpu.h"<br>
> +#include "soc15.h"<br>
> +<br>
> +#include "soc15_common.h"<br>
> +#include "soc15_hw_ip.h"<br>
> +<br>
> +int emu_soc_asic_init(struct amdgpu_device *adev) {<br>
> +       return 0;<br>
> +}<br>
> +<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c <br>
> b/drivers/gpu/drm/amd/amdgpu/soc15.c<br>
> index 22cd84f..6a3d108 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/soc15.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c<br>
> @@ -747,6 +747,10 @@ static int soc15_common_hw_init(void *handle)  {<br>
>         struct amdgpu_device *adev = (struct amdgpu_device *)handle;<br>
><br>
> +       /* Add asic specific init sequence for emulation */<br>
> +       if (amdgpu_emu_mode == 1)<br>
> +               emu_soc_asic_init(adev);<br>
> +<br>
>         /* enable pcie gen2/3 link */<br>
>         soc15_pcie_gen3_enable(adev);<br>
>         /* enable aspm */<br>
> --<br>
> 1.9.1<br>
><br>
> _______________________________________________<br>
> amd-gfx mailing list<br>
> amd-gfx@lists.freedesktop.org<br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
</div>
</span></font></div>
</div>
</div>
</body>
</html>