[PATCH 0/3] drm/msm: Add support for the WHERE_AM_I opcode

From: Jordan Crouse
Date: Mon Sep 14 2020 - 18:41:22 EST


The microcode in linux-firmware has been updated to 1.87.01 for a5xx
1.77.01 for a6xx [1]. These microcode versions support a new opcode called
WHERE_AM_I that takes the place of the hardware RPTR shadow and enables the
microcode to update the RPTR shadow in privileged memory so it is protected
against the user.

This patch series re-enables the RPTR shadow and preemption for a5xx and older
versions of a6xx if the WHERE_AM_I opcode is available. Newer a6xx targets
(starting with a650) have automatic privileged protection so the hardware RPTR
shadow can be renabled for those targets too. If any of the needed dependencies
aren't met then the RPTR shadow will remain disabled (along with preemption on
5xx).

This stack is bsed on https://gitlab.freedesktop.org/drm/msm.git msm-next-pgtables
as there are some minor dependencies on the reorganized code in the pgtable
stack.

Jordan

[1] https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=f48fec44127f88ce83ea1bcaf5824de4146ca2f9

Jordan Crouse (3):
drm/msm: Allow a5xx to mark the RPTR shadow as privileged
drm/msm: a6xx: Use WHERE_AM_I for eligible targets
drm/msm: Get rid of the REG_ADRENO offsets

drivers/gpu/drm/msm/adreno/a2xx_gpu.c | 65 +++++++++---
drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 77 +++++++++++---
drivers/gpu/drm/msm/adreno/a4xx_gpu.c | 82 +++++++++++----
drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 108 ++++++++++++++++----
drivers/gpu/drm/msm/adreno/a5xx_gpu.h | 12 +++
drivers/gpu/drm/msm/adreno/a5xx_power.c | 2 +-
drivers/gpu/drm/msm/adreno/a5xx_preempt.c | 5 +-
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 100 +++++++++++++++---
drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 9 ++
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 81 +--------------
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 81 +--------------
drivers/gpu/drm/msm/adreno/adreno_pm4.xml.h | 1 +
drivers/gpu/drm/msm/msm_gpu.h | 1 +
13 files changed, 377 insertions(+), 247 deletions(-)

--
2.25.1