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
..
2020-09-26 18:03:15 +02:00
2019-06-05 17:37:06 +02:00
2019-10-30 10:24:03 +01:00
2020-04-23 10:36:42 +02:00
2020-09-17 13:47:49 +02:00
2020-09-26 18:03:15 +02:00
2019-08-23 10:26:48 +02:00
2019-08-20 10:58:03 +01:00
2020-02-24 08:36:49 +01:00
2019-10-01 12:13:16 +01:00
2019-08-23 15:05:45 +01:00
2020-03-18 07:17:54 +01:00
2020-06-30 15:36:58 -04:00
2020-10-07 08:01:28 +02:00
2019-06-05 17:30:28 +02:00
2019-06-05 17:30:28 +02:00
2019-06-05 17:30:28 +02:00
2019-06-05 17:30:28 +02:00
2020-07-29 10:18:28 +02:00
2020-09-09 19:12:29 +02:00
2020-04-01 11:01:56 +02:00
2020-10-14 10:33:02 +02:00
2020-02-24 08:36:43 +01:00
2020-04-23 10:36:41 +02:00
2019-09-11 12:34:30 +02:00
2019-08-30 16:12:10 +02:00
2019-10-01 12:16:47 +01:00
2019-06-19 17:09:07 +02:00
2019-06-19 17:09:55 +02:00
2020-06-03 08:21:28 +02:00
2020-09-03 11:26:43 +02:00
2019-10-30 10:16:37 +01:00
2019-06-05 17:37:06 +02:00
2020-09-26 18:03:15 +02:00
2019-09-11 12:39:19 +02:00
2019-06-05 17:30:29 +02:00
2019-08-20 11:09:43 +02:00
2019-06-05 17:30:29 +02:00
2019-09-19 13:48:37 -07:00
2020-01-17 19:48:59 +01:00
2020-01-17 19:48:59 +01:00
2019-06-05 17:37:06 +02:00
2020-08-21 13:05:33 +02:00
2019-09-11 12:39:19 +02:00
2019-08-09 17:37:10 +02:00
2019-06-19 17:09:55 +02:00
2020-05-06 08:15:14 +02:00
2020-01-04 19:16:38 +01:00
2019-07-29 17:22:52 +01:00
2019-07-29 17:22:52 +01:00
2020-01-04 19:16:39 +01:00
2020-05-14 07:58:29 +02:00