diff options
| author | Antonino Maniscalco <[email protected]> | 2024-10-03 16:12:55 +0000 |
|---|---|---|
| committer | Rob Clark <[email protected]> | 2024-10-03 20:21:52 +0000 |
| commit | e7ae83da4a289d4bf3b0fb62aadbe8c81c0dbde7 (patch) | |
| tree | 5649810e7b932b69fe73d57dee67963968f043df /drivers/gpu/drm/msm/msm_ringbuffer.h | |
| parent | drm/msm/a6xx: Add a pwrup_list field to a6xx_info (diff) | |
| download | kernel-e7ae83da4a289d4bf3b0fb62aadbe8c81c0dbde7.tar.gz kernel-e7ae83da4a289d4bf3b0fb62aadbe8c81c0dbde7.zip | |
drm/msm/a6xx: Implement preemption for a7xx targets
This patch implements preemption feature for A6xx targets, this allows
the GPU to switch to a higher priority ringbuffer if one is ready. A6XX
hardware as such supports multiple levels of preemption granularities,
ranging from coarse grained(ringbuffer level) to a more fine grained
such as draw-call level or a bin boundary level preemption. This patch
enables the basic preemption level, with more fine grained preemption
support to follow.
Reviewed-by: Akhil P Oommen <[email protected]>
Tested-by: Rob Clark <[email protected]>
Tested-by: Neil Armstrong <[email protected]> # on SM8650-QRD
Tested-by: Neil Armstrong <[email protected]> # on SM8550-QRD
Tested-by: Neil Armstrong <[email protected]> # on SM8450-HDK
Signed-off-by: Sharat Masetty <[email protected]>
Signed-off-by: Antonino Maniscalco <[email protected]>
Patchwork: https://patchwork.freedesktop.org/patch/618021/
Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/msm/msm_ringbuffer.h')
| -rw-r--r-- | drivers/gpu/drm/msm/msm_ringbuffer.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/msm_ringbuffer.h b/drivers/gpu/drm/msm/msm_ringbuffer.h index 174f83137a49..d1e49f701c81 100644 --- a/drivers/gpu/drm/msm/msm_ringbuffer.h +++ b/drivers/gpu/drm/msm/msm_ringbuffer.h @@ -36,6 +36,7 @@ struct msm_rbmemptrs { volatile struct msm_gpu_submit_stats stats[MSM_GPU_SUBMIT_STATS_COUNT]; volatile u64 ttbr0; + volatile u32 context_idr; }; struct msm_cp_state { @@ -101,6 +102,12 @@ struct msm_ringbuffer { */ spinlock_t preempt_lock; + /* + * Whether we skipped writing wptr and it needs to be updated in the + * future when the ring becomes current. + */ + bool restore_wptr; + /** * cur_ctx_seqno: * |
