All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Deucher <alexdeucher@gmail.com>
To: Luben Tuikov <luben.tuikov@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>,
	"amd-gfx list" <amd-gfx@lists.freedesktop.org>
Subject: Re: [PATCH 1/3] drm/amdgpu: use VRAM|GTT for a bunch of kernel allocations
Date: Thu, 2 Jun 2022 13:17:05 -0400	[thread overview]
Message-ID: <CADnq5_OVRyYs0NYYjNH82BVp=PAfs34X_+C9NFrWYPpAhCmw5A@mail.gmail.com> (raw)
In-Reply-To: <20220602161210.19380-2-luben.tuikov@amd.com>

On Thu, Jun 2, 2022 at 12:12 PM Luben Tuikov <luben.tuikov@amd.com> wrote:
>
> From: Christian König <christian.koenig@amd.com>
>
> Technically all of those can use GTT as well, no need to force things
> into VRAM.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> Acked-by: Luben Tuikov <luben.tuikov@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c       |  7 +++++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c       | 20 +++++++++++--------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c       |  9 ++++++---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c       | 14 +++++++++----
>  drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c         |  3 ++-
>  drivers/gpu/drm/amd/amdgpu/psp_v10_0.c        |  3 ++-
>  .../amd/pm/powerplay/smumgr/smu10_smumgr.c    | 10 ++++------

We need to audit the new files which have been added since the time
this patch set was written.  E.g., gfx_v10_.c and gfx_v11_0.c, and
psp_v11_0.c, swsmu, etc. have been added in the meantime.

Alex

>  7 files changed, 41 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> index 16699158e00d8c..d799815a0f288f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> @@ -338,8 +338,11 @@ int amdgpu_gfx_mqd_sw_init(struct amdgpu_device *adev,
>                  * KIQ MQD no matter SRIOV or Bare-metal
>                  */
>                 r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
> -                                           AMDGPU_GEM_DOMAIN_VRAM, &ring->mqd_obj,
> -                                           &ring->mqd_gpu_addr, &ring->mqd_ptr);
> +                                           AMDGPU_GEM_DOMAIN_VRAM |
> +                                           AMDGPU_GEM_DOMAIN_GTT,
> +                                           &ring->mqd_obj,
> +                                           &ring->mqd_gpu_addr,
> +                                           &ring->mqd_ptr);
>                 if (r) {
>                         dev_warn(adev->dev, "failed to create ring mqd ob (%d)", r);
>                         return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> index e9411c28d88ba8..116f7fa25aa636 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> @@ -748,9 +748,12 @@ static int psp_tmr_init(struct psp_context *psp)
>         }
>
>         pptr = amdgpu_sriov_vf(psp->adev) ? &tmr_buf : NULL;
> -       ret = amdgpu_bo_create_kernel(psp->adev, tmr_size, PSP_TMR_SIZE(psp->adev),
> -                                     AMDGPU_GEM_DOMAIN_VRAM,
> -                                     &psp->tmr_bo, &psp->tmr_mc_addr, pptr);
> +       ret = amdgpu_bo_create_kernel(psp->adev, tmr_size,
> +                                     PSP_TMR_SIZE(psp->adev),
> +                                     AMDGPU_GEM_DOMAIN_VRAM |
> +                                     AMDGPU_GEM_DOMAIN_GTT,
> +                                     &psp->tmr_bo, &psp->tmr_mc_addr,
> +                                     pptr);
>
>         return ret;
>  }
> @@ -1039,7 +1042,8 @@ int psp_ta_init_shared_buf(struct psp_context *psp,
>         * physical) for ta to host memory
>         */
>         return amdgpu_bo_create_kernel(psp->adev, mem_ctx->shared_mem_size,
> -                                     PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM,
> +                                     PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM |
> +                                     AMDGPU_GEM_DOMAIN_GTT,
>                                       &mem_ctx->shared_bo,
>                                       &mem_ctx->shared_mc_addr,
>                                       &mem_ctx->shared_buf);
> @@ -3397,10 +3401,10 @@ static ssize_t psp_usbc_pd_fw_sysfs_write(struct device *dev,
>
>         /* LFB address which is aligned to 1MB boundary per PSP request */
>         ret = amdgpu_bo_create_kernel(adev, usbc_pd_fw->size, 0x100000,
> -                                               AMDGPU_GEM_DOMAIN_VRAM,
> -                                               &fw_buf_bo,
> -                                               &fw_pri_mc_addr,
> -                                               &fw_pri_cpu_addr);
> +                                     AMDGPU_GEM_DOMAIN_VRAM |
> +                                     AMDGPU_GEM_DOMAIN_GTT,
> +                                     &fw_buf_bo, &fw_pri_mc_addr,
> +                                     &fw_pri_cpu_addr);
>         if (ret)
>                 goto rel_buf;
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c
> index 6373bfb47d55d7..c591ed6553fcc8 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.c
> @@ -93,7 +93,8 @@ int amdgpu_gfx_rlc_init_sr(struct amdgpu_device *adev, u32 dws)
>
>         /* allocate save restore block */
>         r = amdgpu_bo_create_reserved(adev, dws * 4, PAGE_SIZE,
> -                                     AMDGPU_GEM_DOMAIN_VRAM,
> +                                     AMDGPU_GEM_DOMAIN_VRAM |
> +                                     AMDGPU_GEM_DOMAIN_GTT,
>                                       &adev->gfx.rlc.save_restore_obj,
>                                       &adev->gfx.rlc.save_restore_gpu_addr,
>                                       (void **)&adev->gfx.rlc.sr_ptr);
> @@ -130,7 +131,8 @@ int amdgpu_gfx_rlc_init_csb(struct amdgpu_device *adev)
>         /* allocate clear state block */
>         adev->gfx.rlc.clear_state_size = dws = adev->gfx.rlc.funcs->get_csb_size(adev);
>         r = amdgpu_bo_create_kernel(adev, dws * 4, PAGE_SIZE,
> -                                     AMDGPU_GEM_DOMAIN_VRAM,
> +                                     AMDGPU_GEM_DOMAIN_VRAM |
> +                                     AMDGPU_GEM_DOMAIN_GTT,
>                                       &adev->gfx.rlc.clear_state_obj,
>                                       &adev->gfx.rlc.clear_state_gpu_addr,
>                                       (void **)&adev->gfx.rlc.cs_ptr);
> @@ -156,7 +158,8 @@ int amdgpu_gfx_rlc_init_cpt(struct amdgpu_device *adev)
>         int r;
>
>         r = amdgpu_bo_create_reserved(adev, adev->gfx.rlc.cp_table_size,
> -                                     PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM,
> +                                     PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM |
> +                                     AMDGPU_GEM_DOMAIN_GTT,
>                                       &adev->gfx.rlc.cp_table_obj,
>                                       &adev->gfx.rlc.cp_table_gpu_addr,
>                                       (void **)&adev->gfx.rlc.cp_table_ptr);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
> index aa7acfabf360b0..10350387687e89 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
> @@ -263,8 +263,11 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev)
>                         continue;
>
>                 r = amdgpu_bo_create_kernel(adev, bo_size, PAGE_SIZE,
> -                                               AMDGPU_GEM_DOMAIN_VRAM, &adev->vcn.inst[i].vcpu_bo,
> -                                               &adev->vcn.inst[i].gpu_addr, &adev->vcn.inst[i].cpu_addr);
> +                                           AMDGPU_GEM_DOMAIN_VRAM |
> +                                           AMDGPU_GEM_DOMAIN_GTT,
> +                                           &adev->vcn.inst[i].vcpu_bo,
> +                                           &adev->vcn.inst[i].gpu_addr,
> +                                           &adev->vcn.inst[i].cpu_addr);
>                 if (r) {
>                         dev_err(adev->dev, "(%d) failed to allocate vcn bo\n", r);
>                         return r;
> @@ -285,8 +288,11 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev)
>
>                 if (adev->vcn.indirect_sram) {
>                         r = amdgpu_bo_create_kernel(adev, 64 * 2 * 4, PAGE_SIZE,
> -                                       AMDGPU_GEM_DOMAIN_VRAM, &adev->vcn.inst[i].dpg_sram_bo,
> -                                       &adev->vcn.inst[i].dpg_sram_gpu_addr, &adev->vcn.inst[i].dpg_sram_cpu_addr);
> +                                       AMDGPU_GEM_DOMAIN_VRAM |
> +                                       AMDGPU_GEM_DOMAIN_GTT,
> +                                       &adev->vcn.inst[i].dpg_sram_bo,
> +                                       &adev->vcn.inst[i].dpg_sram_gpu_addr,
> +                                       &adev->vcn.inst[i].dpg_sram_cpu_addr);
>                         if (r) {
>                                 dev_err(adev->dev, "VCN %d (%d) failed to allocate DPG bo\n", i, r);
>                                 return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> index 5349ca4d19e38b..36bd6e5c52ec01 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> @@ -1948,7 +1948,8 @@ static int gfx_v9_0_mec_init(struct amdgpu_device *adev)
>         mec_hpd_size = adev->gfx.num_compute_rings * GFX9_MEC_HPD_SIZE;
>         if (mec_hpd_size) {
>                 r = amdgpu_bo_create_reserved(adev, mec_hpd_size, PAGE_SIZE,
> -                                             AMDGPU_GEM_DOMAIN_VRAM,
> +                                             AMDGPU_GEM_DOMAIN_VRAM |
> +                                             AMDGPU_GEM_DOMAIN_GTT,
>                                               &adev->gfx.mec.hpd_eop_obj,
>                                               &adev->gfx.mec.hpd_eop_gpu_addr,
>                                               (void **)&hpd);
> diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
> index ed2293686f0de3..48ca4a501d40fb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c
> @@ -140,7 +140,8 @@ static int psp_v10_0_ring_init(struct psp_context *psp,
>         /* allocate 4k Page of Local Frame Buffer memory for ring */
>         ring->ring_size = 0x1000;
>         ret = amdgpu_bo_create_kernel(adev, ring->ring_size, PAGE_SIZE,
> -                                     AMDGPU_GEM_DOMAIN_VRAM,
> +                                     AMDGPU_GEM_DOMAIN_VRAM |
> +                                     AMDGPU_GEM_DOMAIN_GTT,
>                                       &adev->firmware.rbuf,
>                                       &ring->ring_mem_mc_addr,
>                                       (void **)&ring->ring_mem);
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/smumgr/smu10_smumgr.c b/drivers/gpu/drm/amd/pm/powerplay/smumgr/smu10_smumgr.c
> index 88a5641465dcf5..7eeab84d421ac3 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/smumgr/smu10_smumgr.c
> +++ b/drivers/gpu/drm/amd/pm/powerplay/smumgr/smu10_smumgr.c
> @@ -250,9 +250,8 @@ static int smu10_smu_init(struct pp_hwmgr *hwmgr)
>
>         /* allocate space for watermarks table */
>         r = amdgpu_bo_create_kernel((struct amdgpu_device *)hwmgr->adev,
> -                       sizeof(Watermarks_t),
> -                       PAGE_SIZE,
> -                       AMDGPU_GEM_DOMAIN_VRAM,
> +                       sizeof(Watermarks_t), PAGE_SIZE,
> +                       AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT,
>                         &priv->smu_tables.entry[SMU10_WMTABLE].handle,
>                         &priv->smu_tables.entry[SMU10_WMTABLE].mc_addr,
>                         &priv->smu_tables.entry[SMU10_WMTABLE].table);
> @@ -266,9 +265,8 @@ static int smu10_smu_init(struct pp_hwmgr *hwmgr)
>
>         /* allocate space for watermarks table */
>         r = amdgpu_bo_create_kernel((struct amdgpu_device *)hwmgr->adev,
> -                       sizeof(DpmClocks_t),
> -                       PAGE_SIZE,
> -                       AMDGPU_GEM_DOMAIN_VRAM,
> +                       sizeof(DpmClocks_t), PAGE_SIZE,
> +                       AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT,
>                         &priv->smu_tables.entry[SMU10_CLOCKTABLE].handle,
>                         &priv->smu_tables.entry[SMU10_CLOCKTABLE].mc_addr,
>                         &priv->smu_tables.entry[SMU10_CLOCKTABLE].table);
> --
> 2.36.1.74.g277cf0bc36
>

  reply	other threads:[~2022-06-02 17:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-02 16:12 [PATCH 0/3] Some VRAM cleanups Luben Tuikov
2022-06-02 16:12 ` [PATCH 1/3] drm/amdgpu: use VRAM|GTT for a bunch of kernel allocations Luben Tuikov
2022-06-02 17:17   ` Alex Deucher [this message]
2022-06-02 16:12 ` [PATCH 2/3] drm/amdgpu: rename vram_scratch into mem_scratch Luben Tuikov
2022-06-02 16:12 ` [PATCH 3/3] drm/amdgpu: cleanup visible vram size handling Luben Tuikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADnq5_OVRyYs0NYYjNH82BVp=PAfs34X_+C9NFrWYPpAhCmw5A@mail.gmail.com' \
    --to=alexdeucher@gmail.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=christian.koenig@amd.com \
    --cc=luben.tuikov@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.