[git pull] IOMMU Updates for Linux v5.4

From: Joerg Roedel
Date: Mon Sep 16 2019 - 11:13:54 EST


Hi Linus,

The following changes since commit f74c2bb98776e2de508f4d607cd519873065118e:

Linux 5.3-rc8 (2019-09-08 13:33:15 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git tags/iommu-updates-v5.4

for you to fetch changes up to e95adb9add75affb98570a518c902f50e5fcce1b:

Merge branches 'arm/omap', 'arm/exynos', 'arm/smmu', 'arm/mediatek', 'arm/qcom', 'arm/renesas', 'x86/amd', 'x86/vt-d' and 'core' into next (2019-09-11 12:39:19 +0200)

----------------------------------------------------------------
IOMMU Updates for Linux v5.4:

Including:

- Batched unmap support for the IOMMU-API

- Support for unlocked command queueing in the ARM-SMMU driver

- Rework the ATS support in the ARM-SMMU driver

- More refactoring in the ARM-SMMU driver to support hardware
implemention specific quirks and errata

- Bounce buffering DMA-API implementatation in the Intel VT-d driver
for untrusted devices (like Thunderbolt devices)

- Fixes for runtime PM support in the OMAP iommu driver

- MT8183 IOMMU support in the Mediatek IOMMU driver

- Rework of the way the IOMMU core sets the default domain type for
groups. Changing the default domain type on x86 does not require two
kernel parameters anymore.

- More smaller fixes and cleanups

----------------------------------------------------------------
Arnd Bergmann (1):
iommu/omap: Mark pm functions __maybe_unused

Chris Wilson (1):
iommu/vt-d: Declare Broadwell igfx dmar support snafu

Eric Auger (1):
iommu: Revisit iommu_insert_resv_region() implementation

Eric Dumazet (1):
iommu/iova: Avoid false sharing on fq_timer_on

Geert Uytterhoeven (1):
iommu/ipmmu-vmsa: Move IMTTBCR_SL0_TWOBIT_* to restore sort order

Gustavo A. R. Silva (1):
iommu/qcom: Use struct_size() helper

Hai Nguyen Pham (1):
iommu/ipmmu-vmsa: Disable cache snoop transactions on R-Car Gen3

Joerg Roedel (17):
iommu/omap: Fix compilation warnings
Merge branch 'for-joerg/batched-unmap' of git://git.kernel.org/.../will/linux into core
iommu: Remember when default domain type was set on kernel command line
iommu: Add helpers to set/get default domain type
iommu: Use Functions to set default domain type in iommu_set_def_domain_type()
iommu/amd: Request passthrough mode from IOMMU core
iommu/vt-d: Request passthrough mode from IOMMU core
x86/dma: Get rid of iommu_pass_through
ia64: Get rid of iommu_pass_through
iommu: Print default domain type on boot
iommu: Set default domain type at runtime
iommu: Disable passthrough mode when SME is active
Documentation: Update Documentation for iommu.passthrough
Merge branch 'for-joerg/arm-smmu/updates' of git://git.kernel.org/.../will/linux into arm/smmu
Merge branch 'arm/smmu' into arm/mediatek
iommu: Don't use sme_active() in generic code
Merge branches 'arm/omap', 'arm/exynos', 'arm/smmu', 'arm/mediatek', 'arm/qcom', 'arm/renesas', 'x86/amd', 'x86/vt-d' and 'core' into next

Kai-Heng Feng (1):
iommu/amd: Override wrong IVRS IOAPIC on Raven Ridge systems

Kyung Min Park (1):
iommu/vt-d: Add Scalable Mode fault information

Lu Baolu (5):
swiotlb: Split size parameter to map/unmap APIs
iommu/vt-d: Check whether device requires bounce buffer
iommu/vt-d: Don't switch off swiotlb if bounce page is used
iommu/vt-d: Add trace events for device dma map/unmap
iommu/vt-d: Use bounce buffer for untrusted devices

Marek Szyprowski (1):
iommu/exynos: Remove __init annotation from exynos_sysmmu_probe()

Nadav Amit (1):
iommu/vt-d: Fix wrong analysis whether devices share the same bus

Qian Cai (1):
iommu/amd: Silence warnings under memory pressure

Robin Murphy (18):
iommu/arm-smmu: Mask TLBI address correctly
iommu/qcom: Mask TLBI addresses correctly
iommu/arm-smmu: Convert GR0 registers to bitfields
iommu/arm-smmu: Convert GR1 registers to bitfields
iommu/arm-smmu: Convert context bank registers to bitfields
iommu/arm-smmu: Rework cb_base handling
iommu/arm-smmu: Split arm_smmu_tlb_inv_range_nosync()
iommu/arm-smmu: Get rid of weird "atomic" write
iommu/arm-smmu: Abstract GR1 accesses
iommu/arm-smmu: Abstract context bank accesses
iommu/arm-smmu: Abstract GR0 accesses
iommu/arm-smmu: Rename arm-smmu-regs.h
iommu/arm-smmu: Add implementation infrastructure
iommu/arm-smmu: Move Secure access quirk to implementation
iommu/arm-smmu: Add configuration implementation hook
iommu/arm-smmu: Add reset implementation hook
iommu/arm-smmu: Add context init implementation hook
iommu/arm-smmu: Ensure 64-bit I/O accessors are available on 32-bit CPU

Stephen Boyd (1):
iommu: Remove dev_err() usage after platform_get_irq()

Suman Anna (7):
iommu/omap: fix boot issue on remoteprocs with AMMU/Unicache
iommu/omap: add pdata ops for omap_device_enable/idle
iommu/omap: streamline enable/disable through runtime pm callbacks
iommu/omap: add logic to save/restore locked TLBs
iommu/omap: Add system suspend/resume support
iommu/omap: introduce new API for runtime suspend/resume control
iommu/omap: Use the correct type for SLAB_HWCACHE_ALIGN

Suthikulpanit, Suravee (1):
iommu/amd: Re-factor guest virtual APIC (de-)activation code

Tero Kristo (2):
iommu/omap: add support for late attachment of iommu devices
iommu/omap: remove pm_runtime_irq_safe flag for OMAP IOMMUs

Tom Murphy (1):
iommu: Remove wrong default domain comments

Will Deacon (29):
iommu: Remove empty iommu_tlb_range_add() callback from iommu_ops
iommu/io-pgtable-arm: Remove redundant call to io_pgtable_tlb_sync()
iommu/io-pgtable: Rename iommu_gather_ops to iommu_flush_ops
iommu: Introduce struct iommu_iotlb_gather for batching TLB flushes
iommu: Introduce iommu_iotlb_gather_add_page()
iommu: Pass struct iommu_iotlb_gather to ->unmap() and ->iotlb_sync()
iommu/io-pgtable: Introduce tlb_flush_walk() and tlb_flush_leaf()
iommu/io-pgtable: Hook up ->tlb_flush_walk() and ->tlb_flush_leaf() in drivers
iommu/io-pgtable-arm: Call ->tlb_flush_walk() and ->tlb_flush_leaf()
iommu/io-pgtable: Replace ->tlb_add_flush() with ->tlb_add_page()
iommu/io-pgtable: Remove unused ->tlb_sync() callback
iommu/io-pgtable: Pass struct iommu_iotlb_gather to ->unmap()
iommu/io-pgtable: Pass struct iommu_iotlb_gather to ->tlb_add_page()
iommu/arm-smmu-v3: Separate s/w and h/w views of prod and cons indexes
iommu/arm-smmu-v3: Drop unused 'q' argument from Q_OVF macro
iommu/arm-smmu-v3: Move low-level queue fields out of arm_smmu_queue
iommu/arm-smmu-v3: Operate directly on low-level queue where possible
iommu/arm-smmu-v3: Reduce contention during command-queue insertion
iommu/arm-smmu-v3: Defer TLB invalidation until ->iotlb_sync()
iommu/arm-smmu: Make private implementation details static
iommu/arm-smmu-v3: Document ordering guarantees of command insertion
iommu/arm-smmu-v3: Disable detection of ATS and PRI
iommu/arm-smmu-v3: Remove boolean bitfield for 'ats_enabled' flag
iommu/arm-smmu-v3: Don't issue CMD_SYNC for zero-length invalidations
iommu/arm-smmu-v3: Rework enabling/disabling of ATS for PCI masters
iommu/arm-smmu-v3: Fix ATC invalidation ordering wrt main TLBs
iommu/arm-smmu-v3: Avoid locking on invalidation path when not using ATS
Revert "iommu/arm-smmu-v3: Disable detection of ATS and PRI"
Merge branches 'for-joerg/arm-smmu/smmu-v2' and 'for-joerg/arm-smmu/smmu-v3' into for-joerg/arm-smmu/updates

Yong Wu (23):
dt-bindings: mediatek: Add binding for mt8183 IOMMU and SMI
iommu/mediatek: Use a struct as the platform data
memory: mtk-smi: Use a general config_port interface
memory: mtk-smi: Use a struct for the platform data for smi-common
iommu/mediatek: Fix iova_to_phys PA start for 4GB mode
iommu/io-pgtable-arm-v7s: Add paddr_to_iopte and iopte_to_paddr helpers
iommu/io-pgtable-arm-v7s: Use ias/oas to check the valid iova/pa
iommu/io-pgtable-arm-v7s: Rename the quirk from MTK_4GB to MTK_EXT
iommu/io-pgtable-arm-v7s: Extend to support PA[33:32] for MediaTek
iommu/mediatek: Adjust the PA for the 4GB Mode
iommu/mediatek: Add bclk can be supported optionally
iommu/mediatek: Add larb-id remapped support
iommu/mediatek: Refine protect memory definition
iommu/mediatek: Move reset_axi into plat_data
iommu/mediatek: Move vld_pa_rng into plat_data
memory: mtk-smi: Add gals support
iommu/mediatek: Add mt8183 IOMMU support
iommu/mediatek: Add mmu1 support
memory: mtk-smi: Invoke pm runtime_callback to enable clocks
memory: mtk-smi: Add bus_sel for mt8183
iommu/mediatek: Fix VLD_PA_RNG register backup when suspend
memory: mtk-smi: Get rid of need_larbid
iommu/mediatek: Clean up struct mtk_smi_iommu

YueHaibing (1):
iommu/arm-smmu-v3: Fix build error without CONFIG_PCI_ATS

Yunsheng Lin (1):
iommu/dma: Fix for dereferencing before null checking

Documentation/admin-guide/kernel-parameters.txt | 7 +-
.../devicetree/bindings/iommu/mediatek,iommu.txt | 30 +-
.../memory-controllers/mediatek,smi-common.txt | 12 +-
.../memory-controllers/mediatek,smi-larb.txt | 4 +
MAINTAINERS | 3 +-
arch/arm/mach-omap2/Makefile | 2 +
arch/arm/mach-omap2/omap-iommu.c | 43 +
arch/ia64/include/asm/iommu.h | 2 -
arch/ia64/kernel/pci-dma.c | 2 -
arch/x86/include/asm/iommu.h | 1 -
arch/x86/kernel/pci-dma.c | 20 +-
drivers/gpu/drm/panfrost/panfrost_mmu.c | 24 +-
drivers/iommu/Kconfig | 1 +
drivers/iommu/Makefile | 5 +-
drivers/iommu/amd_iommu.c | 106 ++-
drivers/iommu/amd_iommu.h | 14 +
drivers/iommu/amd_iommu_init.c | 5 +-
drivers/iommu/amd_iommu_quirks.c | 92 ++
drivers/iommu/amd_iommu_types.h | 9 +
drivers/iommu/arm-smmu-impl.c | 174 ++++
drivers/iommu/arm-smmu-regs.h | 210 -----
drivers/iommu/arm-smmu-v3.c | 980 ++++++++++++++++-----
drivers/iommu/arm-smmu.c | 662 ++++++--------
drivers/iommu/arm-smmu.h | 402 +++++++++
drivers/iommu/dma-iommu.c | 13 +-
drivers/iommu/dmar.c | 77 +-
drivers/iommu/exynos-iommu.c | 9 +-
drivers/iommu/intel-iommu.c | 359 +++++++-
drivers/iommu/intel-trace.c | 14 +
drivers/iommu/intel_irq_remapping.c | 6 +-
drivers/iommu/io-pgtable-arm-v7s.c | 145 ++-
drivers/iommu/io-pgtable-arm.c | 48 +-
drivers/iommu/iommu.c | 217 +++--
drivers/iommu/iova.c | 4 +-
drivers/iommu/ipmmu-vmsa.c | 106 ++-
drivers/iommu/msm_iommu.c | 43 +-
drivers/iommu/mtk_iommu.c | 213 +++--
drivers/iommu/mtk_iommu.h | 21 +-
drivers/iommu/mtk_iommu_v1.c | 9 +-
drivers/iommu/omap-iommu.c | 324 ++++++-
drivers/iommu/omap-iommu.h | 9 +-
drivers/iommu/qcom_iommu.c | 72 +-
drivers/iommu/rockchip-iommu.c | 2 +-
drivers/iommu/s390-iommu.c | 3 +-
drivers/iommu/tegra-gart.c | 12 +-
drivers/iommu/tegra-smmu.c | 2 +-
drivers/iommu/virtio-iommu.c | 5 +-
drivers/memory/mtk-smi.c | 268 ++++--
drivers/vfio/vfio_iommu_type1.c | 27 +-
drivers/xen/swiotlb-xen.c | 8 +-
include/dt-bindings/memory/mt8183-larb-port.h | 130 +++
include/linux/amd-iommu.h | 12 +
include/linux/blk_types.h | 5 +-
include/linux/intel-iommu.h | 2 +
include/linux/io-pgtable.h | 66 +-
include/linux/iommu.h | 108 ++-
include/linux/omap-iommu.h | 15 +
include/linux/platform_data/iommu-omap.h | 4 +
include/linux/swiotlb.h | 8 +-
include/soc/mediatek/smi.h | 5 -
include/trace/events/intel_iommu.h | 106 +++
kernel/dma/direct.c | 2 +-
kernel/dma/swiotlb.c | 34 +-
63 files changed, 3851 insertions(+), 1472 deletions(-)
create mode 100644 arch/arm/mach-omap2/omap-iommu.c
create mode 100644 drivers/iommu/amd_iommu.h
create mode 100644 drivers/iommu/amd_iommu_quirks.c
create mode 100644 drivers/iommu/arm-smmu-impl.c
delete mode 100644 drivers/iommu/arm-smmu-regs.h
create mode 100644 drivers/iommu/arm-smmu.h
create mode 100644 drivers/iommu/intel-trace.c
create mode 100644 include/dt-bindings/memory/mt8183-larb-port.h
create mode 100644 include/trace/events/intel_iommu.h

Please pull.

Thanks,

Joerg

Attachment: signature.asc
Description: Digital signature