Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amdgpu/gfx11: Add Cleaner Shader Support for GFX11.5.2/11.5.3 GPUs

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@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Srinivasan Shanmugam and committed by
Alex Deucher
e62a8bc5 20c50a9a

+28
+28
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
··· 1688 1688 } 1689 1689 } 1690 1690 break; 1691 + case IP_VERSION(11, 5, 2): 1692 + adev->gfx.cleaner_shader_ptr = gfx_11_0_3_cleaner_shader_hex; 1693 + adev->gfx.cleaner_shader_size = sizeof(gfx_11_0_3_cleaner_shader_hex); 1694 + if (adev->gfx.me_fw_version >= 12 && 1695 + adev->gfx.pfp_fw_version >= 15 && 1696 + adev->gfx.mec_fw_version >= 15) { 1697 + adev->gfx.enable_cleaner_shader = true; 1698 + r = amdgpu_gfx_cleaner_shader_sw_init(adev, adev->gfx.cleaner_shader_size); 1699 + if (r) { 1700 + adev->gfx.enable_cleaner_shader = false; 1701 + dev_err(adev->dev, "Failed to initialize cleaner shader\n"); 1702 + } 1703 + } 1704 + break; 1705 + case IP_VERSION(11, 5, 3): 1706 + adev->gfx.cleaner_shader_ptr = gfx_11_0_3_cleaner_shader_hex; 1707 + adev->gfx.cleaner_shader_size = sizeof(gfx_11_0_3_cleaner_shader_hex); 1708 + if (adev->gfx.me_fw_version >= 7 && 1709 + adev->gfx.pfp_fw_version >= 8 && 1710 + adev->gfx.mec_fw_version >= 8) { 1711 + adev->gfx.enable_cleaner_shader = true; 1712 + r = amdgpu_gfx_cleaner_shader_sw_init(adev, adev->gfx.cleaner_shader_size); 1713 + if (r) { 1714 + adev->gfx.enable_cleaner_shader = false; 1715 + dev_err(adev->dev, "Failed to initialize cleaner shader\n"); 1716 + } 1717 + } 1718 + break; 1691 1719 default: 1692 1720 adev->gfx.enable_cleaner_shader = false; 1693 1721 break;