Hi all, Since the flawed first attempt, I've reworked things with an abstracted TCR and an explicit TTBR1 quirk. I originally envisaged the need to pass the quirk all the way down to the TLBI calls, hence getting diverted into trying to make the parameter passing less cluttered in general, but in the end it turned out fairly neat to just fix the indexing such that we can always just pass around the original unmodified IOVA. Most of the new patches come from staring at that indexing code for long enough to see the subtle inefficiencies that were worth ironing out, plus a bit of random cleanup which doesn't feel worth posting separately.
Note that these patches depend on the fixes already queued in -rc4, otherwise there will be conflicts in arm_mali_lpae_alloc_pgtable(). Robin. Robin Murphy (10): iommu/io-pgtable: Make selftest gubbins consistently __init iommu/io-pgtable-arm: Rationalise size check iommu/io-pgtable-arm: Simplify bounds checks iommu/io-pgtable-arm: Simplify start level lookup iommu/io-pgtable-arm: Simplify PGD size handling iommu/io-pgtable-arm: Simplify level indexing iommu/io-pgtable-arm: Rationalise MAIR handling iommu/io-pgtable-arm: Rationalise TTBRn handling iommu/io-pgtable-arm: Rationalise TCR handling iommu/io-pgtable-arm: Prepare for TTBR1 usage drivers/iommu/arm-smmu-v3.c | 45 ++---- drivers/iommu/arm-smmu.c | 20 +-- drivers/iommu/arm-smmu.h | 27 ++++ drivers/iommu/io-pgtable-arm-v7s.c | 37 +++-- drivers/iommu/io-pgtable-arm.c | 238 ++++++++++++++--------------- drivers/iommu/io-pgtable.c | 2 +- drivers/iommu/ipmmu-vmsa.c | 4 +- drivers/iommu/msm_iommu.c | 4 +- drivers/iommu/mtk_iommu.c | 4 +- drivers/iommu/qcom_iommu.c | 15 +- include/linux/io-pgtable.h | 19 ++- 11 files changed, 209 insertions(+), 206 deletions(-) -- 2.21.0.dirty _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu