linux-stable/arch/powerpc
Alexey Kardashevskiy cc7130bf11 powerpc/iommu: Annotate nested lock for lockdep
The IOMMU table is divided into pools for concurrent mappings and each
pool has a separate spinlock. When taking the ownership of an IOMMU group
to pass through a device to a VM, we lock these spinlocks which triggers
a false negative warning in lockdep (below).

This fixes it by annotating the large pool's spinlock as a nest lock
which makes lockdep not complaining when locking nested locks if
the nest lock is locked already.

===
WARNING: possible recursive locking detected
5.11.0-le_syzkaller_a+fstn1 #100 Not tainted
--------------------------------------------
qemu-system-ppc/4129 is trying to acquire lock:
c0000000119bddb0 (&(p->lock)/1){....}-{2:2}, at: iommu_take_ownership+0xac/0x1e0

but task is already holding lock:
c0000000119bdd30 (&(p->lock)/1){....}-{2:2}, at: iommu_take_ownership+0xac/0x1e0

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(&(p->lock)/1);
  lock(&(p->lock)/1);
===

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210301063653.51003-1-aik@ozlabs.ru
2021-04-23 01:38:04 +10:00
..
boot powerpc/boot: Fix build of dts/fsl 2020-12-21 22:06:09 +11:00
configs powerpc/configs: Add IBMVNIC to some 64-bit configs 2021-04-23 01:38:03 +10:00
crypto crypto: powerpc/sha256 - remove unneeded semicolon 2021-02-10 17:55:57 +11:00
include powerpc/64: Fix the definition of the fixmap area 2021-04-22 20:59:15 +10:00
kernel powerpc/iommu: Annotate nested lock for lockdep 2021-04-23 01:38:04 +10:00
kexec powerpc/traps: Enhance readability for trap types 2021-04-17 22:20:19 +10:00
kvm powerpc/kvm: Fix PR KVM with KUAP/MEM_KEYS enabled 2021-04-20 14:22:24 +10:00
lib powerpc: Move copy_inst_from_kernel_nofault() 2021-04-21 22:52:34 +10:00
math-emu powerpc/math: Fix missing __user qualifier for get_user() and other sparse warnings 2021-03-29 13:22:12 +11:00
mm powerpc/64s: Fix mm_cpumask memory ordering comment 2021-04-23 01:38:03 +10:00
net powerpc/ebpf32: Use standard function call for functions within 32M distance 2021-04-21 22:52:33 +10:00
perf powerpc/perf: Fix the threshold event selection for memory events in power10 2021-04-23 01:38:02 +10:00
platforms powerpc/iommu: Do not immediately panic when failed IOMMU table allocation 2021-04-23 01:38:04 +10:00
purgatory powerpc/kexec: Don't use .machine ppc64 in trampoline_64.S 2021-04-08 21:17:43 +10:00
sysdev powerpc/iommu: Do not immediately panic when failed IOMMU table allocation 2021-04-23 01:38:04 +10:00
tools powerpc/tools: Remove 90 line limit in checkpatch script 2020-09-08 22:57:11 +10:00
xmon powerpc/inst: ppc_inst_as_u64() becomes ppc_inst_as_ulong() 2021-04-21 22:52:32 +10:00
Kbuild
Kconfig powerpc: Enable OPTPROBES on PPC32 2021-04-21 22:52:32 +10:00
Kconfig.debug powerpc: iommu: fix build when neither PCI or IBMVIO is set 2021-04-08 21:17:46 +10:00
Makefile powerpc: Only define _TASK_CPU for 32-bit 2021-04-20 14:22:24 +10:00
Makefile.postlink powerpc: unrel_branch_check.sh: use nm to find symbol value 2020-09-02 11:00:22 +10:00