This patch set enables process isolation mode which serializes access to the graphics block between processes. When this mode is active, a cleaner shader is run between processes to clear shader LDS (Local Data Store) and GPRs (General Purpose Registers). A sysfs interface is also available to manually clear LDS and GPRs if you for example want to clear LDS and GPRs when a user logs out. This includes support for GFX 9.4.3 and 9.4.4. Support for other GPUs is in progress and will be available when ready. Alex Deucher (2): drm/amdgpu: handle enforce isolation on non-0 gfxhub drm/amdgpu: Emit cleaner shader at end of IB submission Amber Lin (2): drm/amdkfd: APIs to stop/start KFD scheduling drm/amdkfd: Enable processes isolation on gfx9 Srinivasan Shanmugam (13): drm/amdgpu: Add infrastructure for Cleaner Shader feature drm/amdgpu: Make enforce_isolation setting per GPU drm/amdgpu: Enforce isolation as part of the job drm/amdgpu: Add enforce_isolation sysfs attribute drm/amdgpu: Add sysfs interface for running cleaner shader drm/amdgpu: Add PACKET3_RUN_CLEANER_SHADER for cleaner shader execution drm/amdgpu/gfx9: Implement cleaner shader support for GFX9 hardware drm/amdgpu/gfx9: Implement cleaner shader support for GFX9.4.3 hardware drm/amdgpu/gfx9: Add cleaner shader for GFX9.4.3 drm/amdgpu/gfx9: Add cleaner shader support for GFX9.4.4 hardware drm/amdgpu: Implement Enforce Isolation Handler for KGD/KFD serialization drm/amdgpu/gfx9: Apply Isolation Enforcement to GFX & Compute rings drm/amdgpu/gfx_v9_4_3: Apply Isolation Enforcement to GFX & Compute rings drivers/gpu/drm/amd/amdgpu/amdgpu.h | 6 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 18 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 14 + drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 23 + drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 437 ++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 31 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 17 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_job.h | 3 + drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 + drivers/gpu/drm/amd/amdgpu/aqua_vanjaram.c | 4 + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 51 +- .../drm/amd/amdgpu/gfx_v9_0_cleaner_shader.h | 26 ++ drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c | 60 ++- .../amd/amdgpu/gfx_v9_4_3_cleaner_shader.asm | 153 ++++++ .../amd/amdgpu/gfx_v9_4_3_cleaner_shader.h | 64 +++ drivers/gpu/drm/amd/amdgpu/soc15d.h | 4 + drivers/gpu/drm/amd/amdkfd/kfd_device.c | 39 ++ .../drm/amd/amdkfd/kfd_device_queue_manager.c | 58 ++- .../drm/amd/amdkfd/kfd_device_queue_manager.h | 9 + .../drm/amd/amdkfd/kfd_packet_manager_v9.c | 14 +- .../gpu/drm/amd/amdkfd/kfd_pm4_headers_ai.h | 5 +- .../amd/amdkfd/kfd_pm4_headers_aldebaran.h | 2 +- 25 files changed, 1028 insertions(+), 23 deletions(-) create mode 100644 drivers/gpu/drm/amd/amdgpu/gfx_v9_0_cleaner_shader.h create mode 100644 drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3_cleaner_shader.asm create mode 100644 drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3_cleaner_shader.h -- 2.46.0