[git pull] IOMMU Updates for Linux v4.13

From: Joerg Roedel
Date: Wed Jul 12 2017 - 07:42:22 EST

Hi Linus,

Just a note before the request: This pull-request is against v4.12-rc7,
as I didn't rebase my next branch against the final v4.12. This means
that the two fixes that went into v4.12 already are also listed in the
shortlog and diffstat below.

Doing the pull-request against v4.12 blows up the diffstat, so I decided
to do the request against the last merge-base. Please let me know if I
should merge against v4.12 and re-send the request.

On a side note, there is a small and trivial merge-conflict in
Documentation/arm64/silicon-errata.txt coming with this pull-request.

With this in mind:

The following changes since commit c0bc126f97fb929b3ae02c1c62322645d70eb408:

Linux 4.12-rc7 (2017-06-25 18:30:05 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git tags/iommu-updates-v4.13

for you to fetch changes up to 6a7086431fa18df7d03b1ed0126426c79b38dc8c:

Merge branches 'iommu/fixes', 'arm/rockchip', 'arm/renesas', 'arm/smmu', 'arm/core', 'x86/vt-d', 'x86/amd', 's390' and 'core' into next (2017-06-28 14:45:02 +0200)

IOMMU Updates for Linux v4.13

This update comes with:

* Support for lockless operation in the ARM io-pgtable code.
This is an important step to solve the scalability problems in
the common dma-iommu code for ARM

* Some Errata workarounds for ARM SMMU implemenations

* Rewrite of the deferred IO/TLB flush code in the AMD IOMMU
driver. The code suffered from very high flush rates, with the
new implementation the flush rate is down to ~1% of what it
was before

* Support for amd_iommu=off when booting with kexec. Problem
here was that the IOMMU driver bailed out early without
disabling the iommu hardware, if it was enabled in the old

* The Rockchip IOMMU driver is now available on ARM64

* Align the return value of the iommu_ops->device_group
call-backs to not miss error values

* Preempt-disable optimizations in the Intel VT-d and common
IOVA code to help Linux-RT

* Various other small cleanups and fixes

Arvind Yadav (4):
iommu/io-pgtable-arm-v7s: constify dummy_tlb_ops.
iommu: arm-smmu-v3: make of_device_ids const
iommu: arm-smmu: Handle return of iommu_device_register.
iommu/vt-d: Constify intel_dma_ops

CQ Tang (1):
iommu/vt-d: Helper function to query if a pasid has any active users

Geetha Sowjanya (1):
iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #126

Joerg Roedel (23):
iommu/amd: Ratelimit io-page-faults per device
iommu/amd: Rip out old queue flushing code
iommu/amd: Add per-domain flush-queue data structures
iommu/amd: Make use of the per-domain flush queue
iommu/amd: Add locking to per-domain flush-queue
iommu/amd: Add flush counters to struct dma_ops_domain
iommu/amd: Add per-domain timer to flush per-cpu queues
iommu/amd: Remove queue_release() function
iommu/amd: Suppress IO_PAGE_FAULTs in kdump kernel
iommu/amd: Disable IOMMUs at boot if they are enabled
iommu/amd: Rename free_on_init_error()
iommu/amd: Add new init-state IOMMU_CMDLINE_DISABLED
iommu/amd: Check for error states first in iommu_go_to_state()
iommu/amd: Set global pointers to NULL after freeing them
iommu/amd: Free IOMMU resources when disabled on command line
iommu/amd: Remove amd_iommu_disabled check from amd_iommu_detect()
iommu/amd: Free already flushed ring-buffer entries before full-check
Merge branch 'for-joerg/arm-smmu/updates' of git://git.kernel.org/.../will/linux into arm/smmu
iommu/s390: Use iommu_group_get_for_dev() in s390_iommu_add_device()
iommu: Return ERR_PTR() values from device_group call-backs
iommu/omap: Return ERR_PTR in device_group call-back
iommu: Warn once when device_group callback returns NULL
Merge branches 'iommu/fixes', 'arm/rockchip', 'arm/renesas', 'arm/smmu', 'arm/core', 'x86/vt-d', 'x86/amd', 's390' and 'core' into next

Linu Cherian (2):
ACPI/IORT: Fixup SMMUv3 resource size for Cavium ThunderX2 SMMUv3 model
iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74

Magnus Damm (8):
iommu/ipmmu-vmsa: Remove platform data handling
iommu/ipmmu-vmsa: Rework interrupt code and use bitmap for context
iommu/ipmmu-vmsa: Break out utlb parsing code
iommu/ipmmu-vmsa: Break out domain allocation code
iommu/ipmmu-vmsa: Add new IOMMU_DOMAIN_DMA ops
iommu/ipmmu-vmsa: Use fwspec iommu_priv on ARM64
iommu/ipmmu-vmsa: Drop LPAE Kconfig dependency
iommu/ipmmu-vmsa: Fix pgsize_bitmap semicolon typo

Peter Xu (1):
iommu/vt-d: Unwrap __get_valid_domain_for_dev()

Robert Richter (1):
iommu/arm-smmu-v3, acpi: Add temporary Cavium SMMU-V3 IORT model number definitions

Robin Murphy (10):
iommu/iova: Sort out rbtree limit_pfn handling
iommu/arm-smmu: Plumb in new ACPI identifiers
iommu/io-pgtable-arm-v7s: Check table PTEs more precisely
iommu/io-pgtable-arm: Improve split_blk_unmap
iommu/io-pgtable-arm-v7s: Refactor split_blk_unmap
iommu/io-pgtable: Introduce explicit coherency
iommu/io-pgtable-arm: Support lockless operation
iommu/io-pgtable-arm-v7s: Support lockless operation
iommu/arm-smmu: Remove io-pgtable spinlock
iommu/arm-smmu-v3: Remove io-pgtable spinlock

Sebastian Andrzej Siewior (2):
iommu/iova: Don't disable preempt around this_cpu_ptr()
iommu/vt-d: Don't disable preemption while accessing deferred_flush()

Shaohua Li (1):
iommu/vt-d: Correctly disable Intel IOMMU force on

Simon Xue (1):
iommu/rockchip: Enable Rockchip IOMMU on ARM64

Sunil Goutham (1):
iommu/arm-smmu-v3: Increase CMDQ drain timeout value

Suravee Suthikulpanit (1):
iommu/amd: Fix interrupt remapping when disable guest_mode

Tobias Klauser (2):
iommu/vt-d: Constify irq_domain_ops
iommu/amd: Constify irq_domain_ops

Tom Lendacky (2):
iommu/amd: Reduce amount of MMIO when submitting commands
iommu/amd: Reduce delay waiting for command buffer space

Will Deacon (2):
iommu/io-pgtable: depend on !GENERIC_ATOMIC64 when using COMPILE_TEST with LPAE
iommu/io-pgtable-arm: Use dma_wmb() instead of wmb() when publishing table

shameer (1):
iommu/arm-smmu-v3: Enable ACPI based HiSilicon CMD_PREFETCH quirk(erratum 161010701)

Documentation/arm64/silicon-errata.txt | 3 +
.../devicetree/bindings/iommu/arm,smmu-v3.txt | 12 +
arch/x86/kernel/tboot.c | 2 +-
drivers/acpi/arm64/iort.c | 83 +++-
drivers/iommu/Kconfig | 6 +-
drivers/iommu/amd_iommu.c | 464 +++++++++++++--------
drivers/iommu/amd_iommu_init.c | 44 +-
drivers/iommu/amd_iommu_types.h | 3 +
drivers/iommu/arm-smmu-v3.c | 229 ++++++----
drivers/iommu/arm-smmu.c | 64 +--
drivers/iommu/dma-iommu.c | 2 +-
drivers/iommu/intel-iommu.c | 26 +-
drivers/iommu/intel-svm.c | 30 ++
drivers/iommu/intel_irq_remapping.c | 4 +-
drivers/iommu/io-pgtable-arm-v7s.c | 183 +++++---
drivers/iommu/io-pgtable-arm.c | 189 ++++++---
drivers/iommu/io-pgtable.h | 6 +
drivers/iommu/iommu.c | 17 +-
drivers/iommu/iova.c | 30 +-
drivers/iommu/ipmmu-vmsa.c | 353 +++++++++++++---
drivers/iommu/omap-iommu.c | 2 +-
drivers/iommu/s390-iommu.c | 15 +-
include/linux/intel-svm.h | 20 +
23 files changed, 1235 insertions(+), 552 deletions(-)

Please pull.



Attachment: signature.asc
Description: Digital signature