[git pull] IOMMU Updates for Linux v6.3

From: Joerg Roedel
Date: Tue Feb 21 2023 - 03:51:25 EST


Hi Linus,

Please note the first item in the tag-message, there is some potential
for conflicts between these changes and other trees due to changed
function signatures.

With that in mind, please consider:

The following changes since commit ceaa837f96adb69c0df0397937cd74991d5d821a:

Linux 6.2-rc8 (2023-02-12 14:10:17 -0800)

are available in the Git repository at:

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

for you to fetch changes up to bedd29d793da3312e1350a56245c4971a38d4453:

Merge branches 'apple/dart', 'arm/exynos', 'arm/renesas', 'arm/smmu', 'x86/vt-d', 'x86/amd' and 'core' into next (2023-02-18 15:43:04 +0100)

----------------------------------------------------------------
IOMMU Updates for Linux v6.3:

Including:

- Consolidate iommu_map/unmap functions. There have been
blocking and atomic variants so far, but that was problematic
as this approach does not scale with required new variants
which just differ in the GFP flags used.
So Jason consolidated this back into single functions that
take a GFP parameter. This has the potential to cause
conflicts with other trees, as they introduce new call-sites
for the changed functions. I offered them to pull in the
branch containing these changes and resolve it, but I am not
sure everyone did that. The conflicts this caused with
upstream up to v6.2-rc8 are resolved in the final merge
commit.

- Retire the detach_dev() call-back in iommu_ops

- Arm SMMU updates from Will:
- Device-tree binding updates:
* Cater for three power domains on SM6375
* Document existing compatible strings for Qualcomm SoCs
* Tighten up clocks description for platform-specific compatible strings
- Enable Qualcomm workarounds for some additional platforms that need them

- Intel VT-d updates from Lu Baolu:
- Add Intel IOMMU performance monitoring support
- Set No Execute Enable bit in PASID table entry
- Two performance optimizations
- Fix PASID directory pointer coherency
- Fix missed rollbacks in error path
- Cleanups

- Apple t8110 DART support

- Exynos IOMMU:
- Implement better fault handling
- Error handling fixes

- Renesas IPMMU:
- Add device tree bindings for r8a779g0

- AMD IOMMU:
- Various fixes for handling on SNP-enabled systems and
handling of faults with unknown request-ids
- Cleanups and other small fixes

- Various other smaller fixes and cleanups

----------------------------------------------------------------
Bartosz Golaszewski (1):
dt-bindings: arm-smmu: document the smmu on Qualcomm SA8775P

Bjorn Andersson (1):
iommu/arm-smmu-qcom: Select identity domain for sc8280xp MDSS

Eric Curtin (1):
iommu: dart: DART_T8110_ERROR range should be 0 to 5

Gavrilov Ilia (1):
iommu/amd: Add a length limitation for the ivrs_acpihid command-line parameter

Hector Martin (7):
dt-bindings: iommu: dart: add t8110 compatible
iommu: dart: Add suspend/resume support
iommu: dart: Support >64 stream IDs
iommu: dart: Support a variable number of TTBRs per stream
iommu: dart: Fix DART_PARAMS1/2 bit define names
iommu: dart: Support different variants with different registers
iommu: dart: Add t8110 DART support

Jacob Pan (2):
iommu/vt-d: Avoid superfluous IOTLB tracking in lazy mode
iommu/vt-d: Fix PASID directory pointer coherency

Jason Gunthorpe (12):
iommu: Remove deferred attach check from __iommu_detach_device()
iommu: Add a gfp parameter to iommu_map()
iommu: Remove iommu_map_atomic()
iommu: Add a gfp parameter to iommu_map_sg()
iommu/dma: Use the gfp parameter in __iommu_dma_alloc_noncontiguous()
iommufd: Use GFP_KERNEL_ACCOUNT for iommu_map()
iommu/intel: Add a gfp parameter to alloc_pgtable_page()
iommu/intel: Support the gfp argument to the map_pages op
iommu/intel: Use GFP_KERNEL in sleepable contexts
iommu/s390: Push the gfp parameter to the kmem_cache_alloc()'s
iommu/s390: Use GFP_KERNEL in sleepable contexts
iommu: Fix error unwind in iommu_group_alloc()

Joerg Roedel (5):
iommu/ipmmu-vmsa: Remove ipmmu_utlb_disable()
iommu/fsl_pamu: Fix compile error after adding set_platform_dma_ops
Merge tag 'arm-smmu-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into arm/smmu
Merge branch 'iommu-memory-accounting' into core
Merge branches 'apple/dart', 'arm/exynos', 'arm/renesas', 'arm/smmu', 'x86/vt-d', 'x86/amd' and 'core' into next

Kan Liang (7):
iommu/vt-d: Support size of the register set in DRHD
iommu/vt-d: Retrieve IOMMU perfmon capability information
iommu/vt-d: Support Enhanced Command Interface
iommu/vt-d: Add IOMMU perfmon support
iommu/vt-d: Support cpumask for IOMMU perfmon
iommu/vt-d: Add IOMMU perfmon overflow handler support
iommu/vt-d: Enable IOMMU perfmon support

Konrad Dybcio (1):
dt-bindings: arm-smmu: Allow 3 power domains on SM6375 MMU500

Krzysztof Kozlowski (1):
dt-bindings: arm-smmu: disallow clocks when not used

Lu Baolu (10):
iommu: Remove detach_dev callbacks
iommu: Add set_platform_dma_ops iommu ops
iommu: Add set_platform_dma_ops callbacks
iommu: Remove detach_dev callback
iommu/vt-d: Remove include/linux/intel-svm.h
iommu/vt-d: Remove unused fields in svm structures
iommu/vt-d: Remove users from intel_svm_dev
iommu/vt-d: Remove sva from intel_svm_dev
iommu/vt-d: Set No Execute Enable bit in PASID table entry
iommu/vt-d: Fix error handling in sva enable/disable paths

Luca Weiss (1):
dt-bindings: iommu: qcom: Add Qualcomm MSM8953 compatible

Manivannan Sadhasivam (1):
dt-bindings: arm-smmu: Fix binding for SDX55 and SDX65

Marek Szyprowski (1):
iommu/exynos: Add missing set_platform_dma_ops callback

Marijn Suijten (2):
dt-bindings: arm-smmu: Add sm8150-smmu-500 to the list of Adreno smmus
iommu/arm-smmu-qcom: Add SM8150 DPU compatible

Martin Botka (1):
dt-bindings: arm-smmu: Document smmu-500 binding for SM6125

Randy Dunlap (1):
iommu/of: mark an unused function as __maybe_unused

Robin Murphy (1):
iommu: Tidy up io-pgtable dependencies

Sam Protsenko (2):
iommu/exynos: Abstract getting the fault info
iommu/exynos: Implement fault handling on SysMMU v7

Sven Peter (1):
iommu/dart: Fix apple_dart_device_group for PCI groups

Thierry Reding (4):
of: Introduce of_translate_dma_region()
dt-bindings: reserved-memory: Document iommu-addresses
iommu: Implement of_iommu_get_resv_regions()
iommu: dma: Use of_iommu_get_resv_regions()

Tina Zhang (1):
iommu/vt-d: Allow to use flush-queue when first level is default

Tom Lendacky (1):
iommu/amd: Do not clear event/ppr log buffer when snp is enabled

Vasant Hegde (6):
iommu/amd: Do not allocate io_pgtable_ops for passthrough domain
iommu/amd: Fix error handling for pdev_pri_ats_enable()
iommu/amd: Do not identity map v2 capable device when snp is enabled
iommu/amd: Improve page fault error reporting
iommu: Attach device group to old domain in error path
iommu/amd: Skip attach device domain is same as new domain

Will Deacon (1):
Merge branch 'for-joerg/arm-smmu/bindings' into for-joerg/arm-smmu/updates

Yang Yingliang (1):
iommu/exynos: Fix error handling in exynos_iommu_init()

Yoshihiro Shimoda (1):
dt-bindings: iommu: renesas,ipmmu-vmsa: add r8a779g0 support

.../testing/sysfs-bus-event_source-devices-iommu | 37 +
.../devicetree/bindings/iommu/apple,dart.yaml | 1 +
.../devicetree/bindings/iommu/arm,smmu.yaml | 66 +-
.../devicetree/bindings/iommu/qcom,iommu.txt | 1 +
.../bindings/iommu/renesas,ipmmu-vmsa.yaml | 1 +
.../bindings/reserved-memory/reserved-memory.yaml | 89 ++-
MAINTAINERS | 1 -
arch/arm/mm/dma-mapping.c | 11 +-
arch/s390/include/asm/pci_dma.h | 5 +-
arch/s390/pci/pci_dma.c | 31 +-
.../gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c | 3 +-
drivers/gpu/drm/tegra/drm.c | 2 +-
drivers/gpu/host1x/cdma.c | 2 +-
drivers/infiniband/hw/usnic/usnic_uiom.c | 8 +-
drivers/iommu/Kconfig | 18 +-
drivers/iommu/amd/init.c | 16 +-
drivers/iommu/amd/iommu.c | 89 ++-
drivers/iommu/apple-dart.c | 632 +++++++++++----
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 2 +
drivers/iommu/arm/arm-smmu/qcom_iommu.c | 23 -
drivers/iommu/dma-iommu.c | 21 +-
drivers/iommu/exynos-iommu.c | 216 +++--
drivers/iommu/fsl_pamu_domain.c | 6 +-
drivers/iommu/intel/Kconfig | 11 +
drivers/iommu/intel/Makefile | 1 +
drivers/iommu/intel/dmar.c | 33 +-
drivers/iommu/intel/iommu.c | 122 ++-
drivers/iommu/intel/iommu.h | 115 ++-
drivers/iommu/intel/pasid.c | 20 +-
drivers/iommu/intel/perfmon.c | 877 +++++++++++++++++++++
drivers/iommu/intel/perfmon.h | 64 ++
drivers/iommu/intel/svm.c | 90 +--
drivers/iommu/iommu-traces.c | 1 -
drivers/iommu/iommu.c | 171 ++--
drivers/iommu/iommufd/pages.c | 6 +-
drivers/iommu/ipmmu-vmsa.c | 28 -
drivers/iommu/msm_iommu.c | 6 +-
drivers/iommu/mtk_iommu.c | 9 -
drivers/iommu/mtk_iommu_v1.c | 4 +-
drivers/iommu/of_iommu.c | 96 +++
drivers/iommu/omap-iommu.c | 6 +-
drivers/iommu/rockchip-iommu.c | 1 -
drivers/iommu/s390-iommu.c | 22 +-
drivers/iommu/sprd-iommu.c | 16 -
drivers/iommu/sun50i-iommu.c | 1 -
drivers/iommu/tegra-gart.c | 6 +-
drivers/iommu/tegra-smmu.c | 5 +-
drivers/media/platform/qcom/venus/firmware.c | 2 +-
drivers/net/ipa/ipa_mem.c | 6 +-
drivers/net/wireless/ath/ath10k/snoc.c | 2 +-
drivers/net/wireless/ath/ath11k/ahb.c | 4 +-
drivers/of/address.c | 41 +
drivers/remoteproc/remoteproc_core.c | 5 +-
drivers/vfio/vfio_iommu_type1.c | 9 +-
drivers/vhost/vdpa.c | 2 +-
include/acpi/actbl1.h | 2 +-
include/linux/cpuhotplug.h | 1 +
include/linux/dmar.h | 1 +
include/linux/intel-svm.h | 16 -
include/linux/iommu.h | 39 +-
include/linux/of_address.h | 2 +
include/linux/of_iommu.h | 8 +
include/trace/events/iommu.h | 7 -
63 files changed, 2493 insertions(+), 646 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-bus-event_source-devices-iommu
create mode 100644 drivers/iommu/intel/perfmon.c
create mode 100644 drivers/iommu/intel/perfmon.h
delete mode 100644 include/linux/intel-svm.h

Please pull.

Thanks,

Joerg

Attachment: signature.asc
Description: Digital signature