[git pull] IOMMU Updates for Linux v5.3

From: Joerg Roedel
Date: Mon Jul 08 2019 - 12:06:12 EST


Hi Linus,

The following changes since commit 6fbc7275c7a9ba97877050335f290341a1fd8dbf:

Linux 5.2-rc7 (2019-06-30 11:25:36 +0800)

are available in the Git repository at:

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

for you to fetch changes up to d95c3885865b71e56d8d60c8617f2ce1f0fa079d:

Merge branches 'x86/vt-d', 'x86/amd', 'arm/smmu', 'arm/omap', 'generic-dma-ops' and 'core' into next (2019-07-04 17:26:48 +0200)

----------------------------------------------------------------
IOMMU Updates for Linux v5.3

Including:

- Patches to make the dma-iommu code more generic so that it can
be used outside of the ARM context with other IOMMU drivers.
Goal is to make use of it on x86 too.

- Generic IOMMU domain support for the Intel VT-d driver. This
driver now makes more use of common IOMMU code to allocate
default domains for the devices it handles.

- An IOMMU fault reporting API to userspace. With that the IOMMU
fault handling can be done in user-space, for example to
forward the faults to a VM.

- Better handling for reserved regions requested by the
firmware. These can be 'relaxed' now, meaning that those don't
prevent a device being attached to a VM.

- Suspend/Resume support for the Renesas IOMMU driver.

- Added support for dumping SVA related fields of the DMAR table
in the Intel VT-d driver via debugfs.

- A pile of smaller fixes and cleanups.

----------------------------------------------------------------
Arnd Bergmann (1):
iommu: Fix integer truncation

Bjorn Andersson (1):
iommu/io-pgtable: Support non-coherent page tables

Christoph Hellwig (15):
iommu/dma: Cleanup dma-iommu.h
iommu/dma: Remove the flush_page callback
iommu/dma: Use for_each_sg in iommu_dma_alloc
iommu/dma: move the arm64 wrappers to common code
iommu/dma: Move __iommu_dma_map
iommu/dma: Refactor the page array remapping allocator
iommu/dma: Remove __iommu_dma_free
iommu/dma: Merge the CMA and alloc_pages allocation paths
iommu/dma: Refactor iommu_dma_alloc, part 2
iommu/dma: Refactor iommu_dma_get_sgtable
iommu/dma: Refactor iommu_dma_mmap
iommu/dma: Don't depend on CONFIG_DMA_DIRECT_REMAP
iommu/dma: Switch copyright boilerplace to SPDX
arm64: switch copyright boilerplace to SPDX in dma-mapping.c
arm64: trim includes in dma-mapping.c

Colin Ian King (1):
iommu/amd: Remove redundant assignment to variable npages

Eric Auger (7):
iommu: Fix a leak in iommu_insert_resv_region
iommu/vt-d: Duplicate iommu_resv_region objects per device list
iommu/vt-d: Introduce is_downstream_to_pci_bridge helper
iommu/vt-d: Handle RMRR with PCI bridge device scopes
iommu/vt-d: Handle PCI bridge RMRR device scopes in intel_iommu_get_resv_regions
iommu: Introduce IOMMU_RESV_DIRECT_RELAXABLE reserved memory regions
iommu/vt-d: Differentiate relaxable and non relaxable RMRRs

Geert Uytterhoeven (6):
iommu/ipmmu-vmsa: Link IOMMUs and devices in sysfs
iommu/ipmmu-vmsa: Prepare to handle 40-bit error addresses
iommu/ipmmu-vmsa: Make IPMMU_CTX_MAX unsigned
iommu/ipmmu-vmsa: Move num_utlbs to SoC-specific features
iommu/ipmmu-vmsa: Extract hardware context initialization
iommu/ipmmu-vmsa: Add suspend/resume support

Greg Kroah-Hartman (1):
iommu/omap: No need to check return value of debugfs_create functions

Jacob Pan (5):
iommu/vt-d: Fix bind svm with multiple devices
driver core: Add per device iommu param
iommu: Introduce device fault data
iommu: Introduce device fault report API
iommu/vt-d: Cleanup unused variable

James Sewart (1):
iommu/vt-d: Implement apply_resv_region iommu ops entry

Jean-Philippe Brucker (3):
iommu: Add recoverable fault reporting
iommu: Add padding to struct iommu_fault
iommu/arm-smmu-v3: Invalidate ATC when detaching a device

Joerg Roedel (5):
Merge tag 'v5.2-rc3' into x86/vt-d
Merge tag 'v5.2-rc6' into generic-dma-ops
Merge branch 'for-joerg/arm-smmu/updates' of git://git.kernel.org/.../will/linux into arm/smmu
Merge branch 'arm/renesas' into arm/smmu
Merge branches 'x86/vt-d', 'x86/amd', 'arm/smmu', 'arm/omap', 'generic-dma-ops' and 'core' into next

Kefeng Wang (1):
iommu/omap: Use dev_get_drvdata()

Kevin Mitchell (3):
iommu/amd: Make iommu_disable safer
iommu/amd: Move gart fallback to amd_iommu_init
iommu/amd: Only free resources once on init error

Lu Baolu (21):
iommu: Use right function to get group for device
iommu: Add API to request DMA domain for device
iommu/vt-d: Expose ISA direct mapping region via iommu_get_resv_regions
iommu/vt-d: Enable DMA remapping after rmrr mapped
iommu/vt-d: Add device_def_domain_type() helper
iommu/vt-d: Delegate the identity domain to upper layer
iommu/vt-d: Delegate the dma domain to upper layer
iommu/vt-d: Identify default domains replaced with private
iommu/vt-d: Handle 32bit device with identity default domain
iommu/vt-d: Probe DMA-capable ACPI name space devices
iommu/vt-d: Implement is_attach_deferred iommu ops entry
iommu/vt-d: Cleanup get_valid_domain_for_dev()
iommu/vt-d: Remove startup parameter from device_def_domain_type()
iommu/vt-d: Remove duplicated code for device hotplug
iommu/vt-d: Remove static identity map code
iommu/vt-d: Don't return error when device gets right domain
iommu/vt-d: Set domain type for a private domain
iommu/vt-d: Don't enable iommu's which have been ignored
iommu/vt-d: Allow DMA domain attaching to rmrr locked device
iommu/vt-d: Fix suspicious RCU usage in probe_acpi_namespace_devices()
iommu/vt-d: Consolidate domain_init() to avoid duplication

Lukasz Odzioba (1):
iommu/vt-d: Remove unnecessary rcu_read_locks

Nathan Chancellor (1):
iommu/dma: Fix condition check in iommu_dma_unmap_sg

Qian Cai (3):
iommu/vt-d: Fix a variable set but not used
iommu/vt-d: Remove an unused variable "length"
iommu/vt-d: Silence a variable set but not used

Robin Murphy (8):
iommu/dma: Move domain lookup into __iommu_dma_{map,unmap}
iommu/dma: Squash __iommu_dma_{map,unmap}_page helpers
iommu/dma: Factor out remapped pages lookup
iommu/dma: Refactor iommu_dma_free
iommu/dma: Refactor iommu_dma_alloc
iommu/dma: Don't remap CMA unnecessarily
iommu/dma: Split iommu_dma_free
iommu/dma: Cleanup variable naming in iommu_dma_alloc

Sai Praneeth Prakhya (4):
iommu/vt-d: Modify the format of intel DMAR tables dump
iommu/vt-d: Introduce macros useful for dumping DMAR table
iommu/vt-d: Add debugfs support to show scalable mode DMAR table internals
iommu/vt-d: Cleanup after delegating DMA domain to generic iommu

Tom Murphy (1):
iommu/amd: Flush not present cache in iommu_map_page

Vivek Gautam (1):
iommu/io-pgtable-arm: Add support to use system cache

Weitao Hou (1):
iommu/vt-d: Fix typo in SVM code comment

Will Deacon (3):
iommu/arm-smmu-v3: Increase maximum size of queues
iommu/io-pgtable: Replace IO_PGTABLE_QUIRK_NO_DMA with specific flag
iommu/arm-smmu-v3: Fix compilation when CONFIG_CMA=n

YueHaibing (1):
iommu/amd: Add missed 'tag' to error msg in iommu_print_event

.../ABI/testing/sysfs-kernel-iommu_groups | 9 +
arch/arm64/mm/dma-mapping.c | 412 +--------
drivers/iommu/amd_iommu.c | 26 +-
drivers/iommu/amd_iommu_init.c | 45 +-
drivers/iommu/arm-smmu-v3.c | 69 +-
drivers/iommu/arm-smmu.c | 4 +-
drivers/iommu/dma-iommu.c | 458 ++++++++--
drivers/iommu/intel-iommu-debugfs.c | 137 ++-
drivers/iommu/intel-iommu.c | 940 ++++++++++-----------
drivers/iommu/intel-pasid.c | 17 -
drivers/iommu/intel-pasid.h | 26 +
drivers/iommu/intel-svm.c | 15 +
drivers/iommu/intel_irq_remapping.c | 4 +-
drivers/iommu/io-pgtable-arm-v7s.c | 17 +-
drivers/iommu/io-pgtable-arm.c | 40 +-
drivers/iommu/iommu.c | 298 ++++++-
drivers/iommu/ipmmu-vmsa.c | 186 ++--
drivers/iommu/omap-iommu-debug.c | 35 +-
drivers/iommu/omap-iommu.c | 3 +-
include/linux/device.h | 3 +
include/linux/dma-iommu.h | 49 +-
include/linux/intel-iommu.h | 7 +-
include/linux/intel-svm.h | 2 +-
include/linux/io-pgtable.h | 11 +-
include/linux/iommu.h | 105 +++
include/uapi/linux/iommu.h | 155 ++++
26 files changed, 1772 insertions(+), 1301 deletions(-)
create mode 100644 include/uapi/linux/iommu.h

Please pull.

Thanks,

Joerg