Hi Linus, Two things to notice on this PR: 1. It includes another try of optimizing the IOVA allocation path for cases when the first 4GB begin to fill up. Previous tries to do so have caused issues and got reverted, so this time the optimization is explicitly disabled for PCI devices (which are the primary reason of this allocation strategy anyway). The change has been in linux-next for several weeks and no problems were reported. So I am confident that it is a real improvement this time and will not cause major issues. 2. Stephen reported merge conflicts with iommfd tree, but I couldn't reproduce them in my test-merge with your latest tree. This might be due to removal of some problematic patches from the IOMMU tree last week, as the iommufd tree updates seem to be merged already. Anyway, if you run into any problems please let me know. With that said: The following changes since commit 706a741595047797872e669b3101429ab8d378ef: Linux 6.5-rc7 (2023-08-20 15:02:52 +0200) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git tags/iommu-updates-v6.6 for you to fetch changes up to d8fe59f11096d6470b5f53739e49cdce67f3e127: Merge branches 'apple/dart', 'arm/mediatek', 'arm/renesas', 'arm/rockchip', 'arm/smmu', 'unisoc', 'x86/vt-d', 'x86/amd' and 'core' into next (2023-08-21 14:18:43 +0200) ---------------------------------------------------------------- IOMMU Updates for Linux v6.6 Including: - Core changes: - Consolidate probe_device path - Make the PCI-SAC IOVA allocation trick PCI-only - AMD IOMMU: - Consolidate PPR log handling - Interrupt handling improvements - Refcount fixes for amd_iommu_v2 driver - Intel VT-d driver: - Enable idxd device DMA with pasid through iommu dma ops. - Lift RESV_DIRECT check from VT-d driver to core. - Miscellaneous cleanups and fixes. - ARM-SMMU drivers: - Device-tree binding updates: - Add additional compatible strings for Qualcomm SoCs - Allow ASIDs to be configured in the DT to work around Qualcomm's broken hypervisor - Fix clocks for Qualcomm's MSM8998 SoC - SMMUv2: - Support for Qualcomm's legacy firmware implementation featured on at least MSM8956 and MSM8976. - Match compatible strings for Qualcomm SM6350 and SM6375 SoC variants - SMMUv3: - Use 'ida' instead of a bitmap for VMID allocation - Rockchip IOMMU: - Lift page-table allocation restrictions on newer hardware - Mediatek IOMMU: - Add MT8188 IOMMU Support - Renesas IOMMU: - Allow PCIe devices - Usual set of cleanups an smaller fixes ---------------------------------------------------------------- AngeloGioacchino Del Regno (6): dt-bindings: iommu: qcom,iommu: Add qcom,ctx-asid property dt-bindings: iommu: qcom,iommu: Add QSMMUv2 and MSM8976 compatibles iommu/qcom: Use the asid read from device-tree if specified iommu/qcom: Disable and reset context bank before programming iommu/qcom: Index contexts by asid number to allow asid 0 iommu/qcom: Add support for QSMMUv2 and QSMMU-500 secured contexts Chengci.Xu (5): dt-bindings: mediatek: mt8188: Add binding for MM & INFRA IOMMU iommu/mediatek: Fix two IOMMU share pagetable issue iommu/mediatek: Adjust mtk_iommu_config flow iommu/mediatek: Add enable IOMMU SMC command for INFRA masters iommu/mediatek: Add MT8188 IOMMU Support Daniel Marcovitch (1): iommu/amd/iommu_v2: Fix pasid_state refcount dec hit 0 warning on pasid unbind Dawei Li (1): iommu/arm-smmu-v3: Change vmid alloc strategy from bitmap to ida Geert Uytterhoeven (1): iommu/ipmmu-vmsa: Convert to read_poll_timeout_atomic() Jacob Pan (3): iommu: Generalize PASID 0 for normal DMA w/o PASID iommu: Move global PASID allocation from SVA to core dmaengine/idxd: Re-enable kernel workqueue under DMA API Jason Gunthorpe (11): iommu: Have __iommu_probe_device() check for already probed devices iommu: Use iommu_group_ref_get/put() for dev->iommu_group iommu: Inline iommu_group_get_for_dev() into __iommu_probe_device() iommu: Simplify the __iommu_group_remove_device() flow iommu: Add iommu_init/deinit_device() paired functions iommu: Move the iommu driver sysfs setup into iommu_init/deinit_device() iommu: Do not export iommu_device_link/unlink() iommu: Always destroy the iommu_group during iommu_release_device() iommu: Split iommu_group_add_device() iommu: Avoid locking/unlocking for iommu_probe_device() iommu/sprd: Add missing force_aperture Joerg Roedel (2): Merge tag 'arm-smmu-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into arm/smmu Merge branches 'apple/dart', 'arm/mediatek', 'arm/renesas', 'arm/rockchip', 'arm/smmu', 'unisoc', 'x86/vt-d', 'x86/amd' and 'core' into next Jonas Karlman (2): iommu: rockchip: Fix directory table address encoding iommu: rockchip: Allocate tables from all available memory for IOMMU v2 Konrad Dybcio (5): dt-bindings: arm-smmu: Fix MSM8998 clocks description iommu/arm-smmu-qcom: Sort the compatible list alphabetically iommu/arm-smmu-qcom: Add SM6375 DPU compatible iommu/arm-smmu-qcom: Add SM6350 DPU compatible iommu/arm-smmu-qcom: Add SM6375 SMMUv2 Lu Baolu (7): iommu/vt-d: Add domain_flush_pasid_iotlb() iommu/vt-d: Remove pasid_mutex iommu/vt-d: Make prq draining code generic iommu/vt-d: Prepare for set_dev_pasid callback iommu/vt-d: Add set_dev_pasid callback for dma domain iommu: Prevent RESV_DIRECT devices from blocking domains iommu/vt-d: Remove rmrr check in domain attaching device path Min-Hua Chen (1): iommu/apple-dart: mark apple_dart_pm_ops static Rob Herring (1): iommu: Explicitly include correct DT includes Robin Murphy (1): iommu: Optimise PCI SAC address trick Vasant Hegde (9): iommu/amd/iommu_v2: Clear pasid state in free path iommu/amd: Generalize log overflow handling iommu/amd: Handle PPR log overflow iommu/amd: Refactor IOMMU interrupt handling logic for Event, PPR, and GA logs iommu/amd: Enable separate interrupt for PPR and GA log iommu/amd: Disable PPR log/interrupt in iommu_disable() iommu/amd: Consolidate PPR log enablement iommu/amd: Enable PPR/GA interrupt after interrupt handler setup iommu/amd: Rearrange DTE bit definations Will Deacon (1): Merge branch 'for-joerg/arm-smmu/bindings' into for-joerg/arm-smmu/updates Yanfei Xu (2): iommu/vt-d: Fix to flush cache of PASID directory table iommu/vt-d: Fix to convert mm pfn to dma pfn Yangtao Li (1): iommu/arm-smmu: Clean up resource handling during Qualcomm context probe Yong Wu (2): iommu/mediatek: mt8188: Add iova_region_larb_msk MAINTAINERS: iommu/mediatek: Update the header file name Yoshihiro Shimoda (1): iommu/ipmmu-vmsa: Allow PCIe devices Yue Haibing (1): iommu/amd: Remove unused declarations YueHaibing (2): iommu/amd: Remove unsued extern declaration amd_iommu_init_hardware() iommu/vt-d: Remove unused extern declaration dmar_parse_dev_scope() Zhu Wang (1): iommu: Remove kernel-doc warnings .../devicetree/bindings/iommu/arm,smmu.yaml | 41 ++ .../devicetree/bindings/iommu/mediatek,iommu.yaml | 12 +- .../devicetree/bindings/iommu/qcom,iommu.yaml | 22 +- MAINTAINERS | 1 + drivers/acpi/scan.c | 2 +- drivers/dma/idxd/device.c | 39 +- drivers/dma/idxd/dma.c | 5 +- drivers/dma/idxd/idxd.h | 9 + drivers/dma/idxd/init.c | 54 ++- drivers/dma/idxd/sysfs.c | 7 - drivers/iommu/amd/amd_iommu.h | 7 +- drivers/iommu/amd/amd_iommu_types.h | 22 +- drivers/iommu/amd/init.c | 131 ++++-- drivers/iommu/amd/iommu.c | 86 ++-- drivers/iommu/amd/iommu_v2.c | 7 +- drivers/iommu/apple-dart.c | 2 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 2 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 45 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 2 +- drivers/iommu/arm/arm-smmu/arm-smmu-qcom-debug.c | 2 +- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 7 +- drivers/iommu/arm/arm-smmu/arm-smmu.c | 1 - drivers/iommu/arm/arm-smmu/qcom_iommu.c | 71 ++- drivers/iommu/dma-iommu.c | 26 +- drivers/iommu/dma-iommu.h | 8 + drivers/iommu/intel/iommu.c | 244 ++++++---- drivers/iommu/intel/iommu.h | 9 + drivers/iommu/intel/pasid.c | 4 +- drivers/iommu/intel/pasid.h | 2 - drivers/iommu/intel/svm.c | 62 +-- drivers/iommu/iommu-sva.c | 29 +- drivers/iommu/iommu-sysfs.c | 8 - drivers/iommu/iommu.c | 483 +++++++++++--------- drivers/iommu/ipmmu-vmsa.c | 21 +- drivers/iommu/mtk_iommu.c | 151 +++++-- drivers/iommu/of_iommu.c | 2 +- drivers/iommu/rockchip-iommu.c | 50 +-- drivers/iommu/sprd-iommu.c | 2 + drivers/iommu/tegra-smmu.c | 2 +- drivers/iommu/virtio-iommu.c | 2 +- .../memory/mediatek,mt8188-memory-port.h | 489 +++++++++++++++++++++ include/linux/amd-iommu.h | 1 - include/linux/dmar.h | 2 - include/linux/iommu.h | 15 + include/soc/mediatek/smi.h | 1 + 45 files changed, 1518 insertions(+), 672 deletions(-) create mode 100644 include/dt-bindings/memory/mediatek,mt8188-memory-port.h Please pull. Thanks, Joerg