Re: [PATCH 0/7] Use the generic iommu page table for SMMUv3
Mostafa Saleh <[email protected]> Fri, 24 Jul 2026 19:36:16 +0000
| Newsgroups | dev.linux.lists.iommu,dev.linux.lists.patches,org.infradead.lists.linux-arm-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Jul 06, 2026 at 01:29:06PM -0300, Jason Gunthorpe wrote: > [ This is the last patch to move SMMUv3 over to the generic page > table: > 1) Organize the SMMUv3 invalidation flow so iommupt can use it > .. > 2) Use the generic iommu page table for SMMUv3 > > It depends on #1 > > The whole branch is here: > https://github.com/jgunthorpe/linux/commits/iommu_pt_arm64/ > ] > > Introduce the generic page table for what the ARM spec calls VMSAv8-64 > (ie the long 64 bit PTE page table, io-pgtable-arm.c) and use it for > SMMUv3. ARM is by far the most complex page table of all the ones > implemented, it has the most runtime behavior variations and a lot of > features. > > Like the othe architectures, the page table itself is supported by a kunit > compare test that runs operations through both io-pgtable-arm.c and the > new code then checks for identical PTEs. This is on the github link above > but I don't intend to merge it. > > The existing kunit tests for iommupt will automatically cover the new > format as well. > > This is the final series migrating the SMMUv3 driver over to use the new > functions and remove io-pgtable-arm.c usage. In principle the other iommu > drivers that use io-pgtable-arm could be converted someday as well. > > Robin once mentioned there were errata about contiguous bits, I only found > 3673557 and it is mitigated in this design by always using RIL. I'm > assuming that RIL is always available in SMMUs that are effected by > 3673557? I have a patch add a FEAT if for contiguous bits if that is > required. > > Jason Gunthorpe (7): > iommupt: Remove the sanity check for pt_num_items_lg2() at the top > level > iommupt/kunit: Skip test configs without supported features > iommupt: Add the 64 bit ARMv8 page table format > iommu/arm-smmu-v3: Remove io-pgtable-arm from sva.c > iommu/arm-smmu-v3: Move the DMA API comment to flush_iotlb_all > iommu/arm-smmu-v3: Use the generic iommu page table > iommu: Remove pgsize from iommu_iotlb_gather I went through the series, it seems the arm work plug in nicely with the iommupt stuff, I left some comments around, but I feel that patches 1,2 and 5 can be sent separately. And patch 8 it too large to review, it would be better to split into 3-6 patches, I was thinking: base support, dirty tracking, contig bit aarch32 and kunit. Thanks, Mostafa > > drivers/iommu/arm/Kconfig | 4 +- > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 13 +- > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 45 +- > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 287 ++--- > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 18 +- > drivers/iommu/generic_pt/.kunitconfig | 1 + > drivers/iommu/generic_pt/Kconfig | 12 + > drivers/iommu/generic_pt/fmt/Makefile | 2 + > drivers/iommu/generic_pt/fmt/armv8.h | 1124 +++++++++++++++++ > drivers/iommu/generic_pt/fmt/defs_armv8.h | 23 + > drivers/iommu/generic_pt/fmt/iommu_armv8.c | 13 + > drivers/iommu/generic_pt/iommu_pt.h | 14 - > drivers/iommu/generic_pt/kunit_iommu.h | 10 + > include/linux/generic_pt/common.h | 42 + > include/linux/generic_pt/iommu.h | 73 ++ > include/linux/iommu.h | 62 +- > 16 files changed, 1452 insertions(+), 291 deletions(-) > create mode 100644 drivers/iommu/generic_pt/fmt/armv8.h > create mode 100644 drivers/iommu/generic_pt/fmt/defs_armv8.h > create mode 100644 drivers/iommu/generic_pt/fmt/iommu_armv8.c > > > base-commit: 8cd13c14dcc29762766ff9ca2f67e3bae7c7cb77 > -- > 2.43.0 >