linux/drivers/iommu
Robin Murphy 588888a739 iommu/arm-smmu: Intelligent SMR allocation
Stream Match Registers are one of the more awkward parts of the SMMUv2
architecture; there are typically never enough to assign one to each
stream ID in the system, and configuring them such that a single ID
matches multiple entries is catastrophically bad - at best, every
transaction raises a global fault; at worst, they go *somewhere*.

To address the former issue, we can mask ID bits such that a single
register may be used to match multiple IDs belonging to the same device
or group, but doing so also heightens the risk of the latter problem
(which can be nasty to debug).

Tackle both problems at once by replacing the simple bitmap allocator
with something much cleverer. Now that we have convenient in-memory
representations of the stream mapping table, it becomes straightforward
to properly validate new SMR entries against the current state, opening
the door to arbitrary masking and SMR sharing.

Another feature which falls out of this is that with IDs shared by
separate devices being automatically accounted for, simply associating a
group pointer with the S2CR offers appropriate group allocation almost
for free, so hook that up in the process.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2016-09-16 09:34:20 +01:00
..
amd_iommu_init.c iommu/amd: Fix unity mapping initialization race 2016-07-06 18:04:55 +02:00
amd_iommu_proto.h
amd_iommu_types.h iommu/amd: Use container_of to get dma_ops_domain 2016-07-14 10:21:57 +02:00
amd_iommu_v2.c IOMMU Updates for Linux v4.8 2016-08-01 07:25:10 -04:00
amd_iommu.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
arm-smmu-v3.c iommu/arm-smmu: Set PRIVCFG in stage 1 STEs 2016-09-16 09:34:17 +01:00
arm-smmu.c iommu/arm-smmu: Intelligent SMR allocation 2016-09-16 09:34:20 +01:00
dma-iommu.c iommu/dma: Respect IOMMU aperture when allocating 2016-08-10 12:02:02 +02:00
dmar.c IOMMU Updates for Linux v4.8 2016-08-01 07:25:10 -04:00
exynos-iommu.c iommu/exynos: update to use iommu big-endian 2016-06-21 11:59:03 +02:00
fsl_pamu_domain.c
fsl_pamu_domain.h
fsl_pamu.c
fsl_pamu.h
intel_irq_remapping.c SVM fixes for Linux 4.5 2016-02-16 08:04:06 -08:00
intel-iommu.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
intel-svm.c mm: do not pass mm_struct into handle_mm_fault 2016-07-26 16:19:19 -07:00
io-pgtable-arm-v7s.c iommu/io-pgtable-arm-v7s: Fix attributes when splitting blocks 2016-08-19 09:40:16 +01:00
io-pgtable-arm.c iommu/io-pgtable-arm: Fix iova_to_phys for block entries 2016-07-01 14:04:37 +01:00
io-pgtable.c iommu/io-pgtable: Fix a brace coding style issue. 2016-04-05 15:34:29 +02:00
io-pgtable.h iommu/io-pgtable: Add MTK 4GB mode in Short-descriptor 2016-04-05 15:39:37 +02:00
iommu-sysfs.c
iommu-traces.c
iommu.c iommu: Introduce iommu_fwspec 2016-09-16 09:34:15 +01:00
iova.c iommu/iova: Disable preemption around use of this_cpu_ptr() 2016-06-27 13:07:45 +02:00
ipmmu-vmsa.c
irq_remapping.c x86/cpufeature: Replace cpu_has_apic with boot_cpu_has() usage 2016-04-13 11:37:41 +02:00
irq_remapping.h
Kconfig iommu/arm-smmu: Support non-PCI devices with SMMUv3 2016-09-16 09:34:17 +01:00
Makefile Merge branches 'x86/amd', 'x86/vt-d', 'arm/exynos', 'arm/mediatek', 'arm/msm', 'arm/rockchip', 'arm/smmu' and 'core' into next 2016-07-26 16:02:37 +02:00
msm_iommu_hw-8xxx.h
msm_iommu.c iommu/msm: use generic ARMV7S short descriptor pagetable ops 2016-06-21 13:57:13 +02:00
msm_iommu.h iommu/msm: Add DT adaptation 2016-06-21 13:56:00 +02:00
mtk_iommu_v1.c iommu/mediatek: Make mtk_iommu_pm_ops static 2016-06-21 11:54:06 +02:00
mtk_iommu.c iommu/mediatek: move the common struct into header file 2016-06-21 11:36:19 +02:00
mtk_iommu.h iommu/mediatek: Mark static functions in headers inline 2016-08-09 15:46:46 +02:00
of_iommu.c iommu: Introduce iommu_fwspec 2016-09-16 09:34:15 +01:00
omap-iommu-debug.c iommu/omap: Align code with open parenthesis 2016-04-05 17:53:20 +02:00
omap-iommu.c iommu/omap: Use WARN_ON for page table alignment check 2016-04-05 17:53:20 +02:00
omap-iommu.h
omap-iopgtable.h
rockchip-iommu.c iommu/rockchip: Prepare to support generic DMA mapping 2016-06-27 14:50:08 +02:00
s390-iommu.c
tegra-gart.c
tegra-smmu.c