]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu/gfx11: Apply Isolation Enforcement to GFX & Compute rings
authorSrinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Wed, 2 Oct 2024 04:22:39 +0000 (09:52 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 7 Oct 2024 18:09:34 +0000 (14:09 -0400)
This commit applies isolation enforcement to the GFX and Compute rings
in the gfx_v11_0 module.

The commit sets `amdgpu_gfx_enforce_isolation_ring_begin_use` and
`amdgpu_gfx_enforce_isolation_ring_end_use` as the functions to be
called when a ring begins and ends its use, respectively.

`amdgpu_gfx_enforce_isolation_ring_begin_use` is called when a ring
begins its use. This function cancels any scheduled
`enforce_isolation_work` and, if necessary, signals the Kernel Fusion
Driver (KFD) to stop the runqueue.

`amdgpu_gfx_enforce_isolation_ring_end_use` is called when a ring ends
its use. This function schedules `enforce_isolation_work` to be run
after a delay.

These functions are part of the Enforce Isolation Handler, which
enforces shader isolation on AMD GPUs to prevent data leakage between
different processes.

Cc: Christian König <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c

index c78a63da8d2ee01be3271ad95b8db61625bd62e4..c3f98c46b39b5e9e54da33481046c6effe5b6d80 100644 (file)
@@ -6875,6 +6875,8 @@ static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_gfx = {
        .emit_mem_sync = gfx_v11_0_emit_mem_sync,
        .reset = gfx_v11_0_reset_kgq,
        .emit_cleaner_shader = gfx_v11_0_ring_emit_cleaner_shader,
+       .begin_use = amdgpu_gfx_enforce_isolation_ring_begin_use,
+       .end_use = amdgpu_gfx_enforce_isolation_ring_end_use,
 };
 
 static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_compute = {
@@ -6915,6 +6917,8 @@ static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_compute = {
        .emit_mem_sync = gfx_v11_0_emit_mem_sync,
        .reset = gfx_v11_0_reset_kcq,
        .emit_cleaner_shader = gfx_v11_0_ring_emit_cleaner_shader,
+       .begin_use = amdgpu_gfx_enforce_isolation_ring_begin_use,
+       .end_use = amdgpu_gfx_enforce_isolation_ring_end_use,
 };
 
 static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_kiq = {