[PATCH v2 0/9] Preemption support for A7XX
Antonino Maniscalco
antomani103 at gmail.com
Fri Aug 30 15:32:42 UTC 2024
This series implements preemption for A7XX targets, which allows the GPU to
switch to an higher priority ring when work is pushed to it, reducing latency
for high priority submissions.
This series enables L1 preemption with skip_save_restore which requires
the following userspace patches to function:
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30544
A flag is added to `msm_submitqueue_create` to only allow submissions
from compatible userspace to be preempted, therefore maintaining
compatibility.
Some commits from this series are based on a previous series to enable
preemption on A6XX targets:
https://lkml.kernel.org/1520489185-21828-1-git-send-email-smasetty@codeaurora.org
Signed-off-by: Antonino Maniscalco <antomani103 at gmail.com>
---
Changes in v2:
- Added preept_record_size for X185 in PATCH 3/7
- Added patches to reset perf counters
- Dropped unused defines
- Dropped unused variable (fixes warning)
- Only enable preemption on a750
- Reject MSM_SUBMITQUEUE_ALLOW_PREEMPT for unsupported targets
- Added Akhil's Reviewed-By tags to patches 1/9,2/9,3/9
- Added Neil's Tested-By tags
- Added explanation for UAPI changes in commit message
- Link to v1: https://lore.kernel.org/r/20240815-preemption-a750-t-v1-0-7bda26c34037@gmail.com
---
Antonino Maniscalco (9):
drm/msm: Fix bv_fence being used as bv_rptr
drm/msm: Add submitqueue setup and close
drm/msm: Add a `preempt_record_size` field
drm/msm/A6xx: Implement preemption for A7XX targets
drm/msm/A6xx: Sync relevant adreno_pm4.xml changes
drm/msm/A6xx: Use posamble to reset counters on preemption
drm/msm/A6xx: Add traces for preemption
drm/msm/A6XX: Add a flag to allow preemption to submitqueue_create
drm/msm/A6xx: Enable preemption for A750
drivers/gpu/drm/msm/Makefile | 1 +
drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 4 +
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 353 +++++++++++++++-
drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 174 ++++++++
drivers/gpu/drm/msm/adreno/a6xx_preempt.c | 462 +++++++++++++++++++++
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 8 +-
drivers/gpu/drm/msm/msm_gpu.h | 7 +
drivers/gpu/drm/msm/msm_gpu_trace.h | 28 ++
drivers/gpu/drm/msm/msm_ringbuffer.h | 8 +
drivers/gpu/drm/msm/msm_submitqueue.c | 13 +
.../gpu/drm/msm/registers/adreno/adreno_pm4.xml | 39 +-
include/uapi/drm/msm_drm.h | 5 +-
12 files changed, 1062 insertions(+), 40 deletions(-)
---
base-commit: 7c626ce4bae1ac14f60076d00eafe71af30450ba
change-id: 20240815-preemption-a750-t-fcee9a844b39
Best regards,
--
Antonino Maniscalco <antomani103 at gmail.com>
More information about the Freedreno
mailing list