[0/6] attempts at catching mmu_notifer deadlocks
mbox series

Message ID 20181025143527.8575-1-daniel.vetter@ffwll.ch
Headers show
Series
  • attempts at catching mmu_notifer deadlocks
Related show

Message

Daniel Vetter Oct. 25, 2018, 2:35 p.m. UTC
Hi all,

So this is my 2nd attempt (more successful I hope also with CI) at
catching the mmu notifier deadlock using lockdep. Ingredients:
- cross-release patches resurrect (so that lockdep see through
  flush_workqueue).
- fake lock context for mmu notifier callbacks (similar trick to
  fs_reclaim)
- bunch of sanity checks because hey! paranoia is good

Intentionally not yet submitting to core/mm since I want to figure out
whether this is indeed useful for us first.

Cheers, Daniel

Daniel Vetter (6):
  locking/lockdep: restore cross-release checks
  kthread: finer-grained lockdep/cross-release completion
  lockdep: Remove GFP_NOLOCKDEP annotation
  mm: Check if mmut notifier callbacks are allowed to fail
  mm, notifier: Catch sleeping/blocking for !blockable
  mm, notifier: Add a lockdep map for invalidate_range_start

 .../admin-guide/kernel-parameters.txt         |   3 +
 Documentation/locking/crossrelease.txt        | 874 ++++++++++++++++++
 include/linux/completion.h                    |  46 +
 include/linux/gfp.h                           |  10 +-
 include/linux/irqflags.h                      |   4 +
 include/linux/kthread.h                       |  48 +-
 include/linux/lockdep.h                       | 127 +++
 include/linux/mmu_notifier.h                  |   7 +
 include/linux/sched.h                         |  11 +
 kernel/kthread.c                              |  68 +-
 kernel/locking/lockdep.c                      | 652 ++++++++++++-
 kernel/sched/completion.c                     |   5 +
 lib/Kconfig.debug                             |  33 +
 mm/mmu_notifier.c                             |  17 +-
 mm/page_alloc.c                               |   3 -
 15 files changed, 1832 insertions(+), 76 deletions(-)
 create mode 100644 Documentation/locking/crossrelease.txt