[Freedreno] [PATCH v2 0/6] iommu-arm-smmu: Add auxiliary domains and per-instance pagetables
Jordan Crouse
jcrouse at codeaurora.org
Fri Jun 26 20:04:08 UTC 2020
This is a new refresh of support for auxiliary domains for arm-smmu-v2
and per-instance pagetables for drm/msm. The big change here from past
efforts is that outside of creating a single aux-domain to enable TTBR0
all of the per-instance pagetables are created and managed exclusively
in drm/msm without involving the arm-smmu driver. This fits in with the
suggested model of letting the GPU hardware do what it needs and leave the
arm-smmu driver blissfully unaware.
Almost. In order to set up the io-pgtable properly in drm/msm we need to
query the pagetable configuration from the current active domain and we need to
rely on the iommu API to flush TLBs after a unmap. In the future we can optimize
this in the drm/msm driver to track the state of the TLBs but for now the big
hammer lets us get off the ground.
This series is built on the split pagetable support [1].
[1] https://patchwork.kernel.org/patch/11628543/
v2: Remove unneeded cruft in the a6xx page switch sequence
Jordan Crouse (6):
iommu/arm-smmu: Add auxiliary domain support for arm-smmuv2
iommu/io-pgtable: Allow a pgtable implementation to skip TLB
operations
iommu/arm-smmu: Add a domain attribute to pass the pagetable config
drm/msm: Add support to create a local pagetable
drm/msm: Add support for address space instances
drm/msm/a6xx: Add support for per-instance pagetables
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 43 +++++
drivers/gpu/drm/msm/msm_drv.c | 15 +-
drivers/gpu/drm/msm/msm_drv.h | 4 +
drivers/gpu/drm/msm/msm_gem_vma.c | 9 +
drivers/gpu/drm/msm/msm_gpu.c | 17 ++
drivers/gpu/drm/msm/msm_gpu.h | 5 +
drivers/gpu/drm/msm/msm_gpummu.c | 2 +-
drivers/gpu/drm/msm/msm_iommu.c | 180 +++++++++++++++++++-
drivers/gpu/drm/msm/msm_mmu.h | 16 +-
drivers/gpu/drm/msm/msm_ringbuffer.h | 1 +
drivers/iommu/arm-smmu.c | 231 ++++++++++++++++++++++++--
drivers/iommu/arm-smmu.h | 1 +
include/linux/io-pgtable.h | 11 +-
include/linux/iommu.h | 1 +
14 files changed, 507 insertions(+), 29 deletions(-)
--
2.17.1
More information about the Freedreno
mailing list