[PATCH] drm/amdgpu/gfx11: Add Cleaner Shader Support for GFX11.5.2/11.5.3 GPUs
Alex Deucher
alexdeucher at gmail.com
Thu Apr 10 14:19:42 UTC 2025
On Thu, Apr 10, 2025 at 10:18 AM Srinivasan Shanmugam
<srinivasan.shanmugam at amd.com> wrote:
>
> Enable the cleaner shader for additional GFX11.5.2/11.5.3 series GPUs to
> ensure data isolation among GPU tasks. The cleaner shader is tasked with
> clearing the Local Data Store (LDS), Vector General Purpose Registers
> (VGPRs), and Scalar General Purpose Registers (SGPRs), which helps avoid
> data leakage and guarantees the accuracy of computational results.
>
> This update extends cleaner shader support to GFX11.5.2/11.5.3 GPUs,
> previously available for GFX11.0.3. It enhances security by clearing GPU
> memory between processes and maintains a consistent GPU state across KGD
> and KFD workloads.
>
> Cc: Mario Sopena-Novales <mario.novales at amd.com>
> Cc: Christian König <christian.koenig at amd.com>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam at amd.com>
Acked-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 28 ++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> index 91d29f482c3c..06ad10d06ca1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> @@ -1688,6 +1688,34 @@ static int gfx_v11_0_sw_init(struct amdgpu_ip_block *ip_block)
> }
> }
> break;
> + case IP_VERSION(11, 5, 2):
> + adev->gfx.cleaner_shader_ptr = gfx_11_0_3_cleaner_shader_hex;
> + adev->gfx.cleaner_shader_size = sizeof(gfx_11_0_3_cleaner_shader_hex);
> + if (adev->gfx.me_fw_version >= 12 &&
> + adev->gfx.pfp_fw_version >= 15 &&
> + adev->gfx.mec_fw_version >= 15) {
> + adev->gfx.enable_cleaner_shader = true;
> + r = amdgpu_gfx_cleaner_shader_sw_init(adev, adev->gfx.cleaner_shader_size);
> + if (r) {
> + adev->gfx.enable_cleaner_shader = false;
> + dev_err(adev->dev, "Failed to initialize cleaner shader\n");
> + }
> + }
> + break;
> + case IP_VERSION(11, 5, 3):
> + adev->gfx.cleaner_shader_ptr = gfx_11_0_3_cleaner_shader_hex;
> + adev->gfx.cleaner_shader_size = sizeof(gfx_11_0_3_cleaner_shader_hex);
> + if (adev->gfx.me_fw_version >= 7 &&
> + adev->gfx.pfp_fw_version >= 8 &&
> + adev->gfx.mec_fw_version >= 8) {
> + adev->gfx.enable_cleaner_shader = true;
> + r = amdgpu_gfx_cleaner_shader_sw_init(adev, adev->gfx.cleaner_shader_size);
> + if (r) {
> + adev->gfx.enable_cleaner_shader = false;
> + dev_err(adev->dev, "Failed to initialize cleaner shader\n");
> + }
> + }
> + break;
> default:
> adev->gfx.enable_cleaner_shader = false;
> break;
> --
> 2.34.1
>
More information about the amd-gfx
mailing list