IOMMU Updates for Linux v5.15

Including:

	- New DART IOMMU driver for Apple Silicon M1 chips.

	- Optimizations for iommu_[map/unmap] performance

	- Selective TLB flush support for the AMD IOMMU driver to make
	  it more efficient on emulated IOMMUs.

	- Rework IOVA setup and default domain type setting to move more
	  code out of IOMMU drivers and to support runtime switching
	  between certain types of default domains.

	- VT-d Updates from Lu Baolu:
	  - Update the virtual command related registers
	  - Enable Intel IOMMU scalable mode by default
	  - Preset A/D bits for user space DMA usage
	  - Allow devices to have more than 32 outstanding PRs
	  - Various cleanups

	- ARM SMMU Updates from Will Deacon:
	  - SMMUv3: Minor optimisation to avoid zeroing struct members on CMD submission
	  - SMMUv3: Increased use of batched commands to reduce submission latency
	  - SMMUv3: Refactoring in preparation for ECMDQ support
	  - SMMUv2: Fix races when probing devices with identical StreamIDs
	  - SMMUv2: Optimise walk cache flushing for Qualcomm implementations
	  - SMMUv2: Allow deep sleep states for some Qualcomm SoCs with shared clocks

	- Various smaller optimizations, cleanups, and fixes
Merge branches 'apple/dart', 'arm/smmu', 'iommu/fixes', 'x86/amd', 'x86/vt-d' and 'core' into next