android_kernel_xiaomi_sm7250/drivers/iommu
Sultan Alsawaf 4f1ab4600a iommu: msm: Rewrite to improve clarity and performance
This scope of this driver's lock usage is extremely wide, leading to
excessively long lock hold times. Additionally, there is lots of
excessive linked-list traversal and unnecessary dynamic memory
allocation in a critical path, causing poor performance across the
board.

Fix all of this by greatly reducing the scope of the locks used and by
significantly reducing the amount of operations performed when
msm_dma_map_sg_attrs() is called. The entire driver's code is overhauled
for better cleanliness and performance.

Note that ION must be modified to pass a known structure via the private
dma_buf pointer, so that the IOMMU driver can prevent races when
operating on the same buffer concurrently. This is the only way to
eliminate said buffer races without hurting the IOMMU driver's
performance.

Some additional members are added to the device struct as well to make
these various performance improvements possible.

This also removes the manual cache maintenance since ION already handles
it.

Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
2022-11-12 11:24:01 +00:00
..
amd_iommu_debugfs.c
amd_iommu_init.c
amd_iommu_proto.h
amd_iommu_quirks.c
amd_iommu_types.h
amd_iommu_v2.c
amd_iommu.c
amd_iommu.h
arm-smmu-debug.c
arm-smmu-debug.h
arm-smmu-regs.h
arm-smmu-v3.c drivers: iommu: Specify sync probe for arm-smmu-v3 driver 2022-11-12 11:19:38 +00:00
arm-smmu.c drivers: iommu: Specify sync probe for qsmmuv500-tbu 2022-11-12 11:19:38 +00:00
dma-iommu.c
dma-mapping-fast.c
dmar.c
exynos-iommu.c
fsl_pamu_domain.c
fsl_pamu_domain.h
fsl_pamu.c
fsl_pamu.h
intel_irq_remapping.c
intel-iommu.c iommu/vt-d: Clean up si_domain in the init_dmars() error path 2022-11-03 23:52:26 +09:00
intel-pasid.c
intel-pasid.h
intel-svm.c
io-pgtable-arm-v7s.c
io-pgtable-arm.c
io-pgtable-fast.c
io-pgtable-msm-secure.c
io-pgtable.c
iommu-debug.c
iommu-debugfs.c
iommu-logger.c
iommu-logger.h
iommu-sysfs.c
iommu-traces.c
iommu.c
iova.c
ipmmu-vmsa.c
irq_remapping.c
irq_remapping.h
Kconfig
Makefile
msm_dma_iommu_mapping.c iommu: msm: Rewrite to improve clarity and performance 2022-11-12 11:24:01 +00:00
msm_iommu_hw-8xxx.h
msm_iommu.c drivers: iommu: Specify sync probe for msm_iommu driver 2022-11-12 11:19:38 +00:00
msm_iommu.h
mtk_iommu_v1.c
mtk_iommu.c
mtk_iommu.h
of_iommu.c
omap-iommu-debug.c
omap-iommu.c
omap-iommu.h
omap-iopgtable.h
qcom_iommu.c drivers: iommu: Specify sync probe for qcom-iommu 2022-11-12 11:19:39 +00:00
rockchip-iommu.c
s390-iommu.c
tegra-gart.c
tegra-smmu.c