Hi Linus, there is a tiny conflict with your tree because of the Kconfig changes this time. Please see my attached resolution. With that in mind: The following changes since commit 92ed301919932f777713b9172e525674157e983d: Linux 5.8-rc7 (2020-07-26 14:14:06 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git tags/iommu-updates-v5.9 for you to fetch changes up to e46b3c0d011eab9933c183d5b47569db8e377281: Merge tag 'arm-smmu-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into next (2020-07-29 14:47:37 +0200) ---------------------------------------------------------------- IOMMU Updates for Linux v5.9 Including: - Removal of the dev->archdata.iommu (or similar) pointers from most architectures. Only Sparc is left, but this is private to Sparc as their drivers don't use the IOMMU-API. - ARM-SMMU Updates from Will Deacon: - Support for SMMU-500 implementation in Marvell Armada-AP806 SoC - Support for SMMU-500 implementation in NVIDIA Tegra194 SoC - DT compatible string updates - Remove unused IOMMU_SYS_CACHE_ONLY flag - Move ARM-SMMU drivers into their own subdirectory - Intel VT-d Updates from Lu Baolu: - Misc tweaks and fixes for vSVA - Report/response page request events - Cleanups - Move the Kconfig and Makefile bits for the AMD and Intel drivers into their respective subdirectory. - MT6779 IOMMU Support - Support for new chipsets in the Renesas IOMMU driver - Other misc cleanups and fixes (e.g. to improve compile test coverage) ---------------------------------------------------------------- Alexander A. Klimov (1): iommu/omap: Replace HTTP links with HTTPS ones Baolin Wang (2): iommu: Mark __iommu_map_sg() as static iommu: Add gfp parameter to io_pgtable_ops->map() Chao Hao (10): dt-bindings: mediatek: Add bindings for MT6779 iommu/mediatek: Rename the register STANDARD_AXI_MODE(0x48) to MISC_CTRL iommu/mediatek: Use a u32 flags to describe different HW features iommu/mediatek: Setting MISC_CTRL register iommu/mediatek: Move inv_sel_reg into the plat_data iommu/mediatek: Add sub_comm id in translation fault iommu/mediatek: Add REG_MMU_WR_LEN_CTRL register definition iommu/mediatek: Extend protect pa alignment value iommu/mediatek: Modify MMU_CTRL register setting iommu/mediatek: Add mt6779 basic support Colin Ian King (1): iommu/omap: Check for failure of a call to omap_iommu_dump_ctx Denis Efremov (1): iommu/pamu: Use kzfree() in fsl_pamu_probe() Hanna Hawa (1): iommu/arm-smmu: Workaround for Marvell Armada-AP806 SoC erratum #582743 Jacob Pan (4): iommu/vt-d: Remove global page support in devTLB flush iommu/vt-d: Fix PASID devTLB invalidation iommu/vt-d: Warn on out-of-range invalidation address iommu/vt-d: Disable multiple GPASID-dev bind Jean-Philippe Brucker (1): iommu: Allow page responses without PASID Jerry Snitselaar (3): iommu: Add include/uapi/linux/iommu.h to MAINTAINERS file iommu/vt-d: Move Kconfig and Makefile bits down into intel directory iommu/amd: Move Kconfig and Makefile bits down into amd directory Joe Perches (1): iommu/qcom: Change CONFIG_BIG_ENDIAN to CONFIG_CPU_BIG_ENDIAN Joerg Roedel (19): Merge tag 'v5.8-rc3' into arm/qcom iommu/amd: Add helper functions to update domain->pt_root iommu/exynos: Use dev_iommu_priv_get/set() iommu/vt-d: Use dev_iommu_priv_get/set() iommu/msm: Use dev_iommu_priv_get/set() iommu/omap: Use dev_iommu_priv_get/set() iommu/rockchip: Use dev_iommu_priv_get/set() iommu/tegra: Use dev_iommu_priv_get/set() iommu/pamu: Use dev_iommu_priv_get/set() iommu/mediatek: Do no use dev->archdata.iommu x86: Remove dev->archdata.iommu pointer ia64: Remove dev->archdata.iommu pointer arm: Remove dev->archdata.iommu pointer arm64: Remove dev->archdata.iommu pointer powerpc/dma: Remove dev->archdata.iommu_domain iommu/mediatek: Include liunx/dma-mapping.h Merge tag 'arm-smmu-updates' of git://git.kernel.org/.../will/linux into arm/smmu Merge branches 'arm/renesas', 'arm/qcom', 'arm/mediatek', 'arm/omap', 'arm/exynos', 'arm/smmu', 'ppc/pamu', 'x86/vt-d', 'x86/amd' and 'core' into next Merge tag 'arm-smmu-updates' of git://git.kernel.org/.../will/linux into next John Garry (1): iommu/arm-smmu-v3: Fix trivial typo Jonathan Marek (2): dt-bindings: arm-smmu: Add sm8150 and sm8250 compatible strings iommu: arm-smmu-impl: Use qcom impl for sm8150 and sm8250 compatibles Krishna Reddy (5): iommu/arm-smmu: move TLB timeout and spin count macros iommu/arm-smmu: ioremap smmu mmio region before implementation init iommu/arm-smmu: add NVIDIA implementation for ARM MMU-500 usage dt-bindings: arm-smmu: add binding for Tegra194 SMMU iommu/arm-smmu: Add global/context fault implementation hooks Lad Prabhakar (1): iommu/ipmmu-vmsa: Add an entry for r8a77961 in soc_rcar_gen3[] Libing Zhou (1): iommu/amd: Remove double zero check Liu Yi L (3): iommu/vt-d: Enforce PASID devTLB field mask iommu/vt-d: Handle non-page aligned address iommu/vt-d: Fix devTLB flush for vSVA Lu Baolu (6): iommu/vt-d: Refactor device_to_iommu() helper iommu/vt-d: Add a helper to get svm and sdev for pasid iommu/vt-d: Report page request faults for guest SVA iommu/vt-d: Add page response ops support iommu/vt-d: Rename intel-pasid.h to pasid.h iommu/vt-d: Skip TE disabling on quirky gfx dedicated iommu Marek Szyprowski (1): iommu: Move sg_table wrapper out of CONFIG_IOMMU_SUPPORT Marian-Cristian Rotariu (1): iommu/ipmmu-vmsa: Hook up R8A774E1 DT matching code Ming-Fan Chen (2): dt-bindings: mediatek: Add binding for MT6779 SMI memory: mtk-smi: Add basic support for MT6779 Paul Menzel (1): iommu/amd: Print extended features in one line to fix divergent log levels Robin Murphy (5): iommu/iova: Don't BUG on invalid PFNs iommu/arm-smmu: Update impl quirks comment iommu: Tidy up Kconfig for SoC IOMMUs iommu/renesas: Expand COMPILE_TEST coverage iommu/exynos: Rename update_pte() Shawn Guo (1): iommu/qcom: add optional 'tbu' clock for TLB invalidate Tomasz Nowicki (2): iommu/arm-smmu: Call configuration impl hook before consuming features dt-bindings: arm-smmu: add compatible string for Marvell Armada-AP806 SMMU-500 Wei Yongjun (1): iommu: Make some functions static Will Deacon (2): iommu: Remove unused IOMMU_SYS_CACHE_ONLY flag iommu/arm-smmu: Move Arm SMMU drivers into their own subdirectory Yoshihiro Shimoda (2): dt-bindings: iommu: renesas,ipmmu-vmsa: add r8a77961 support iommu/renesas: Add support for r8a77961 Documentation/arm64/silicon-errata.rst | 3 + .../devicetree/bindings/iommu/arm,smmu.yaml | 31 +- .../devicetree/bindings/iommu/mediatek,iommu.txt | 2 + .../bindings/iommu/renesas,ipmmu-vmsa.yaml | 1 + .../memory-controllers/mediatek,smi-common.txt | 5 +- .../memory-controllers/mediatek,smi-larb.txt | 3 +- MAINTAINERS | 5 +- arch/arm/include/asm/device.h | 3 - arch/arm64/include/asm/device.h | 3 - arch/ia64/include/asm/device.h | 3 - arch/powerpc/include/asm/device.h | 3 - arch/x86/include/asm/device.h | 3 - drivers/gpu/drm/i915/selftests/mock_gem_device.c | 10 +- drivers/gpu/drm/panfrost/panfrost_mmu.c | 2 +- drivers/iommu/Kconfig | 145 +-------- drivers/iommu/Makefile | 15 +- drivers/iommu/amd/Kconfig | 44 +++ drivers/iommu/amd/Makefile | 4 + drivers/iommu/amd/init.c | 13 +- drivers/iommu/amd/iommu.c | 31 +- drivers/iommu/arm/Makefile | 2 + drivers/iommu/arm/arm-smmu-v3/Makefile | 2 + drivers/iommu/{ => arm/arm-smmu-v3}/arm-smmu-v3.c | 4 +- drivers/iommu/arm/arm-smmu/Makefile | 4 + drivers/iommu/{ => arm/arm-smmu}/arm-smmu-impl.c | 60 +++- drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c | 278 +++++++++++++++++ drivers/iommu/{ => arm/arm-smmu}/arm-smmu-qcom.c | 0 drivers/iommu/{ => arm/arm-smmu}/arm-smmu.c | 42 ++- drivers/iommu/{ => arm/arm-smmu}/arm-smmu.h | 6 + drivers/iommu/{ => arm/arm-smmu}/qcom_iommu.c | 66 ++-- drivers/iommu/exynos-iommu.c | 32 +- drivers/iommu/fsl_pamu.c | 5 +- drivers/iommu/fsl_pamu_domain.c | 8 +- drivers/iommu/intel/Kconfig | 86 ++++++ drivers/iommu/intel/Makefile | 7 + drivers/iommu/intel/debugfs.c | 2 +- drivers/iommu/intel/dmar.c | 26 +- drivers/iommu/intel/iommu.c | 141 +++++---- drivers/iommu/intel/pasid.c | 13 +- drivers/iommu/intel/{intel-pasid.h => pasid.h} | 2 +- drivers/iommu/intel/svm.c | 335 ++++++++++++++++----- drivers/iommu/io-pgtable-arm-v7s.c | 18 +- drivers/iommu/io-pgtable-arm.c | 21 +- drivers/iommu/iommu.c | 37 ++- drivers/iommu/iova.c | 4 +- drivers/iommu/ipmmu-vmsa.c | 14 +- drivers/iommu/msm_iommu.c | 6 +- drivers/iommu/mtk_iommu.c | 112 +++++-- drivers/iommu/mtk_iommu.h | 23 +- drivers/iommu/mtk_iommu_v1.c | 10 +- drivers/iommu/omap-iommu-debug.c | 3 + drivers/iommu/omap-iommu.c | 22 +- drivers/iommu/rockchip-iommu.c | 8 +- drivers/iommu/tegra-gart.c | 8 +- drivers/iommu/tegra-smmu.c | 8 +- drivers/media/platform/s5p-mfc/s5p_mfc_iommu.h | 4 +- drivers/memory/mtk-smi.c | 22 ++ include/dt-bindings/memory/mt6779-larb-port.h | 206 +++++++++++++ include/linux/dmar.h | 1 + include/linux/intel-iommu.h | 13 +- include/linux/io-pgtable.h | 2 +- include/linux/iommu.h | 38 +-- include/uapi/linux/iommu.h | 6 +- 63 files changed, 1465 insertions(+), 571 deletions(-) create mode 100644 drivers/iommu/amd/Kconfig create mode 100644 drivers/iommu/amd/Makefile create mode 100644 drivers/iommu/arm/Makefile create mode 100644 drivers/iommu/arm/arm-smmu-v3/Makefile rename drivers/iommu/{ => arm/arm-smmu-v3}/arm-smmu-v3.c (99%) create mode 100644 drivers/iommu/arm/arm-smmu/Makefile rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu-impl.c (72%) create mode 100644 drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu-qcom.c (100%) rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu.c (98%) rename drivers/iommu/{ => arm/arm-smmu}/arm-smmu.h (98%) rename drivers/iommu/{ => arm/arm-smmu}/qcom_iommu.c (95%) create mode 100644 drivers/iommu/intel/Kconfig create mode 100644 drivers/iommu/intel/Makefile rename drivers/iommu/intel/{intel-pasid.h => pasid.h} (98%) create mode 100644 include/dt-bindings/memory/mt6779-larb-port.h Please pull. Thanks, Joerg diff --cc drivers/iommu/intel/Kconfig index 000000000000,877beec9d987..5337ee1584b0 mode 000000,100644..100644 --- a/drivers/iommu/intel/Kconfig +++ b/drivers/iommu/intel/Kconfig @@@ -1,0 -1,86 +1,87 @@@ + # SPDX-License-Identifier: GPL-2.0-only + # Intel IOMMU support + config DMAR_TABLE + bool + + config INTEL_IOMMU + bool "Support for Intel IOMMU using DMA Remapping Devices" + depends on PCI_MSI && ACPI && (X86 || IA64) ++ select DMA_OPS + select IOMMU_API + select IOMMU_IOVA + select NEED_DMA_MAP_STATE + select DMAR_TABLE + select SWIOTLB + select IOASID + help + DMA remapping (DMAR) devices support enables independent address + translations for Direct Memory Access (DMA) from devices. + These DMA remapping devices are reported via ACPI tables + and include PCI device scope covered by these DMA + remapping devices. + + config INTEL_IOMMU_DEBUGFS + bool "Export Intel IOMMU internals in Debugfs" + depends on INTEL_IOMMU && IOMMU_DEBUGFS + help + !!!WARNING!!! + + DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!! + + Expose Intel IOMMU internals in Debugfs. + + This option is -NOT- intended for production environments, and should + only be enabled for debugging Intel IOMMU. + + config INTEL_IOMMU_SVM + bool "Support for Shared Virtual Memory with Intel IOMMU" + depends on INTEL_IOMMU && X86_64 + select PCI_PASID + select PCI_PRI + select MMU_NOTIFIER + select IOASID + help + Shared Virtual Memory (SVM) provides a facility for devices + to access DMA resources through process address space by + means of a Process Address Space ID (PASID). + + config INTEL_IOMMU_DEFAULT_ON + def_bool y + prompt "Enable Intel DMA Remapping Devices by default" + depends on INTEL_IOMMU + help + Selecting this option will enable a DMAR device at boot time if + one is found. If this option is not selected, DMAR support can + be enabled by passing intel_iommu=on to the kernel. + + config INTEL_IOMMU_BROKEN_GFX_WA + bool "Workaround broken graphics drivers (going away soon)" + depends on INTEL_IOMMU && BROKEN && X86 + help + Current Graphics drivers tend to use physical address + for DMA and avoid using DMA APIs. Setting this config + option permits the IOMMU driver to set a unity map for + all the OS-visible memory. Hence the driver can continue + to use physical addresses for DMA, at least until this + option is removed in the 2.6.32 kernel. + + config INTEL_IOMMU_FLOPPY_WA + def_bool y + depends on INTEL_IOMMU && X86 + help + Floppy disk drivers are known to bypass DMA API calls + thereby failing to work when IOMMU is enabled. This + workaround will setup a 1:1 mapping for the first + 16MiB to make floppy (an ISA device) work. + + config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON + bool "Enable Intel IOMMU scalable mode by default" + depends on INTEL_IOMMU + help + Selecting this option will enable by default the scalable mode if + hardware presents the capability. The scalable mode is defined in + VT-d 3.0. The scalable mode capability could be checked by reading + /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option + is not selected, scalable mode support could also be enabled by + passing intel_iommu=sm_on to the kernel. If not sure, please use + the default value.