On Tue, Sep 09, 2025 at 08:46:00AM -0700, Shyam Saini wrote: > Both ARM SMMU v2/v3 drivers have common set operations for > arm_smmu_get_resv_regions(), except iommu_dma_get_resv_regions() > call all other operations can be clubed into common code block. > So to avoid code duplication put common operations in a new helper > function iommu_set_sw_msi() and call this helper function from > arm_smmu_get_resv_regions() instead. > > Suggested-by: Jason Gunthorpe <jgg@xxxxxxxx> > Signed-off-by: Shyam Saini <shyamsaini@xxxxxxxxxxxxxxxxxxx> > --- > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 26 ++------------- > drivers/iommu/arm/arm-smmu/arm-smmu.c | 24 ++----------- > drivers/iommu/iommu.c | 37 +++++++++++++++++++++ > include/linux/iommu.h | 6 ++++ > 4 files changed, 47 insertions(+), 46 deletions(-) I would do this first, not after you made all the changes to both drivers. And then once you do it: > - static const u64 msi_bases[] = { MSI_IOVA_BASE, MSI_IOVA_BASE2 }; Can just be constants written here, nothing else in the kernel should refer to them any more because they are dynamic. The only way to learn the value is to read the IOMMU_RESV_SW_MSI. Thus don't write them out in public headers to prevent mis-use. I'm comfortable with this side from the iommu perspective once you get agreement on the DT representation. Jason