[PATCH 00/25] DEPT DMA-FENCE test run for i915

Gwan-gyeong Mun gwan-gyeong.mun at intel.com
Thu Nov 3 12:27:11 UTC 2022


This is a series to test the detection of deadlock that can occur in i915
by applying DEPT implementation [1] for Linux 6.1 RC3.
This includes a dept draft implementation for dma-fence. [2]
Added dept tracking for "dma fence's default wait and wakeup".
Since the dept for dma-fence is an early version, it may be necessary to
add more dept tracking api in a scenario using dma-fence based on the
deadlock case that you have experienced.

To detectect more details, it tries to aggressive detection for dma fence
compare to previous run [3]
Reduce this warning[4][5] by increasing the DEPT_MAX_ECXT_HELD.
And Increase dept object size

[1] https://github.com/lgebyungchulpark/linux-dept/commits/dept1.23_on_v6.1-rc3
[2] https://github.com/lgebyungchulpark/linux-dept/commit/7417008153066ee2a6de5868eef9c8c0ad9da520
[3] https://patchwork.freedesktop.org/series/110402/
[4] DEPT_WARN_ON_ONCE: dt->ecxt_held_pos >= DEPT_MAX_ECXT_HELD
[5] https://intel-gfx-ci.01.org/tree/drm-tip/Trybot_110402v1/fi-ivb-3770/igt@i915_selftest@live@gem_contexts.html#dmesg-warnings276

Byungchul Park (22):
  llist: Move llist_{head,node} definition to types.h
  dept: Implement Dept(Dependency Tracker)
  dept: Apply Dept to spinlock
  dept: Apply Dept to mutex families
  dept: Apply Dept to rwlock
  dept: Apply Dept to wait_for_completion()/complete()
  dept: Apply Dept to seqcount APIs
  dept: Apply Dept to rwsem
  dept: Add proc knobs to show stats and dependency graph
  dept: Introduce split map concept and new APIs for them
  dept: Apply Dept to wait/event of PG_{locked,writeback}
  dept: Apply SDT to swait
  dept: Apply SDT to wait(waitqueue)
  locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread
  dept: Distinguish each syscall context from another
  dept: Distinguish each work from another
  dept: Disable Dept within the wait_bit layer by default
  dept: Disable Dept on struct crypto_larval's completion for now
  dept: Differentiate onstack maps from others of different tasks in
    class
  dept: Distinguish between sleep wait and non-sleep wait
  dept: Unstage wait when tagging a normal sleep wait
  dept: Apply Dept to dma fence's default wait and wakeup

Gwan-gyeong Mun (3):
  HAX: dept: Enable Dept by default
  HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track
    more
  HAX: dept: Increase dept object size

 arch/arm64/kernel/syscall.c        |    2 +
 arch/x86/entry/common.c            |    4 +
 crypto/api.c                       |    7 +-
 drivers/dma-buf/dma-fence.c        |    4 +
 include/linux/completion.h         |   44 +-
 include/linux/dept.h               |  604 ++++++
 include/linux/dept_page.h          |   94 +
 include/linux/dept_sdt.h           |   67 +
 include/linux/dma-fence.h          |    2 +
 include/linux/hardirq.h            |    3 +
 include/linux/irqflags.h           |   71 +-
 include/linux/llist.h              |    8 -
 include/linux/lockdep.h            |  159 +-
 include/linux/lockdep_types.h      |    3 +
 include/linux/mutex.h              |   22 +
 include/linux/page-flags.h         |   45 +-
 include/linux/pagemap.h            |    7 +-
 include/linux/percpu-rwsem.h       |    4 +-
 include/linux/rtmutex.h            |    1 +
 include/linux/rwlock.h             |   42 +
 include/linux/rwlock_api_smp.h     |    8 +-
 include/linux/rwlock_types.h       |    1 +
 include/linux/rwsem.h              |   22 +
 include/linux/sched.h              |    7 +
 include/linux/seqlock.h            |   16 +
 include/linux/spinlock.h           |   21 +
 include/linux/spinlock_types_raw.h |    3 +
 include/linux/swait.h              |    4 +
 include/linux/types.h              |    8 +
 include/linux/wait.h               |    6 +-
 init/init_task.c                   |    2 +
 init/main.c                        |    4 +
 kernel/Makefile                    |    1 +
 kernel/cpu.c                       |    2 +-
 kernel/dependency/Makefile         |    4 +
 kernel/dependency/dept.c           | 2978 ++++++++++++++++++++++++++++
 kernel/dependency/dept_hash.h      |   10 +
 kernel/dependency/dept_internal.h  |   26 +
 kernel/dependency/dept_object.h    |   13 +
 kernel/dependency/dept_proc.c      |   92 +
 kernel/exit.c                      |    7 +
 kernel/fork.c                      |    2 +
 kernel/locking/lockdep.c           |   28 +-
 kernel/locking/spinlock_rt.c       |   24 +-
 kernel/module/main.c               |    2 +
 kernel/sched/completion.c          |   12 +-
 kernel/sched/core.c                |   10 +
 kernel/sched/swait.c               |   10 +
 kernel/sched/wait.c                |   16 +
 kernel/sched/wait_bit.c            |    5 +-
 kernel/workqueue.c                 |    3 +
 lib/Kconfig.debug                  |   28 +
 lib/locking-selftest.c             |    2 +
 mm/filemap.c                       |   86 +
 mm/page_ext.c                      |    5 +
 55 files changed, 4579 insertions(+), 82 deletions(-)
 create mode 100644 include/linux/dept.h
 create mode 100644 include/linux/dept_page.h
 create mode 100644 include/linux/dept_sdt.h
 create mode 100644 kernel/dependency/Makefile
 create mode 100644 kernel/dependency/dept.c
 create mode 100644 kernel/dependency/dept_hash.h
 create mode 100644 kernel/dependency/dept_internal.h
 create mode 100644 kernel/dependency/dept_object.h
 create mode 100644 kernel/dependency/dept_proc.c

-- 
2.37.1



More information about the Intel-gfx-trybot mailing list