IOMMU Updates for Linux v5.13

Including:

	- Big cleanup of almost unsused parts of the IOMMU API by
	  Christoph Hellwig. This mostly affects the Freescale PAMU
	  driver.

	- New IOMMU driver for Unisoc SOCs

	- ARM SMMU Updates from Will:

	  - SMMUv3: Drop vestigial PREFETCH_ADDR support
	  - SMMUv3: Elide TLB sync logic for empty gather
	  - SMMUv3: Fix "Service Failure Mode" handling
    	  - SMMUv2: New Qualcomm compatible string

	- Removal of the AMD IOMMU performance counter writeable check
	  on AMD. It caused long boot delays on some machines and is
	  only needed to work around an errata on some older (possibly
	  pre-production) chips. If someone is still hit by this
	  hardware issue anyway the performance counters will just
	  return 0.

	- Support for targeted invalidations in the AMD IOMMU driver.
	  Before that the driver only invalidated a single 4k page or the
	  whole IO/TLB for an address space. This has been extended now
	  and is mostly useful for emulated AMD IOMMUs.

	- Several fixes for the Shared Virtual Memory support in the
	  Intel VT-d driver

	- Mediatek drivers can now be built as modules

	- Re-introduction of the forcedac boot option which got lost
	  when converting the Intel VT-d driver to the common dma-iommu
	  implementation.

	- Extension of the IOMMU device registration interface and
	  support iommu_ops to be const again when drivers are built as
	  modules.
iommu: Streamline registration interface

Rather than have separate opaque setter functions that are easy to
overlook and lead to repetitive boilerplate in drivers, let's pass the
relevant initialisation parameters directly to iommu_device_register().

Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/ab001b87c533b6f4db71eb90db6f888953986c36.1617285386.git.robin.murphy@arm.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
22 files changed