Message ID | 1580248819-12644-1-git-send-email-jcrouse@codeaurora.org (mailing list archive) |
---|---|
Headers | show |
Series | iommu/arm-smmu: Split pagetable support for arm-smmu-v2 | expand |
On Tue, Jan 28, 2020 at 03:00:14PM -0700, Jordan Crouse wrote: > This is another iteration for the split pagetable support based on the > suggestions from Robin and Will [1]. > > Background: In order to support per-context pagetables the GPU needs to enable > split tables so that we can store global buffers in the TTBR1 space leaving the > GPU free to program the TTBR0 register with the address of a context specific > pagetable. > > If the DOMAIN_ATTR_SPLIT_TABLES attribute is set on the domain before attaching, > the context bank assigned to the domain will be programmed to allow translations > in the TTBR1 space. Translations in the TTBR0 region will be disallowed because, > as Robin pointe out, having a un-programmed TTBR0 register is dangerous. > > The driver can determine if TTBR1 was successfully programmed by querying > DOMAIN_ATTR_SPLIT_TABLES after attaching. The domain geometry will also be > updated to reflect the virtual address space for the TTBR1 range. > > Upcoming changes will allow auxiliary domains to be attached to the device which > will enable and program TTBR0. > > This patchset is based on top of linux-next-20200127. Quick ping for feedback so I can respin for (maybe?) 5.6. Thanks, Jordan > Change log: > > v4: Only program TTBR1 when split pagetables are requested. TTBR0 will be > enabled later when an auxiliary domain is attached > v3: Remove the implementation specific and make split pagetable support > part of the generic configuration > > [1] https://lists.linuxfoundation.org/pipermail/iommu/2020-January/041373.html > > Jordan Crouse (5): > iommu: Add DOMAIN_ATTR_SPLIT_TABLES > iommu/arm-smmu: Add support for TTBR1 > drm/msm: Attach the IOMMU device during initialization > drm/msm: Refactor address space initialization > drm/msm/a6xx: Support split pagetables > > drivers/gpu/drm/msm/adreno/a2xx_gpu.c | 16 ++++++++++ > drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 1 + > drivers/gpu/drm/msm/adreno/a4xx_gpu.c | 1 + > drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 1 + > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 51 ++++++++++++++++++++++++++++++++ > drivers/gpu/drm/msm/adreno/adreno_gpu.c | 23 ++++++++++---- > drivers/gpu/drm/msm/adreno/adreno_gpu.h | 8 +++++ > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 18 ++++------- > drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 18 +++++------ > drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 4 --- > drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 18 +++++------ > drivers/gpu/drm/msm/msm_drv.h | 8 ++--- > drivers/gpu/drm/msm/msm_gem_vma.c | 36 ++++------------------ > drivers/gpu/drm/msm/msm_gpu.c | 49 ++---------------------------- > drivers/gpu/drm/msm/msm_gpu.h | 4 +-- > drivers/gpu/drm/msm/msm_gpummu.c | 6 ---- > drivers/gpu/drm/msm/msm_iommu.c | 18 ++++++----- > drivers/gpu/drm/msm/msm_mmu.h | 1 - > drivers/iommu/arm-smmu.c | 48 +++++++++++++++++++++++++----- > drivers/iommu/arm-smmu.h | 22 ++++++++++---- > include/linux/iommu.h | 2 ++ > 21 files changed, 198 insertions(+), 155 deletions(-) > > -- > 2.7.4 > _______________________________________________ > Freedreno mailing list > Freedreno@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/freedreno