Skip to content

Commit 0043ec2

Browse files
srishanmalexdeucher
authored andcommitted
drm/amdgpu/gfx9: Add Cleaner Shader Support for GFX9.x GPUs
Enable the cleaner shader for other GFX9.x series of GPUs to provide data isolation between GPU workloads. The cleaner shader is responsible for clearing the Local Data Store (LDS), Vector General Purpose Registers (VGPRs), and Scalar General Purpose Registers (SGPRs), which helps prevent data leakage and ensures accurate computation results. This update extends cleaner shader support to GFX9.x GPUs, previously available for GFX9.4.2. It enhances security by clearing GPU memory between processes and maintains a consistent GPU state across KGD and KFD workloads. Cc: Manu Rastogi <[email protected]> Cc: Christian König <[email protected]> Cc: Alex Deucher <[email protected]> Signed-off-by: Srinivasan Shanmugam <[email protected]> Acked-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]> (cherry picked from commit 9980892)
1 parent 86731a2 commit 0043ec2

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2235,6 +2235,25 @@ static int gfx_v9_0_sw_init(struct amdgpu_ip_block *ip_block)
22352235
}
22362236

22372237
switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
2238+
case IP_VERSION(9, 0, 1):
2239+
case IP_VERSION(9, 2, 1):
2240+
case IP_VERSION(9, 4, 0):
2241+
case IP_VERSION(9, 2, 2):
2242+
case IP_VERSION(9, 1, 0):
2243+
case IP_VERSION(9, 3, 0):
2244+
adev->gfx.cleaner_shader_ptr = gfx_9_4_2_cleaner_shader_hex;
2245+
adev->gfx.cleaner_shader_size = sizeof(gfx_9_4_2_cleaner_shader_hex);
2246+
if (adev->gfx.me_fw_version >= 167 &&
2247+
adev->gfx.pfp_fw_version >= 196 &&
2248+
adev->gfx.mec_fw_version >= 474) {
2249+
adev->gfx.enable_cleaner_shader = true;
2250+
r = amdgpu_gfx_cleaner_shader_sw_init(adev, adev->gfx.cleaner_shader_size);
2251+
if (r) {
2252+
adev->gfx.enable_cleaner_shader = false;
2253+
dev_err(adev->dev, "Failed to initialize cleaner shader\n");
2254+
}
2255+
}
2256+
break;
22382257
case IP_VERSION(9, 4, 2):
22392258
adev->gfx.cleaner_shader_ptr = gfx_9_4_2_cleaner_shader_hex;
22402259
adev->gfx.cleaner_shader_size = sizeof(gfx_9_4_2_cleaner_shader_hex);

0 commit comments

Comments
 (0)