From: "Christian König" <ckoenig.leichtzumerken@gmail.com>
To: Alex Deucher <alexander.deucher@amd.com>, amd-gfx@lists.freedesktop.org
Cc: "Srinivasan Shanmugam" <srinivasan.shanmugam@amd.com>,
"lin cao" <lin.cao@amd.com>,
"Jingwen Chen" <Jingwen.Chen2@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"Shaoyun Liu" <shaoyun.liu@amd.com>
Subject: Re: [PATCH V4 2/2] drm/amdgpu/mes: Add cleaner shader fence address handling in MES for GFX11
Date: Mon, 10 Feb 2025 20:42:28 +0100 [thread overview]
Message-ID: <9455ed23-ddfb-436a-b1a9-cdd7d5c5dd0c@gmail.com> (raw)
In-Reply-To: <20250210162755.2488728-2-alexander.deucher@amd.com>
Am 10.02.25 um 17:27 schrieb Alex Deucher:
> From: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
>
> This commit introduces enhancements to the handling of the cleaner
> shader fence in the AMDGPU MES driver:
>
> - The MES (Microcode Execution Scheduler) now sends a PM4 packet to the
> KIQ (Kernel Interface Queue) to request the cleaner shader, ensuring
> that requests are handled in a controlled manner and avoiding the
> race conditions.
> - The CP (Compute Processor) firmware has been updated to use a private
> bus for accessing specific registers, avoiding unnecessary operations
> that could lead to issues in VF (Virtual Function) mode.
> - The cleaner shader fence memory address is now set correctly in the
> `mes_set_hw_res_pkt` structure, allowing for proper synchronization of
> the cleaner shader execution. This is done by calculating the address
> using the write-back memory base address and the cleaner fence offset.
>
> Cc: lin cao <lin.cao@amd.com>
> Cc: Jingwen Chen <Jingwen.Chen2@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Suggested-by: Shaoyun Liu <shaoyun.liu@amd.com>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 17 ++++++++++++-----
> 1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> index e862a3febe2b2..661268172dcf6 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> @@ -754,7 +754,7 @@ static int mes_v11_0_set_hw_resources_1(struct amdgpu_mes *mes)
> mes_set_hw_res_pkt.header.dwsize = API_FRAME_SIZE_IN_DWORDS;
> mes_set_hw_res_pkt.enable_mes_info_ctx = 1;
>
> - ret = amdgpu_bo_create_kernel(adev, size, PAGE_SIZE,
> + ret = amdgpu_bo_create_kernel(adev, size + AMDGPU_GPU_PAGE_SIZE, PAGE_SIZE,
You might want to adjust the size calculation earlier in the function
instead of here.
Christian.
> AMDGPU_GEM_DOMAIN_VRAM,
> &mes->resource_1,
> &mes->resource_1_gpu_addr,
> @@ -765,7 +765,10 @@ static int mes_v11_0_set_hw_resources_1(struct amdgpu_mes *mes)
> }
>
> mes_set_hw_res_pkt.mes_info_ctx_mc_addr = mes->resource_1_gpu_addr;
> - mes_set_hw_res_pkt.mes_info_ctx_size = mes->resource_1->tbo.base.size;
> + mes_set_hw_res_pkt.mes_info_ctx_size = size;
> + mes_set_hw_res_pkt.cleaner_shader_fence_mc_addr =
> + mes->resource_1_gpu_addr + size;
> +
> return mes_v11_0_submit_pkt_and_poll_completion(mes,
> &mes_set_hw_res_pkt, sizeof(mes_set_hw_res_pkt),
> offsetof(union MESAPI_SET_HW_RESOURCES_1, api_status));
> @@ -1632,7 +1635,8 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
> if (r)
> goto failure;
>
> - if (amdgpu_sriov_is_mes_info_enable(adev)) {
> + if (amdgpu_sriov_is_mes_info_enable(adev) ||
> + adev->gfx.enable_cleaner_shader) {
> r = mes_v11_0_set_hw_resources_1(&adev->mes);
> if (r) {
> DRM_ERROR("failed mes_v11_0_set_hw_resources_1, r=%d\n", r);
> @@ -1665,10 +1669,13 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
> static int mes_v11_0_hw_fini(struct amdgpu_ip_block *ip_block)
> {
> struct amdgpu_device *adev = ip_block->adev;
> - if (amdgpu_sriov_is_mes_info_enable(adev)) {
> +
> + if (amdgpu_sriov_is_mes_info_enable(adev) ||
> + adev->gfx.enable_cleaner_shader) {
> amdgpu_bo_free_kernel(&adev->mes.resource_1, &adev->mes.resource_1_gpu_addr,
> - &adev->mes.resource_1_addr);
> + &adev->mes.resource_1_addr);
> }
> +
> return 0;
> }
>
next prev parent reply other threads:[~2025-02-10 19:42 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-10 16:27 [PATCH 1/2] drm/amdgpu/mes11: fix set_hw_resources_1 calculation Alex Deucher
2025-02-10 16:27 ` [PATCH V4 2/2] drm/amdgpu/mes: Add cleaner shader fence address handling in MES for GFX11 Alex Deucher
2025-02-10 18:49 ` Liu, Shaoyun
2025-02-10 20:10 ` Alex Deucher
2025-02-10 19:42 ` Christian König [this message]
2025-02-10 19:41 ` [PATCH 1/2] drm/amdgpu/mes11: fix set_hw_resources_1 calculation Christian König
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=9455ed23-ddfb-436a-b1a9-cdd7d5c5dd0c@gmail.com \
--to=ckoenig.leichtzumerken@gmail.com \
--cc=Jingwen.Chen2@amd.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=lin.cao@amd.com \
--cc=shaoyun.liu@amd.com \
--cc=srinivasan.shanmugam@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.