Lu Baolu
1a3f2fd7fc
iommu/vt-d: Fix lockdep splat in iommu_flush_dev_iotlb()
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>
2020-10-01 14:54:17 +02:00
..
2020-09-16 19:36:26 +02:00
2020-09-04 13:19:19 -07:00
2020-09-03 18:50:48 -07:00
2020-09-05 14:22:46 -07:00
2020-09-13 09:02:59 -07:00
2020-09-07 13:14:30 +02:00
2020-08-30 15:53:44 -07:00
2020-09-10 13:42:35 -07:00
2020-09-20 10:51:11 -07:00
2020-09-01 21:15:00 +02:00
2020-09-18 11:48:25 -07:00
2020-08-30 15:53:44 -07:00
2020-09-20 08:57:36 -07:00
2020-09-04 12:12:39 -07:00
2020-09-03 17:47:02 +05:30
2020-09-15 09:42:15 +02:00
2020-09-20 15:18:11 -07:00
2020-09-18 08:52:06 +10:00
2020-09-02 12:55:46 -07:00
2020-09-15 16:20:43 -07:00
2020-09-18 23:11:44 +02:00
2020-09-13 09:15:20 -07:00
2020-09-11 10:02:36 -07:00
2020-09-20 10:40:43 -07:00
2020-09-04 00:07:12 +03:00
2020-10-01 14:54:17 +02:00
2020-09-20 08:55:09 -07:00
2020-09-03 08:22:16 -07:00
2020-09-13 08:52:21 -07:00
2020-09-07 08:57:44 +02:00
2020-09-14 20:58:27 +05:30
2020-09-03 18:50:48 -07:00
2020-09-03 18:50:48 -07:00
2020-09-11 11:55:28 -07:00
2020-09-01 19:44:20 +02:00
2020-09-04 12:41:55 +02:00
2020-09-16 14:16:04 +02:00
2020-09-05 19:52:54 +03:00
2020-09-11 11:25:55 -07:00
2020-09-14 10:08:07 +02:00
2020-09-15 16:30:20 -07:00
2020-09-03 14:10:19 +05:30
2020-09-11 11:35:55 -07:00
2020-09-13 09:15:20 -07:00
2020-09-08 11:42:58 -07:00
2020-09-04 12:49:03 -07:00
2020-09-15 13:52:14 +02:00
2020-09-16 13:23:33 +02:00
2020-09-17 18:45:30 +02:00
2020-09-03 18:50:48 -07:00
2020-09-20 10:46:26 -07:00
2020-09-06 09:59:27 -07:00