Message ID | cover.1565369764.git.robin.murphy@arm.com (mailing list archive) |
---|---|
Headers | show |
Series | Arm SMMU refactoring | expand |
...and of course I had to forget someone's cc - sorry Jordan! :( Robin. On 09/08/2019 18:07, Robin Murphy wrote: > 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 >
Hi Robin, On Fri, Aug 09, 2019 at 06:07:37PM +0100, Robin Murphy wrote: > 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. Thanks, this all looks pretty decent to me. I've mainly left you a bunch of nits (hey, it's a refactoring series!) but I did spot one pre-existing howler that we should address. When do you think you'll have stopped tweaking this so that I can pick it up? I'd really like to see it in 5.4 so that others can start working on top of it. Cheers, Will