android_kernel_motorola_sm6375/drivers/iommu
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Lu Baolu f825fd534f iommu/vt-d: Fix lockdep splat in iommu_flush_dev_iotlb()
[ Upstream commit 1a3f2fd7fc4e8f24510830e265de2ffb8e3300d2 ]

Lock(&iommu->lock) without disabling irq causes lockdep warnings.

[   12.703950] ========================================================
[   12.703962] WARNING: possible irq lock inversion dependency detected
[   12.703975] 5.9.0-rc6+ #659 Not tainted
[   12.703983] --------------------------------------------------------
[   12.703995] systemd-udevd/284 just changed the state of lock:
[   12.704007] ffffffffbd6ff4d8 (device_domain_lock){..-.}-{2:2}, at:
               iommu_flush_dev_iotlb.part.57+0x2e/0x90
[   12.704031] but this lock took another, SOFTIRQ-unsafe lock in the past:
[   12.704043]  (&iommu->lock){+.+.}-{2:2}
[   12.704045]

               and interrupts could create inverse lock ordering between
               them.

[   12.704073]
               other info that might help us debug this:
[   12.704085]  Possible interrupt unsafe locking scenario:

[   12.704097]        CPU0                    CPU1
[   12.704106]        ----                    ----
[   12.704115]   lock(&iommu->lock);
[   12.704123]                                local_irq_disable();
[   12.704134]                                lock(device_domain_lock);
[   12.704146]                                lock(&iommu->lock);
[   12.704158]   <Interrupt>
[   12.704164]     lock(device_domain_lock);
[   12.704174]
                *** DEADLOCK ***

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Link: https://lore.kernel.org/r/20200927062428.13713-1-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-14 10:33:02 +02:00
..
amd_iommu.c iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE 2020-09-26 18:03:15 +02:00
amd_iommu.h
amd_iommu_debugfs.c
amd_iommu_init.c iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE 2020-09-26 18:03:15 +02:00
amd_iommu_proto.h
amd_iommu_quirks.c
amd_iommu_types.h
amd_iommu_v2.c iommu/amd: Do not use IOMMUv2 functionality when SME is active 2020-09-17 13:47:49 +02:00
arm-smmu-impl.c
arm-smmu-v3.c
arm-smmu.c
arm-smmu.h
dma-iommu.c
dmar.c iommu/vt-d: Enable PCI ACS for platform opt in hint 2020-06-30 15:36:58 -04:00
exynos-iommu.c iommu/exynos: add missing put_device() call in exynos_iommu_of_xlate() 2020-10-07 08:01:28 +02:00
fsl_pamu.c
fsl_pamu.h
fsl_pamu_domain.c
fsl_pamu_domain.h
hyperv-iommu.c irqdomain/treewide: Keep firmware node unconditionally allocated 2020-07-29 10:18:28 +02:00
intel-iommu-debugfs.c
intel-iommu.c iommu/vt-d: Fix lockdep splat in iommu_flush_dev_iotlb() 2020-10-14 10:33:02 +02:00
intel-pasid.c
intel-pasid.h
intel-svm.c
intel-trace.c
intel_irq_remapping.c iommu/vt-d: Serialize IOMMU GCMD register modifications 2020-09-09 19:12:29 +02:00
io-pgtable-arm-v7s.c
io-pgtable-arm.c
io-pgtable.c
iommu-debugfs.c
iommu-sysfs.c
iommu-traces.c
iommu.c iommu: Fix reference count leak in iommu_group_alloc. 2020-06-03 08:21:28 +02:00
iova.c iommu/iova: Don't BUG on invalid PFNs 2020-09-03 11:26:43 +02:00
ipmmu-vmsa.c
irq_remapping.c
irq_remapping.h
Kconfig iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE 2020-09-26 18:03:15 +02:00
Makefile
msm_iommu.c
msm_iommu.h
msm_iommu_hw-8xxx.h
mtk_iommu.c
mtk_iommu.h
mtk_iommu_v1.c
of_iommu.c
omap-iommu-debug.c iommu/omap: Check for failure of a call to omap_iommu_dump_ctx 2020-08-21 13:05:33 +02:00
omap-iommu.c
omap-iommu.h
omap-iopgtable.h
qcom_iommu.c iommu/qcom: Fix local_base status check 2020-05-06 08:15:14 +02:00
rockchip-iommu.c
s390-iommu.c
tegra-gart.c
tegra-smmu.c
virtio-iommu.c iommu/virtio: Reverse arguments to list_add 2020-05-14 07:58:29 +02:00