1
0
Fork 0
alistair23-linux/drivers/gpu/drm/msm
Jordan Crouse 7c65817e6d drm/msm: gpu: Enable zap shader for A5XX
The A5XX GPU powers on in "secure" mode. In secure mode the GPU can
only render to buffers that are marked as secure and inaccessible
to the kernel and user through a series of hardware protections. In
practice secure mode is used to draw things like a UI on a secure
video frame.

In order to switch out of secure mode the GPU executes a special
shader that clears out the GMEM and other sensitve registers and
then writes a register. Because the kernel can't be trusted the
shader binary is signed and verified and programmed by the
secure world. To do this we need to read the MDT header and the
segments from the firmware location and put them in memory and
present them for approval.

For targets without secure support there is an out: if the
secure world doesn't support secure then there are no hardware
protections and we can freely write the SECVID_TRUST register from
the CPU. We don't have 100% confidence that we can query the
secure capabilities at run time but we have enough calls that
need to go right to give us some confidence that we're at least doing
something useful.

Of course if we guess wrong you trigger a permissions violation
which usually ends up in a system crash but thats a problem
that shows up immediately.

[v2: use child device per Bjorn]
[v3: use generic MDT loader per Bjorn]
[v4: use managed dma functions and ifdefs for the MDT loader]
[v5: Add depends for QCOM_MDT_LOADER]

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
[robclark: fix Kconfig to use select instead of depends + #if IS_ENABLED()]
Signed-off-by: Rob Clark <robdclark@gmail.com>
2017-06-16 11:15:31 -04:00
..
adreno drm/msm: gpu: Enable zap shader for A5XX 2017-06-16 11:15:31 -04:00
dsi drm/msm: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:35:54 +02:00
edp drm/msm: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:35:54 +02:00
hdmi drm/msm/hdmi: redefinitions of macros not required 2017-04-08 06:59:33 -04:00
mdp Linux 4.12-rc5 2017-06-16 13:58:27 +10:00
Kconfig drm/msm: gpu: Enable zap shader for A5XX 2017-06-16 11:15:31 -04:00
Makefile drm/msm: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:35:54 +02:00
NOTES drm/msm: add mdp5/apq8x74 2014-01-09 14:44:06 -05:00
msm_atomic.c drm/msm/mdp5: Add cursor planes 2017-02-06 11:28:44 -05:00
msm_debugfs.c drm/msm/gpu: use pm-runtime 2017-04-08 06:59:31 -04:00
msm_debugfs.h drm/msm: Remove msm_debugfs_cleanup() 2017-03-08 11:24:45 +01:00
msm_drv.c drm/msm: Expose our reservation object when exporting a dmabuf. 2017-05-27 13:48:26 -04:00
msm_drv.h drm/msm: Expose our reservation object when exporting a dmabuf. 2017-05-27 13:48:26 -04:00
msm_fb.c drm/msm: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:35:54 +02:00
msm_fbdev.c drm/msm: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:35:54 +02:00
msm_fence.c drm/msm: Reuse dma_fence_release. 2017-05-27 13:48:26 -04:00
msm_fence.h dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
msm_gem.c Linux 4.12-rc5 2017-06-16 13:58:27 +10:00
msm_gem.h drm/msm: Reference count address spaces 2017-04-08 06:59:36 -04:00
msm_gem_prime.c drm/msm: Expose our reservation object when exporting a dmabuf. 2017-05-27 13:48:26 -04:00
msm_gem_shrinker.c Merge branch 'linus' into locking/core, to pick up fixes 2016-11-22 12:37:38 +01:00
msm_gem_submit.c drm/msm: Fix the check for the command size 2017-05-27 13:48:29 -04:00
msm_gem_vma.c drm/msm: Reference count address spaces 2017-04-08 06:59:36 -04:00
msm_gpu.c drm/msm/gpu: check legacy clk names in get_clocks() 2017-05-27 13:48:25 -04:00
msm_gpu.h msm/drm: gpu: Dynamically locate the clocks from the device tree 2017-04-08 06:59:37 -04:00
msm_iommu.c drm/msm: pm runtime support for iommu 2017-04-08 06:59:31 -04:00
msm_kms.h drm/msm: Remove msm_debugfs_cleanup() 2017-03-08 11:24:45 +01:00
msm_mmu.h drm/msm: let gpu wire up it's own fault handler 2017-02-06 11:28:42 -05:00
msm_perf.c drm/msm: Remove msm_debugfs_cleanup() 2017-03-08 11:24:45 +01:00
msm_rd.c drm/msm: Support 64 bit iova in RD_CMDSTREAM_ADDR 2017-04-08 06:59:32 -04:00
msm_ringbuffer.c drm/msm: Ensure that the hardware write pointer is valid 2016-12-29 15:02:58 -05:00
msm_ringbuffer.h drm/msm: add a3xx gpu support 2013-08-24 14:57:18 -04:00