diff options
author | Lu Baolu <baolu.lu@linux.intel.com> | 2020-12-31 03:53:23 +0300 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2021-01-07 16:27:14 +0300 |
commit | 420d42f6f9db27d88bc4f83e3e668fcdacbf7e29 (patch) | |
tree | ddcf72e453546c473b7c81ae85733f1358b9e4fc /drivers/iommu/arm | |
parent | 4df7b2268ad81a74168130e1fb04550a8bc980e1 (diff) | |
download | linux-420d42f6f9db27d88bc4f83e3e668fcdacbf7e29.tar.xz |
iommu/vt-d: Fix lockdep splat in sva bind()/unbind()
Lock(&iommu->lock) without disabling irq causes lockdep warnings.
========================================================
WARNING: possible irq lock inversion dependency detected
5.11.0-rc1+ #828 Not tainted
--------------------------------------------------------
kworker/0:1H/120 just changed the state of lock:
ffffffffad9ea1b8 (device_domain_lock){..-.}-{2:2}, at:
iommu_flush_dev_iotlb.part.0+0x32/0x120
but this lock took another, SOFTIRQ-unsafe lock in the past:
(&iommu->lock){+.+.}-{2:2}
and interrupts could create inverse lock ordering between them.
other info that might help us debug this:
Possible interrupt unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&iommu->lock);
local_irq_disable();
lock(device_domain_lock);
lock(&iommu->lock);
<Interrupt>
lock(device_domain_lock);
*** DEADLOCK ***
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Link: https://lore.kernel.org/r/20201231005323.2178523-5-baolu.lu@linux.intel.com
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'drivers/iommu/arm')
0 files changed, 0 insertions, 0 deletions