Hi Linus, This PR also comes with dependencies from the IOMMUFD tree via the iommufd/arm-smmuv3-nested branch. It is possible that you already pulled those from Jason. With that being said: The following changes since commit 2d5404caa8c7bb5c4e0435f94b28834ae5456623: Linux 6.12-rc7 (2024-11-10 14:19:35 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git tags/iommu-updates-v6.13 for you to fetch changes up to 42f0cbb2a253bcd7d4f20e80462014622f19d88e: Merge branches 'intel/vt-d', 'amd/amd-vi' and 'iommufd/arm-smmuv3-nested' into next (2024-11-15 09:27:43 +0100) ---------------------------------------------------------------- IOMMU Updates for Linux v6.13: Including: - Core Updates: - Convert call-sites using iommu_domain_alloc() to more specific versions and remove function. - Introduce iommu_paging_domain_alloc_flags(). - Extend support for allocating PASID-capable domains to more drivers. - Remove iommu_present(). - Some smaller improvements. - New IOMMU driver for RISC-V. - Intel VT-d Updates: - Add domain_alloc_paging support. - Enable user space IOPFs in non-PASID and non-svm cases. - Small code refactoring and cleanups. - Add domain replacement support for pasid. - AMD-Vi Updates: - Adapt to iommu_paging_domain_alloc_flags() interface and alloc V2 page-tables by default. - Replace custom domain ID allocator with IDA allocator. - Add ops->release_domain() support. - Other improvements to device attach and domain allocation code paths. - ARM-SMMU Updates: - SMMUv2: - Return -EPROBE_DEFER for client devices probing before their SMMU. - Devicetree binding updates for Qualcomm MMU-500 implementations. - SMMUv3: - Minor fixes and cleanup for NVIDIA's virtual command queue driver. - IO-PGTable: - Fix indexing of concatenated PGDs and extend selftest coverage. - Remove unused block-splitting support. - S390 IOMMU: - Implement support for blocking domain. - Mediatek IOMMU: - Enable 35-bit physical address support for mt8186. - OMAP IOMMU driver: - Adapt to recent IOMMU core changes and unbreak driver. ---------------------------------------------------------------- Andy Shevchenko (1): iommu/vt-d: Increase buffer size for device name Bartosz Golaszewski (1): iommu/sysfs: constify the class struct Dmitry Baryshkov (1): dt-bindings: iommu: arm,smmu: Add Qualcomm SAR2130P compatible Dr. David Alan Gilbert (1): iommu/vt-d: Remove unused dmar_msi_read Gan Jie (1): iommu/iova: Fix typo 'adderss' Jason Gunthorpe (15): iommu: Remove useless flush from iommu_create_device_direct_mappings() iommu/amd: Fix corruption when mapping large pages from 0 iommu: Refactor __iommu_domain_alloc() iommu: Introduce iommu_paging_domain_alloc_flags() iommu: Add new flag to explictly request PASID capable domain iommu: Put domain allocation in __iommu_group_alloc_blocking_domain() iommu: Create __iommu_alloc_identity_domain() vfio: Remove VFIO_TYPE1_NESTING_IOMMU iommu/arm-smmu-v3: Report IOMMU_CAP_ENFORCE_CACHE_COHERENCY for CANWBS iommu/arm-smmu-v3: Implement IOMMU_HWPT_ALLOC_NEST_PARENT iommu/arm-smmu-v3: Expose the arm_smmu_attach interface iommu/io-pgtable-arm: Remove split on unmap behavior iommu/io-pgtable-arm-v7s: Remove split on unmap behavior iommu: Add a kdoc to iommu_unmap() iommu/arm-smmu-v3: Make set_dev_pasid() op support replace Jinjie Ruan (1): iommu/vt-d: Use PCI_DEVID() macro Joel Granados (3): iommu/vt-d: Separate page request queue from SVM iommu/vt-d: Move IOMMU_IOPF into INTEL_IOMMU iommufd: Enable PRI when doing the iommufd_hwpt_alloc Joerg Roedel (6): iommu: Fix prototype of iommu_paging_domain_alloc_flags() iommu: Restore iommu_flush_iotlb_all() Merge branch 'core' into amd/amd-vi Merge tag 'arm-smmu-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into arm/smmu Merge branches 'arm/smmu', 'mediatek', 's390', 'ti/omap', 'riscv' and 'core' into next Merge branches 'intel/vt-d', 'amd/amd-vi' and 'iommufd/arm-smmuv3-nested' into next Julia Lawall (1): iommu: Reorganize kerneldoc parameter names Klaus Jensen (2): iommu/vt-d: Remove the pasid present check in prq_event_thread iommu/vt-d: Drop pasid requirement for prq initialization Konrad Adamczyk (1): iommu/mediatek: Add PGTABLE_PA_35_EN to mt8186 platform data Lu Baolu (13): iommu: Remove iommu_present() remoteproc: Use iommu_paging_domain_alloc() media: nvidia: tegra: Use iommu_paging_domain_alloc() drm/nouveau/tegra: Use iommu_paging_domain_alloc() iommu: Remove iommu_domain_alloc() iommu/vt-d: Add domain_alloc_paging support iommu/vt-d: Remove unused domain_alloc callback iommu/vt-d: Enhance compatibility check for paging domain attach iommu/vt-d: Remove domain_update_iommu_cap() iommu/vt-d: Remove domain_update_iommu_superpage() iommu/vt-d: Refactor first_level_by_default() iommu/vt-d: Refine intel_iommu_domain_alloc_user() iommu/vt-d: Drain PRQs when domain removed from RID Matthew Rosato (1): iommu/s390: Implement blocking domain Mostafa Saleh (2): iommu/io-pgtable-arm: Fix stage-2 map/unmap for concatenated tables iommu/io-pgtable-arm: Add self test for the last page in the IAS Nicolin Chen (5): iommu/tegra241-cmdqv: Staticize cmdqv_debugfs_dir ACPICA: IORT: Update for revision E.f ACPI/IORT: Support CANWBS memory access flag iommu/arm-smmu-v3: Support IOMMU_GET_HW_INFO via struct arm_smmu_hw_info iommu/tegra241-cmdqv: Fix alignment failure at max_n_shift Pratyush Brahma (1): iommu/arm-smmu: Defer probe of clients after smmu device bound Qingqing Zhou (1): dt-bindings: arm-smmu: document QCS615 APPS SMMU Robin Murphy (2): iommu/omap: Add minimal fwnode support iommu: Make bus_iommu_probe() static Tomasz Jeznach (7): dt-bindings: iommu: riscv: Add bindings for RISC-V IOMMU iommu/riscv: Add RISC-V IOMMU platform device driver iommu/riscv: Add RISC-V IOMMU PCIe device driver iommu/riscv: Enable IOMMU registration and device probe. iommu/riscv: Device directory management. iommu/riscv: Command and fault queue support iommu/riscv: Paging domain support Uros Bizjak (1): iommu/amd: Use atomic64_inc_return() in iommu.c Vasant Hegde (20): iommu/amd: Do not try copy old DTE resume path iommu/arm-smmu-v3: Enhance domain_alloc_user() to allocate PASID capable domain iommu/amd: Add helper function to check GIOSUP/GTSUP iommu/amd: Move V2 page table support check to early_amd_iommu_init() iommu/amd: Separate page table setup from domain allocation iommu/amd: Pass page table type as param to pdom_setup_pgtable() iommu/amd: Enhance amd_iommu_domain_alloc_user() iommu/amd: Implement global identity domain iommu/amd/pgtbl_v2: Take protection domain lock before invalidating TLB iommu/amd: Use ida interface to manage protection domain ID iommu/amd: Remove protection_domain.dev_cnt variable iommu/amd: xarray to track protection_domain->iommu list iommu/amd: Remove unused amd_iommus variable iommu/amd: Do not detach devices in domain free path iommu/amd: Reduce domain lock scope in attach device path iommu/amd: Rearrange attach device code iommu/amd: Convert dev_data lock from spinlock to mutex iommu/amd: Reorder attach device code iommu/amd: Add ops->release_domain iommu/amd: Improve amd_iommu_release_device() Will Deacon (2): iommu/tegra241-cmdqv: Fix unused variable warning Merge branch 'for-joerg/arm-smmu/bindings' into arm/smmu Yi Liu (13): iommu/vt-d: Drop s1_pgtbl from dmar_domain iommu: Pass old domain to set_dev_pasid op iommu/vt-d: Add a helper to flush cache for updating present pasid entry iommu/vt-d: Refactor the pasid setup helpers iommu/vt-d: Add pasid replace helpers iommu/vt-d: Consolidate the struct dev_pasid_info add/remove iommu/vt-d: Add iommu_domain_did() to get did iommu/vt-d: Make intel_iommu_set_dev_pasid() to handle domain replacement iommu/vt-d: Limit intel_iommu_set_dev_pasid() for paging domain iommu/vt-d: Make intel_svm_set_dev_pasid() support domain replacement iommu/vt-d: Make identity_domain_set_dev_pasid() to handle domain replacement iommu/vt-d: Add set_dev_pasid callback for nested domain iommu: Make set_dev_pasid op support domain replacement Zhenzhong Duan (2): iommu/vt-d: Fix checks and print in dmar_fault_dump_ptes() iommu/vt-d: Fix checks and print in pgtable_walk() .../devicetree/bindings/iommu/arm,smmu.yaml | 5 + .../devicetree/bindings/iommu/riscv,iommu.yaml | 147 ++ MAINTAINERS | 9 + arch/s390/include/asm/pci.h | 4 +- arch/s390/pci/pci.c | 3 + arch/s390/pci/pci_debug.c | 10 +- drivers/acpi/arm64/iort.c | 13 + drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c | 4 +- drivers/iommu/Kconfig | 10 + drivers/iommu/Makefile | 2 +- drivers/iommu/amd/amd_iommu.h | 11 +- drivers/iommu/amd/amd_iommu_types.h | 23 +- drivers/iommu/amd/init.c | 63 +- drivers/iommu/amd/io_pgtable.c | 11 +- drivers/iommu/amd/io_pgtable_v2.c | 3 + drivers/iommu/amd/iommu.c | 495 +++--- drivers/iommu/amd/pasid.c | 6 +- drivers/iommu/arm/arm-smmu-v3/Makefile | 1 + .../iommu/arm/arm-smmu-v3/arm-smmu-v3-iommufd.c | 31 + drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 5 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 97 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 45 +- drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c | 7 +- drivers/iommu/arm/arm-smmu/arm-smmu.c | 27 +- drivers/iommu/intel/Kconfig | 2 +- drivers/iommu/intel/Makefile | 2 +- drivers/iommu/intel/dmar.c | 15 +- drivers/iommu/intel/iommu.c | 576 +++---- drivers/iommu/intel/iommu.h | 56 +- drivers/iommu/intel/irq_remapping.c | 4 +- drivers/iommu/intel/nested.c | 53 +- drivers/iommu/intel/pasid.c | 409 +++-- drivers/iommu/intel/pasid.h | 22 +- drivers/iommu/intel/prq.c | 396 +++++ drivers/iommu/intel/svm.c | 433 +---- drivers/iommu/io-pgtable-arm-v7s.c | 149 +- drivers/iommu/io-pgtable-arm.c | 114 +- drivers/iommu/iommu-sysfs.c | 2 +- drivers/iommu/iommu.c | 263 ++-- drivers/iommu/iommufd/hw_pagetable.c | 3 +- drivers/iommu/iommufd/vfio_compat.c | 7 +- drivers/iommu/iova.c | 2 +- drivers/iommu/mtk_iommu.c | 2 +- drivers/iommu/omap-iommu.c | 26 +- drivers/iommu/riscv/Kconfig | 20 + drivers/iommu/riscv/Makefile | 3 + drivers/iommu/riscv/iommu-bits.h | 784 +++++++++ drivers/iommu/riscv/iommu-pci.c | 120 ++ drivers/iommu/riscv/iommu-platform.c | 92 ++ drivers/iommu/riscv/iommu.c | 1661 ++++++++++++++++++++ drivers/iommu/riscv/iommu.h | 88 ++ drivers/iommu/s390-iommu.c | 73 +- drivers/media/platform/nvidia/tegra-vde/iommu.c | 7 +- drivers/remoteproc/remoteproc_core.c | 6 +- drivers/vfio/vfio_iommu_type1.c | 12 +- include/acpi/actbl2.h | 3 +- include/linux/dmar.h | 1 - include/linux/iommu.h | 30 +- include/uapi/linux/iommufd.h | 43 + include/uapi/linux/vfio.h | 2 +- 60 files changed, 4797 insertions(+), 1716 deletions(-) create mode 100644 Documentation/devicetree/bindings/iommu/riscv,iommu.yaml create mode 100644 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-iommufd.c create mode 100644 drivers/iommu/intel/prq.c create mode 100644 drivers/iommu/riscv/Kconfig create mode 100644 drivers/iommu/riscv/Makefile create mode 100644 drivers/iommu/riscv/iommu-bits.h create mode 100644 drivers/iommu/riscv/iommu-pci.c create mode 100644 drivers/iommu/riscv/iommu-platform.c create mode 100644 drivers/iommu/riscv/iommu.c create mode 100644 drivers/iommu/riscv/iommu.h Please pull. Thanks, Joerg