Robin Murphy
563b5cbe33
iommu/arm-smmu-v3: Cope with duplicated Stream IDs
...
For PCI devices behind an aliasing PCIe-to-PCI/X bridge, the bridge
alias to DevFn 0.0 on the subordinate bus may match the original RID of
the device, resulting in the same SID being present in the device's
fwspec twice. This causes trouble later in arm_smmu_write_strtab_ent()
when we wind up visiting the STE a second time and find it already live.
Avoid the issue by giving arm_smmu_install_ste_for_dev() the cleverness
to skip over duplicates. It seems mildly counterintuitive compared to
preventing the duplicates from existing in the first place, but since
the DT and ACPI probe paths build their fwspecs differently, this is
actually the cleanest and most self-contained way to deal with it.
Cc: <stable@vger.kernel.org>
Fixes: 8f78515425 ("iommu/arm-smmu: Implement of_xlate() for SMMUv3")
Reported-by: Tomasz Nowicki <tomasz.nowicki@caviumnetworks.com>
Tested-by: Tomasz Nowicki <Tomasz.Nowicki@cavium.com>
Tested-by: Jayachandran C. <jnair@caviumnetworks.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2018-01-02 16:45:51 +00:00
..
amd_iommu.c
genirq/irqdomain: Rename early argument of irq_domain_activate_irq()
2017-12-29 21:13:04 +01:00
amd_iommu_init.c
iommu/amd: pr_err() strings should end with newlines
2017-09-27 17:01:35 +02:00
amd_iommu_proto.h
IOMMU Updates for Linux v4.14
2017-09-09 15:03:24 -07:00
amd_iommu_types.h
IOMMU Updates for Linux v4.14
2017-09-09 15:03:24 -07:00
amd_iommu_v2.c
IOMMU Updates for Linux v4.14
2017-09-09 15:03:24 -07:00
arm-smmu-regs.h
iommu/arm-smmu: Split out register defines
2017-08-15 17:34:48 +02:00
arm-smmu-v3.c
iommu/arm-smmu-v3: Cope with duplicated Stream IDs
2018-01-02 16:45:51 +00:00
arm-smmu.c
Merge branches 'iommu/arm/smmu', 'iommu/updates', 'iommu/vt-d', 'iommu/ipmmu-vmsa' and 'iommu/iova' into iommu-next-20171113.0
2017-11-13 12:40:51 -07:00
dma-iommu.c
iommu/iova: Make rcache flush optional on IOVA allocation failure
2017-10-12 14:18:02 +02:00
dmar.c
iommu/vt-d: Clear Page Request Overflow fault bit
2017-11-03 10:51:33 -06:00
exynos-iommu.c
Merge branches 'iommu/fixes', 'arm/omap', 'arm/exynos', 'x86/amd', 'x86/vt-d' and 'core' into next
2017-10-13 17:32:24 +02:00
fsl_pamu.c
Merge branches 'arm/exynos', 'arm/renesas', 'arm/rockchip', 'arm/omap', 'arm/mediatek', 'arm/tegra', 'arm/qcom', 'arm/smmu', 'ppc/pamu', 'x86/vt-d', 'x86/amd', 's390' and 'core' into next
2017-09-01 11:31:42 +02:00
fsl_pamu.h
iommu/pamu: Fix PAMU boot crash
2017-08-23 16:28:09 +02:00
fsl_pamu_domain.c
Merge branches 'arm/exynos', 'arm/renesas', 'arm/rockchip', 'arm/omap', 'arm/mediatek', 'arm/tegra', 'arm/qcom', 'arm/smmu', 'ppc/pamu', 'x86/vt-d', 'x86/amd', 's390' and 'core' into next
2017-09-01 11:31:42 +02:00
fsl_pamu_domain.h
iommu/pamu: Fix PAMU boot crash
2017-08-23 16:28:09 +02:00
intel-iommu.c
iommu/vt-d: Fix scatterlist offset handling
2017-11-17 10:28:58 -07:00
intel-svm.c
iommu/vt-d: Clear pasid table entry when memory unbound
2017-11-03 10:51:34 -06:00
intel_irq_remapping.c
genirq/irqdomain: Rename early argument of irq_domain_activate_irq()
2017-12-29 21:13:04 +01:00
io-pgtable-arm-v7s.c
Merge branches 'iommu/fixes', 'arm/omap', 'arm/exynos', 'x86/amd', 'x86/vt-d' and 'core' into next
2017-10-13 17:32:24 +02:00
io-pgtable-arm.c
iommu/io-pgtable-arm: Convert to IOMMU API TLB sync
2017-10-02 15:45:25 +02:00
io-pgtable.c
io-pgtable.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
iommu-sysfs.c
iommu: Fix wrong freeing of iommu_device->dev
2017-08-15 13:58:48 +02:00
iommu-traces.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
iommu.c
Merge branches 'arm/exynos', 'arm/renesas', 'arm/rockchip', 'arm/omap', 'arm/mediatek', 'arm/tegra', 'arm/qcom', 'arm/smmu', 'ppc/pamu', 'x86/vt-d', 'x86/amd', 's390' and 'core' into next
2017-09-01 11:31:42 +02:00
iova.c
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
ipmmu-vmsa.c
iommu/ipmmu-vmsa: Hook up r8a7795 DT matching code
2017-11-06 10:29:39 -07:00
irq_remapping.c
irq_remapping.h
Kconfig
iommu/qcom: Depend on HAS_DMA to fix compile error
2017-09-19 15:30:41 +02:00
Makefile
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
msm_iommu.c
iommu/msm: Add iommu_group support
2017-08-10 00:03:50 +02:00
msm_iommu.h
msm_iommu_hw-8xxx.h
mtk_iommu.c
Merge branches 'iommu/fixes', 'arm/omap', 'arm/exynos', 'x86/amd', 'x86/vt-d' and 'core' into next
2017-10-13 17:32:24 +02:00
mtk_iommu.h
iommu/mediatek: Merge 2 M4U HWs into one iommu domain
2017-08-22 16:37:59 +02:00
mtk_iommu_v1.c
iommu/mediatek: Fix driver name
2017-11-06 10:40:53 -07:00
of_iommu.c
iommu/of: Remove PCI host bridge node check
2017-09-22 12:05:43 +02:00
omap-iommu-debug.c
omap-iommu.c
iommu/omap: Add support to program multiple iommus
2017-09-19 11:32:05 +02:00
omap-iommu.h
iommu/omap: Add support to program multiple iommus
2017-09-19 11:32:05 +02:00
omap-iopgtable.h
qcom_iommu.c
iommu: qcom: wire up fault handler
2017-11-03 10:50:33 -06:00
rockchip-iommu.c
Merge branches 'arm/exynos', 'arm/renesas', 'arm/rockchip', 'arm/omap', 'arm/mediatek', 'arm/tegra', 'arm/qcom', 'arm/smmu', 'ppc/pamu', 'x86/vt-d', 'x86/amd', 's390' and 'core' into next
2017-09-01 11:31:42 +02:00
s390-iommu.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
tegra-gart.c
iommu/tegra-gart: Add support for struct iommu_device
2017-08-17 16:31:34 +02:00
tegra-smmu.c
arm/tegra: Call bus_set_iommu() after iommu_device_register()
2017-08-30 17:28:32 +02:00