Hi,
This series adds support for Second-Level Trap Handlers (SLTH) for
AMDGPU user queues.
When a trap occurs, execution first enters a kernel-managed
first-level trap handler. The first-level handler then transfers
control to a userspace-provided second-level trap handler. After
the second-level handler completes, execution returns through the
normal trap return path and resumes the original workload.
Changes since v3
================
- Resolved rebase issues and adjusted trap infrastructure integration
accordingly.
Base Tree
=========
Series developed on top of:
a261f3540b7a
drm/amdgpu: don't drop the gang dependency fence twice
Branch:
amd-staging-drm-next
Patch Series
============
1. drm/amdgpu: Add CWSR infrastructure for user queues
2. drm/amdgpu: Integrate CWSR with user queues
3. drm/amdgpu: Add CWSR userspace interfaces
4. drm/amdgpu: Add second-level trap handler infrastructure
5. drm/amdgpu: Make first-level trap state GPUVM-owned
6. drm/amdgpu: Program trap TBA/TMA for kernel-managed VMIDs
7. drm/amdgpu/uapi: Add SET/CLEAR L2 TRAP to VM ioctl
Validation Platform
===================
GPU:
Navi48 (0x746f)
Firmware:
MES_KIQ feature version: 1
MES_KIQ firmware version: 0x00000094
MES feature version: 1
MES firmware version: 0x00000094
VBIOS version: 113-G2820100-001
IGT Validation
==============
Associated IGT series:
tests/amdgpu: Add SLTH validation tests for trap handling
and trap return
https://patchwork.freedesktop.org/patch/765208/?series=177473&rev=1
Validated tests:
slth-gfx-kq-vgpr-proof
slth-gfx-umq-vgpr-proof
slth-comp-kq-vgpr-proof
slth-comp-kq-returnproof
Validated functionality
=======================
- SLTH installation and removal
- Trap invocation and trap return
- VGPR preservation
- Execution resume after trap handling
- GFX KQ path
- GFX UMQ path
- Compute KQ path
End-to-End Result
=================
Testing on Navi48 hardware demonstrates successful
installation of a second-level trap handler, trap execution,
trap return, execution resume, VGPR preservation and handler
removal across the validated queue paths.
Thanks,
Srini
Lijo Lazar (4):
drm/amdgpu: Add CWSR infrastructure for user queues
drm/amdgpu: Integrate CWSR with user queues
drm/amdgpu: Add CWSR userspace interfaces
drm/amdgpu: Add second-level trap handler infrastructure
Srinivasan Shanmugam (3):
drm/amdgpu: Make first-level trap state GPUVM-owned
drm/amdgpu: Program trap TBA/TMA for kernel-managed VMIDs
drm/amdgpu/uapi: Add SET/CLEAR L2 TRAP to VM ioctl
drivers/gpu/drm/amd/amdgpu/Makefile | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 5 +
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 10 +
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 20 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 24 +
drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 8 +
drivers/gpu/drm/amd/amdgpu/amdgpu_trap.c | 771 ++++++++++++++++++++
drivers/gpu/drm/amd/amdgpu/amdgpu_trap.h | 148 ++++
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 24 +
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.h | 7 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 98 ++-
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 17 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.h | 22 +
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c | 14 +
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 28 +-
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c | 75 +-
drivers/gpu/drm/amd/amdgpu/gfxhub_v11_5_0.c | 50 ++
drivers/gpu/drm/amd/amdgpu/gfxhub_v12_0.c | 50 ++
drivers/gpu/drm/amd/amdgpu/gfxhub_v12_1.c | 61 ++
drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | 47 ++
drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.c | 59 ++
drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.c | 50 ++
drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.c | 50 ++
drivers/gpu/drm/amd/amdgpu/gfxhub_v3_0.c | 55 ++
drivers/gpu/drm/amd/amdgpu/gfxhub_v3_0_3.c | 55 ++
drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 107 ++-
include/uapi/drm/amdgpu_drm.h | 90 +++
27 files changed, 1885 insertions(+), 62 deletions(-)
create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_trap.c
create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_trap.h
base-commit: 414fcda62e2f852a47aa8c71341be3141ab74970
--
2.34.1