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-10-01 14:11:36 +02:00
2020-08-23 17:36:59 -05:00
2020-10-01 14:54:17 +02:00
2020-08-14 16:27:00 +02:00
2020-09-24 10:48:29 +02:00
2020-06-30 11:59:48 +02:00
2019-06-05 17:30:28 +02:00
2020-06-30 10:47:38 +02:00
2019-06-05 17:30:28 +02:00
2020-07-14 17:44:42 +02:00
2020-07-24 14:29:47 +02:00
2020-07-29 14:42:00 +02:00
2020-01-10 15:52:24 +00:00
2019-10-15 13:34:25 +02:00
2019-02-26 11:15:58 +01:00
2019-12-23 14:06:05 +01:00
2020-07-29 14:42:00 +02:00
2020-06-30 10:42:27 +02:00
2020-08-11 14:13:24 -07:00
2019-05-21 10:50:45 +02:00
2019-06-05 17:37:06 +02:00
2020-08-11 14:13:24 -07:00
2020-07-29 14:47:37 +02:00
2019-06-05 17:30:29 +02:00
2020-07-24 14:29:47 +02:00
2019-06-05 17:30:29 +02:00
2020-06-30 11:59:48 +02:00
2020-07-29 14:42:00 +02:00
2020-07-29 14:42:00 +02:00
2020-07-28 15:51:32 +01:00
2020-07-22 15:02:33 +02:00
2020-07-29 14:42:00 +02:00
2019-08-09 17:37:10 +02:00
2020-03-04 16:24:46 +01:00
2020-06-30 11:59:48 +02:00
2020-06-08 12:05:31 -07:00
2020-06-30 12:05:09 +02:00
2020-06-30 11:59:48 +02:00
2020-06-30 11:59:48 +02:00
2020-08-23 17:36:59 -05:00