<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=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@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:Aptos;
        panose-1:2 11 0 4 2 2 2 2 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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Aptos",sans-serif;
        color:windowtext;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.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]-->
</head>
<body lang="en-CN" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<p style="font-family:Calibri;font-size:10pt;color:#0000FF;margin:5pt;font-style:normal;font-weight:normal;text-decoration:none;" align="Left">
[AMD Official Use Only - AMD Internal Distribution Only]<br>
</p>
<br>
<div>
<div class="WordSection1">
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm">
<p class="MsoNormal" style="border:none;padding:0cm"><span style="font-family:"Aptos",sans-serif">Hi Ch</span><span lang="EN-US" style="font-family:"Aptos",sans-serif">ristian,
</span><span style="font-family:"Aptos",sans-serif"><o:p></o:p></span></p>
<p class="MsoNormal" style="border:none;padding:0cm"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal" style="border:none;padding:0cm"><span style="font-family:"Aptos",sans-serif">Thank you for the review and the feedback.</span><span lang="EN-US" style="font-family:"Aptos",sans-serif"> I will update the patch according to your feedback.
<o:p></o:p></span></p>
<p class="MsoNormal" style="border:none;padding:0cm"><span lang="EN-US" style="font-family:"Aptos",sans-serif">Please see my 2 inline comments below.<o:p></o:p></span></p>
<p class="MsoNormal" style="border:none;padding:0cm"><span lang="EN-US" style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal" style="border:none;padding:0cm"><span lang="EN-US" style="font-family:"Aptos",sans-serif">Regards<o:p></o:p></span></p>
<p class="MsoNormal" style="border:none;padding:0cm"><span lang="EN-US" style="font-family:"Aptos",sans-serif">Sam<o:p></o:p></span></p>
<p class="MsoNormal" style="border:none;padding:0cm"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> From: Christian König <ckoenig.leichtzumerken@gmail.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> Date: Wednesday, April 16, 2025 at 21:52<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> To: Zhang, GuoQing (Sam) <GuoQing.Zhang@amd.com>, amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> Cc: Zhao, Victor <Victor.Zhao@amd.com>, Chang, HaiJun <HaiJun.Chang@amd.com>, Deng, Emily <Emily.Deng@amd.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> Subject: Re: [PATCH 4/6] drm/amdgpu: enable pdb0 for hibernation on SRIOV<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> Am 14.04.25 um 12:46 schrieb Samuel Zhang:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > When switching to new GPU index after hibernation and then resume,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > VRAM offset of each VRAM BO will be changed, and the cached gpu<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > addresses needed to updated.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > This is to enable pdb0 and switch to use pdb0-based virtual gpu<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > address by default in amdgpu_bo_create_reserved(). since the virtual<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > addresses do not change, this can avoid the need to update all<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > cached gpu addresses all over the codebase.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > Signed-off-by: Emily Deng <Emily.Deng@amd.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > Signed-off-by: Samuel Zhang <guoqing.zhang@amd.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > Change-Id: I2b20b9b94f1e41820a013ce5d05bb3fa96859b21<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > ---<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c    | 43 +++++++++++++++-------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h    |  1 +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c |  8 +++-<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.c   |  2 +-<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c      | 29 +++++++++------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c    | 30 ++++++++++++---<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  6 files changed, 82 insertions(+), 31 deletions(-)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > index 5b60d714e089..e706afcb7e95 100644<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -248,18 +248,25 @@ void amdgpu_gmc_vram_location(struct amdgpu_device *adev, struct amdgpu_gmc *mc,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  void amdgpu_gmc_sysvm_location(struct amdgpu_device *adev, struct amdgpu_gmc *mc)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        u64 hive_vram_start = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     u64 hive_vram_end = mc->xgmi.node_segment_size * mc->xgmi.num_physical_nodes - 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     mc->vram_start = mc->xgmi.node_segment_size * mc->xgmi.physical_node_id;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     mc->vram_end = mc->vram_start + mc->xgmi.node_segment_size - 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     u64 hive_vram_end = mc->xgmi.node_segment_size * mc->xgmi.num_physical_nodes;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     hive_vram_end = ALIGN(hive_vram_end, (1ULL<<adev->gmc.vmid0_page_table_block_size)<<21) - 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     if (!mc->vram_start) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             mc->vram_start = mc->xgmi.node_segment_size * mc->xgmi.physical_node_id;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             mc->vram_end = mc->vram_start + mc->xgmi.node_segment_size - 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             dev_info(adev->dev, "VRAM: %lluM 0x%016llX - 0x%016llX (%lluM used)\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     mc->mc_vram_size >> 20, mc->vram_start,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     mc->vram_end, mc->real_vram_size >> 20);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        mc->gart_start = hive_vram_end + 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        mc->gart_end = mc->gart_start + mc->gart_size - 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        mc->fb_start = hive_vram_start;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        mc->fb_end = hive_vram_end;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     dev_info(adev->dev, "VRAM: %lluM 0x%016llX - 0x%016llX (%lluM used)\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -                     mc->mc_vram_size >> 20, mc->vram_start,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -                     mc->vram_end, mc->real_vram_size >> 20);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     dev_info(adev->dev, "GART: %lluM 0x%016llX - 0x%016llX\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -                     mc->gart_size >> 20, mc->gart_start, mc->gart_end);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     dev_info(adev->dev, "FB 0x%016llX - 0x%016llX, GART: %lluM 0x%016llX - 0x%016llX\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     mc->fb_start, mc->fb_end, mc->gart_size >> 20, mc->gart_start, mc->gart_end);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  /**<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -677,8 +684,9 @@ void amdgpu_gmc_flush_gpu_tlb(struct amdgpu_device *adev, uint32_t vmid,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                                     &job);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        if (r)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                goto error_alloc;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     job->vm_pd_addr = amdgpu_gmc_pd_addr(adev->gart.bo);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     job->vm_pd_addr = amdgpu_gmc_pd_addr(adev->gmc.pdb0_bo ?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                                     adev->gmc.pdb0_bo :<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                                     adev->gart.bo);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        job->vm_needs_flush = true;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        job->ibs->ptr[job->ibs->length_dw++] = ring->funcs->nop;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        amdgpu_ring_pad_ib(ring, &job->ibs[0]);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -1041,8 +1049,9 @@ void amdgpu_gmc_init_pdb0(struct amdgpu_device *adev)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >         */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        u64 vram_size = adev->gmc.xgmi.node_segment_size * adev->gmc.xgmi.num_physical_nodes;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        u64 pde0_page_size = (1ULL<<adev->gmc.vmid0_page_table_block_size)<<21;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     u64 vram_addr = adev->vm_manager.vram_base_offset -<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     u64 vram_addr_first = adev->vm_manager.vram_base_offset -<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                adev->gmc.xgmi.physical_node_id * adev->gmc.xgmi.node_segment_size;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     u64 vram_addr = adev->vm_manager.vram_base_offset;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        u64 vram_end = vram_addr + vram_size;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        u64 gart_ptb_gpu_pa = amdgpu_gmc_vram_pa(adev, adev->gart.bo);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        int idx;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -1056,11 +1065,19 @@ void amdgpu_gmc_init_pdb0(struct amdgpu_device *adev)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        flags |= AMDGPU_PTE_FRAG((adev->gmc.vmid0_page_table_block_size + 9*1));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        flags |= AMDGPU_PDE_PTE_FLAG(adev);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     if (adev->gmc.xgmi.connected_to_cpu) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             vram_addr = vram_addr_first;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             vram_end = vram_addr + vram_size;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        /* The first n PDE0 entries are used as PTE,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >         * pointing to vram<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >         */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     for (i = 0; vram_addr < vram_end; i++, vram_addr += pde0_page_size)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -             amdgpu_gmc_set_pte_pde(adev, adev->gmc.ptr_pdb0, i, vram_addr, flags);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     for (i = 0; vram_addr < vram_end; i++, vram_addr += pde0_page_size) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             amdgpu_gmc_set_pte_pde(adev, adev->gmc.ptr_pdb0, i,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     (vram_addr >= vram_addr_first + vram_size) ? (vram_addr - vram_size) : vram_addr,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     flags);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        /* The n+1'th PDE0 entry points to a huge<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >         * PTB who has more than 512 entries each<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > index bd7fc123b8f9..758b47240c6f 100644<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -307,6 +307,7 @@ struct amdgpu_gmc {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        struct amdgpu_bo                *pdb0_bo;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        /* CPU kmapped address of pdb0*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        void                            *ptr_pdb0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     bool enable_pdb0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        /* MALL size */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        u64 mall_size;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > index d90e9daf5a50..83a3444c69d9 100644<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -287,8 +287,14 @@ int amdgpu_bo_create_reserved(struct amdgpu_device *adev,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                goto error_unpin;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     if (gpu_addr)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     if (gpu_addr) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                *gpu_addr = amdgpu_bo_gpu_offset(*bo_ptr);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             if (!adev->gmc.xgmi.connected_to_cpu && adev->gmc.enable_pdb0) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     if ((*bo_ptr)->tbo.resource->mem_type == TTM_PL_VRAM) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                             *gpu_addr -= amdgpu_ttm_domain_start(adev, TTM_PL_VRAM);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> Please NAK to that approach here. The GPU offset should still point into the mapped VRAM.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif;color:#212121">This change is to change to the default GPU address from FB aperture type to pdb0 type in this centralized place so that I don’t need to change every callsite of amdgpu_bo_create_reserved().</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
<span lang="EN-US" style="font-family:"Aptos",sans-serif;color:#212121">Could you suggest a better approach if this approach is not acceptable?<span class="apple-converted-space"> </span></span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        if (cpu_addr) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                r = amdgpu_bo_kmap(*bo_ptr, cpu_addr);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > index cb25f7f0dfc1..5ebb92ac9fd7 100644<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > --- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -180,7 +180,7 @@ gfxhub_v1_2_xcc_init_system_aperture_regs(struct amdgpu_device *adev,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                /* In the case squeezing vram into GART aperture, we don't use<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                 * FB aperture and AGP aperture. Disable them.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                 */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -             if (adev->gmc.pdb0_bo) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             if (adev->gmc.pdb0_bo && !amdgpu_sriov_vf(adev)) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                        WREG32_SOC15(GC, GET_INST(GC, i), regMC_VM_FB_LOCATION_TOP, 0);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                        WREG32_SOC15(GC, GET_INST(GC, i), regMC_VM_FB_LOCATION_BASE, 0x00FFFFFF);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                        WREG32_SOC15(GC, GET_INST(GC, i), regMC_VM_AGP_TOP, 0);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > index 7c7a9fe6be6d..73ac05b9a1bf 100644<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -1677,6 +1677,10 @@ static int gmc_v9_0_early_init(struct amdgpu_ip_block *ip_block)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                adev->gmc.private_aperture_start + (4ULL << 30) - 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        adev->gmc.noretry_flags = AMDGPU_VM_NORETRY_FLAGS_TF;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     if (amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 4, 3) ||<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +         amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 4, 4) ||<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +         amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 5, 0))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +         adev->gmc.enable_pdb0 = amdgpu_sriov_vf(adev);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        return 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -1719,6 +1723,14 @@ static void gmc_v9_0_vram_gtt_location(struct amdgpu_device *adev,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        u64 base = adev->mmhub.funcs->get_fb_location(adev);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     if (adev->gmc.xgmi.connected_to_cpu || adev->gmc.enable_pdb0) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             adev->gmc.vmid0_page_table_depth = 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             adev->gmc.vmid0_page_table_block_size = 12;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             adev->gmc.vmid0_page_table_depth = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             adev->gmc.vmid0_page_table_block_size = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> What is the justification to moving that stuff around?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">vmid0_page_table_block_size is used in new code in amdgpu_gmc_sysvm_location(). See the call sequence below.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">gmc_v9_0_sw_init<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">- gmc_v9_0_mc_init<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">                - gmc_v9_0_vram_gtt_location,
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">                                - vmid0_page_table_block_size = 12, **new location**<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">                                - amdgpu_gmc_sysvm_location<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">                                                - use **vmid0_page_table_block_size**<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">- gmc_v9_0_gart_init,
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Aptos",sans-serif">                - assign vmid0_page_table_block_size, **old location**<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        amdgpu_gmc_set_agp_default(adev, mc);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        /* add the xgmi offset of the physical node */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -1727,7 +1739,10 @@ static void gmc_v9_0_vram_gtt_location(struct amdgpu_device *adev,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                amdgpu_gmc_sysvm_location(adev, mc);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                amdgpu_gmc_vram_location(adev, mc, base);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -             amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_BEST_FIT);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             if (!adev->gmc.enable_pdb0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_BEST_FIT);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                     amdgpu_gmc_sysvm_location(adev, mc);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                if (!amdgpu_sriov_vf(adev) && (amdgpu_agp == 1))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                        amdgpu_gmc_agp_location(adev, mc);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -1838,14 +1853,6 @@ static int gmc_v9_0_gart_init(struct amdgpu_device *adev)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                return 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     if (adev->gmc.xgmi.connected_to_cpu) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -             adev->gmc.vmid0_page_table_depth = 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -             adev->gmc.vmid0_page_table_block_size = 12;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -             adev->gmc.vmid0_page_table_depth = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -             adev->gmc.vmid0_page_table_block_size = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        /* Initialize common gart structure */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        r = amdgpu_gart_init(adev);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        if (r)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -1864,7 +1871,7 @@ static int gmc_v9_0_gart_init(struct amdgpu_device *adev)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                if (r)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                        return r;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -             if (adev->gmc.xgmi.connected_to_cpu)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             if (adev->gmc.xgmi.connected_to_cpu || adev->gmc.enable_pdb0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> Drop the connected_to_cpu check here.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                        r = amdgpu_gmc_pdb0_alloc(adev);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -2361,7 +2368,7 @@ static int gmc_v9_0_gart_enable(struct amdgpu_device *adev)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        int r;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     if (adev->gmc.xgmi.connected_to_cpu)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     if (adev->gmc.xgmi.connected_to_cpu || adev->gmc.enable_pdb0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> And here.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                amdgpu_gmc_init_pdb0(adev);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        if (adev->gart.bo == NULL) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > index fe0710b55c3a..13b229d07ac4 100644<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > @@ -74,27 +74,47 @@ static void mmhub_v9_4_setup_hubid_vm_pt_regs(struct amdgpu_device *adev, int hu<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  static void mmhub_v9_4_init_gart_aperture_regs(struct amdgpu_device *adev,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                                               int hubid)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     uint64_t pt_base = amdgpu_gmc_pd_addr(adev->gart.bo);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     uint64_t pt_base = amdgpu_gmc_pd_addr(adev->gmc.pdb0_bo ? adev->gmc.pdb0_bo : adev->gart.bo);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> That can be written as adev->gmc.pdb0_bo ?: adev->gart.bo<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >        mmhub_v9_4_setup_hubid_vm_pt_regs(adev, hubid, 0, pt_base);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     if (adev->gmc.pdb0_bo) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 hubid * MMHUB_INSTANCE_REGISTER_OFFSET,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 (u32)(adev->gmc.fb_start >> 12));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_START_ADDR_HI32,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 hubid * MMHUB_INSTANCE_REGISTER_OFFSET,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 (u32)(adev->gmc.fb_start >> 44));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_END_ADDR_LO32,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 hubid * MMHUB_INSTANCE_REGISTER_OFFSET,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 (u32)(adev->gmc.gart_end >> 12));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 hubid * MMHUB_INSTANCE_REGISTER_OFFSET,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +                                 (u32)(adev->gmc.gart_end >> 44));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > ++            WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LO32,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            hubid * MMHUB_INSTANCE_REGISTER_OFFSET,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            (u32)(adev->gmc.gart_start >> 12));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_START_ADDR_HI32,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            hubid * MMHUB_INSTANCE_REGISTER_OFFSET,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            (u32)(adev->gmc.gart_start >> 44));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> When you indent the WREG32_SOC15_OFFSET() you need to indent the following lines as well.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_END_ADDR_LO32,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            hubid * MMHUB_INSTANCE_REGISTER_OFFSET,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            (u32)(adev->gmc.gart_end >> 12));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > -     WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +             WREG32_SOC15_OFFSET(MMHUB, 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            mmVML2VC0_VM_CONTEXT0_PAGE_TABLE_END_ADDR_HI32,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            hubid * MMHUB_INSTANCE_REGISTER_OFFSET,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >                            (u32)(adev->gmc.gart_end >> 44));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> > +     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> The programming of the end addr is still the same, you don't need to change anything here.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> Christian.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">> >  static void mmhub_v9_4_setup_vm_pt_regs(struct amdgpu_device *adev, uint32_t vmid,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Aptos",sans-serif">><o:p> </o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>