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

Reply via email to