Hi all, This is a big refactoring of arm-smmu in order to help cope with the various divergent implementation details currently flying around. So far we've been accruing various quirks and errata workarounds within the main flow of the driver, but given that it's written to an architecture rather than any particular hardware implementation, after a point these start to become increasingly invasive and potentially conflict with each other.
These patches clean up the existing quirks handled by the driver to lay a foundation on which we can continue to add more in a maintainable fashion. The idea is that major vendor customisations can then be kept in arm-smmu-<vendor>.c implementation files out of each others' way. A branch is available at: git://linux-arm.org/linux-rm iommu/smmu-impl which I'll probably keep tweaking until I'm happy with the names of things; I just didn't want to delay this initial posting any lomnger. Robin. Robin Murphy (15): iommu/arm-smmu: Convert GR0 registers to bitfields iommu/arm-smmu: Convert GR1 registers to bitfields iommu/arm-smmu: Convert context bank registers to bitfields iommu/arm-smmu: Rework cb_base handling iommu/arm-smmu: Split arm_smmu_tlb_inv_range_nosync() iommu/arm-smmu: Get rid of weird "atomic" write iommu/arm-smmu: Abstract GR1 accesses iommu/arm-smmu: Abstract context bank accesses iommu/arm-smmu: Abstract GR0 accesses iommu/arm-smmu: Rename arm-smmu-regs.h iommu/arm-smmu: Add implementation infrastructure iommu/arm-smmu: Move Secure access quirk to implementation iommu/arm-smmu: Add configuration implementation hook iommu/arm-smmu: Add reset implementation hook iommu/arm-smmu: Add context init implementation hook MAINTAINERS | 3 +- drivers/iommu/Makefile | 2 +- drivers/iommu/arm-smmu-impl.c | 165 ++++++++++ drivers/iommu/arm-smmu-regs.h | 210 ------------- drivers/iommu/arm-smmu.c | 570 +++++++++++----------------------- drivers/iommu/arm-smmu.h | 386 +++++++++++++++++++++++ drivers/iommu/qcom_iommu.c | 15 +- 7 files changed, 743 insertions(+), 608 deletions(-) create mode 100644 drivers/iommu/arm-smmu-impl.c delete mode 100644 drivers/iommu/arm-smmu-regs.h create mode 100644 drivers/iommu/arm-smmu.h -- 2.21.0.dirty _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu