[PATCH 00/30] DEPT DMA-FENCE test run for i915
Gwan-gyeong Mun
gwan-gyeong.mun at intel.com
Mon Nov 21 09:54:32 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
To detect dept report from CI, it reports WARN message.
[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 (3):
HAX: dept: Enable Dept by default
HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track
more
HAX: dept: Make dept report as WARN
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 | 3097 ++++++++++++++++++++++++++++
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, 4755 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