<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">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
Fixed as suggested, added the descriptions, and pushed them. Thanks.</div>
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<br>
</div>
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
Yong</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Koenig, Christian<br>
<b>Sent:</b> Friday, October 19, 2018 3:14:14 AM<br>
<b>To:</b> Zhao, Yong; amd-gfx@lists.freedesktop.org; brahma_sw_dev<br>
<b>Subject:</b> Re: [PATCH 2/3] drm/amdgpu: Expose *_setup_vm_pt_regs for kfd to use</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">Am 18.10.18 um 23:13 schrieb Zhao, Yong:<br>
> Change-Id: I2ea27c4749a454506fecf75bb5b78b09bde9cb28<br>
> Signed-off-by: Yong Zhao <Yong.Zhao@amd.com><br>
> ---<br>
>   drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | 20 +++++++++++++++-----<br>
>   drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h    |  6 ++++++<br>
>   drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c  | 20 +++++++++++++++-----<br>
>   3 files changed, 36 insertions(+), 10 deletions(-)<br>
><br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c<br>
> index ceb7847..34145a6 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c<br>
> @@ -35,15 +35,25 @@ u64 gfxhub_v1_0_get_mc_fb_offset(struct amdgpu_device *adev)<br>
>        return (u64)RREG32_SOC15(GC, 0, mmMC_VM_FB_OFFSET) << 24;<br>
>   }<br>
>   <br>
> +void gfxhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,<br>
> +                             uint64_t value)<br>
<br>
I would rather give the parameter some meaningful name, e.g. <br>
page_table_base or similar.<br>
<br>
> +{<br>
> +     /* two registers distance between mmVM_CONTEXT0_* to mmVM_CONTEXT1_* */<br>
> +     int offset = mmVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_LO32<br>
> +                     - mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32;<br>
> +<br>
> +     WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32,<br>
> +                             offset * vmid, lower_32_bits(value));<br>
> +<br>
> +     WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32,<br>
> +                             offset * vmid, upper_32_bits(value));<br>
> +}<br>
> +<br>
>   static void gfxhub_v1_0_init_gart_pt_regs(struct amdgpu_device *adev)<br>
>   {<br>
>        uint64_t value = amdgpu_gmc_pd_addr(adev->gart.bo);<br>
>   <br>
> -     WREG32_SOC15(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32,<br>
> -                  lower_32_bits(value));<br>
> -<br>
> -     WREG32_SOC15(GC, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32,<br>
> -                  upper_32_bits(value));<br>
> +     gfxhub_v1_0_setup_vm_pt_regs(adev, 0, value);<br>
<br>
Since that function is now a mostly meaningless wrapper I would just go <br>
ahead and call gfxhub_v1_0_setup_vm_pt_regs directly as long as it <br>
doesn't duplicates the code to much.<br>
<br>
Same applies of course to the mmhub variant.<br>
<br>
Apart from that looks good to me,<br>
Christian.<br>
<br>
>   }<br>
>   <br>
>   static void gfxhub_v1_0_init_gart_aperture_regs(struct amdgpu_device *adev)<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h<br>
> index b030ca5..008ab08 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.h<br>
> @@ -27,4 +27,10 @@<br>
>   extern const struct amd_ip_funcs gmc_v9_0_ip_funcs;<br>
>   extern const struct amdgpu_ip_block_version gmc_v9_0_ip_block;<br>
>   <br>
> +/* amdgpu_amdkfd*.c */<br>
> +void gfxhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,<br>
> +                             uint64_t value);<br>
> +void mmhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,<br>
> +                             uint64_t value);<br>
> +<br>
>   #endif<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c<br>
> index 14649f8..8e18be0 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c<br>
> @@ -52,15 +52,25 @@ u64 mmhub_v1_0_get_fb_location(struct amdgpu_device *adev)<br>
>        return base;<br>
>   }<br>
>   <br>
> +void mmhub_v1_0_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,<br>
> +                             uint64_t value)<br>
> +{<br>
> +     /* two registers distance between mmVM_CONTEXT0_* to mmVM_CONTEXT1_* */<br>
> +     int offset = mmVM_CONTEXT1_PAGE_TABLE_BASE_ADDR_LO32<br>
> +                     - mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32;<br>
> +<br>
> +     WREG32_SOC15_OFFSET(MMHUB, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32,<br>
> +                     offset * vmid, lower_32_bits(value));<br>
> +<br>
> +     WREG32_SOC15_OFFSET(MMHUB, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32,<br>
> +                     offset * vmid, upper_32_bits(value));<br>
> +}<br>
> +<br>
>   static void mmhub_v1_0_init_gart_pt_regs(struct amdgpu_device *adev)<br>
>   {<br>
>        uint64_t value = amdgpu_gmc_pd_addr(adev->gart.bo);<br>
>   <br>
> -     WREG32_SOC15(MMHUB, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LO32,<br>
> -                  lower_32_bits(value));<br>
> -<br>
> -     WREG32_SOC15(MMHUB, 0, mmVM_CONTEXT0_PAGE_TABLE_BASE_ADDR_HI32,<br>
> -                  upper_32_bits(value));<br>
> +     mmhub_v1_0_setup_vm_pt_regs(adev, 0, value);<br>
>   }<br>
>   <br>
>   static void mmhub_v1_0_init_gart_aperture_regs(struct amdgpu_device *adev)<br>
<br>
</div>
</span></font></div>
</div>
</body>
</html>