[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200626200414.14382-1-jcrouse@codeaurora.org>
Date: Fri, 26 Jun 2020 14:04:08 -0600
From: Jordan Crouse <jcrouse@...eaurora.org>
To: linux-arm-msm@...r.kernel.org
Cc: Sai Prakash Ranjan <saiprakash.ranjan@...eaurora.org>,
iommu@...ts.linux-foundation.org,
John Stultz <john.stultz@...aro.org>,
freedreno@...ts.freedesktop.org,
Akhil P Oommen <akhilpo@...eaurora.org>,
Daniel Vetter <daniel@...ll.ch>,
David Airlie <airlied@...ux.ie>,
Emil Velikov <emil.velikov@...labora.com>,
Eric Anholt <eric@...olt.net>, Joerg Roedel <joro@...tes.org>,
Joerg Roedel <jroedel@...e.de>,
Jonathan Marek <jonathan@...ek.ca>,
Rob Clark <robdclark@...il.com>,
Robin Murphy <robin.murphy@....com>,
Sean Paul <sean@...rly.run>,
Sharat Masetty <smasetty@...eaurora.org>,
Will Deacon <will@...nel.org>, Yong Wu <yong.wu@...iatek.com>,
dri-devel@...ts.freedesktop.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: [PATCH v2 0/6] iommu-arm-smmu: Add auxiliary domains and per-instance pagetables
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
Powered by blists - more mailing lists