v2: https://lore.kernel.org/linux-iommu/cover.1650890638.git.robin.murphy@xxxxxxx/ Hi all, Here's v3, now with working x86! Having finally made sense of how I broke Intel, I've given AMD the same fix by inspection. I'm still not 100% sure about s390, but it looks like it should probably be OK since it seems to register an IOMMU instance for each PCI device (?!) before disappearing into PCI hotplug code, wherein I assume we should never see a PCI device appear without its IOMMU already registered. Otherwise, the only other updates are hooking up the new host1x context bus (noting that it now takes all of 4 lines to support a whole new bus, yay!), and a slight tweak to make sure we keep rejecting registration of conflicting iommu_ops rather than needlessly change that just yet. Thanks, Robin. Robin Murphy (15): iommu/vt-d: Handle race between registration and device probe iommu/amd: Handle race between registration and device probe iommu: Always register bus notifiers iommu: Move bus setup to IOMMU device registration iommu/amd: Clean up bus_set_iommu() iommu/arm-smmu: Clean up bus_set_iommu() iommu/arm-smmu-v3: Clean up bus_set_iommu() iommu/dart: Clean up bus_set_iommu() iommu/exynos: Clean up bus_set_iommu() iommu/ipmmu-vmsa: Clean up bus_set_iommu() iommu/mtk: Clean up bus_set_iommu() iommu/omap: Clean up bus_set_iommu() iommu/tegra-smmu: Clean up bus_set_iommu() iommu/virtio: Clean up bus_set_iommu() iommu: Clean up bus_set_iommu() drivers/iommu/amd/amd_iommu.h | 1 - drivers/iommu/amd/init.c | 9 +- drivers/iommu/amd/iommu.c | 25 +---- drivers/iommu/apple-dart.c | 30 +---- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 53 +-------- drivers/iommu/arm/arm-smmu/arm-smmu.c | 84 +------------- drivers/iommu/arm/arm-smmu/qcom_iommu.c | 4 - drivers/iommu/exynos-iommu.c | 9 -- drivers/iommu/fsl_pamu_domain.c | 4 - drivers/iommu/intel/iommu.c | 4 +- drivers/iommu/iommu.c | 117 +++++++++----------- drivers/iommu/ipmmu-vmsa.c | 35 +----- drivers/iommu/msm_iommu.c | 2 - drivers/iommu/mtk_iommu.c | 24 +--- drivers/iommu/mtk_iommu_v1.c | 13 +-- drivers/iommu/omap-iommu.c | 6 - drivers/iommu/rockchip-iommu.c | 2 - drivers/iommu/s390-iommu.c | 6 - drivers/iommu/sprd-iommu.c | 5 - drivers/iommu/sun50i-iommu.c | 2 - drivers/iommu/tegra-smmu.c | 29 +---- drivers/iommu/virtio-iommu.c | 25 ----- include/linux/iommu.h | 1 - 23 files changed, 75 insertions(+), 415 deletions(-) -- 2.36.1.dirty