On Thu, Apr 10, 2025 at 10:18 AM Srinivasan Shanmugam <srinivasan.shanmu...@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.nova...@amd.com> > Cc: Christian König <christian.koe...@amd.com> > Cc: Alex Deucher <alexander.deuc...@amd.com> > Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmu...@amd.com>
Acked-by: Alex Deucher <alexander.deuc...@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 >