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

Gwan-gyeong Mun gwan-gyeong.mun at intel.com
Sun Nov 20 10:03:40 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 RC5.
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.
In order to handle running out of reserved dept internal memory, updated
memory allocation mechanism [3]

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

To disable possible force possitive, it does not enable CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT

[1] https://github.com/lgebyungchulpark/linux-dept/commits/dept1.25_on_v6.1-rc3
[2] https://github.com/lgebyungchulpark/linux-dept/commit/6decf70fc09da06deb88be28acedf23604de0839
[3] https://github.com/lgebyungchulpark/linux-dept/commit/fb1d75ec4752b9cb2b332485893768338400db06
[4] https://patchwork.freedesktop.org/series/110402/
[5] DEPT_WARN_ON_ONCE: dt->ecxt_held_pos >= DEPT_MAX_ECXT_HELD
[6] 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 (27):
  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
  dept: Add a mechanism to refill the internal memory pools on running
    out
  jbd2: Disable Dept on journal->j_trans_commit_map
  dept: Track timeout waits separately with a new Kconfig
  dept: Apply timeout consideration to wait_for_completion()/complete()
  dept: Apply timeout consideration to swait APIs

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

 arch/arm64/kernel/syscall.c        |    2 +
 arch/x86/entry/common.c            |    4 +
 crypto/api.c                       |    7 +-
 drivers/dma-buf/dma-fence.c        |    4 +
 fs/jbd2/journal.c                  |    1 +
 include/linux/completion.h         |   50 +-
 include/linux/dept.h               |  622 ++++++
 include/linux/dept_page.h          |   94 +
 include/linux/dept_sdt.h           |   76 +
 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              |    7 +
 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           | 3096 ++++++++++++++++++++++++++++
 kernel/dependency/dept_hash.h      |   10 +
 kernel/dependency/dept_internal.h  |   26 +
 kernel/dependency/dept_object.h    |   13 +
 kernel/dependency/dept_proc.c      |   90 +
 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          |   24 +-
 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                  |   38 +
 lib/locking-selftest.c             |    2 +
 mm/filemap.c                       |   86 +
 mm/page_ext.c                      |    5 +
 56 files changed, 4754 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