Files
kernel_xiaomi_mt6785/lib/debug_locks.c
Kobe Wu 822cf70c5d [ALPS04355347] lockdep: enhance lock debugging function
1. verify lockdep lifetime
2. dump held locks when rcu stalls on CPU/task
3. adjust aee_dump position
4. improve lockdep selftest cases
5. print warning message to trace when printk is unusable
6. skip UBSAN checking in lockdep.c
7. add false alarm cases to filter

MTK-Commit-Id: a610ff8aa5a0d25a119898ceb69aae4cbb1213f6

Change-Id: Ieb7054ef94676f3b4d77c3c00706671d4e238826
CR-Id: ALPS04355347
Feature: [Module]Lockdep
Signed-off-by: Kobe Wu <kobe-cp.wu@mediatek.com>
2021-01-29 00:37:45 +08:00

57 lines
1.3 KiB
C

/*
* lib/debug_locks.c
*
* Generic place for common debugging facilities for various locks:
* spinlocks, rwlocks, mutexes and rwsems.
*
* Started by Ingo Molnar:
*
* Copyright (C) 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
*/
#include <linux/rwsem.h>
#include <linux/mutex.h>
#include <linux/export.h>
#include <linux/spinlock.h>
#include <linux/debug_locks.h>
#ifdef CONFIG_LOCKDEP
#include <linux/sched/clock.h>
unsigned long long debug_locks_off_ts;
#endif
/*
* We want to turn all lock-debugging facilities on/off at once,
* via a global flag. The reason is that once a single bug has been
* detected and reported, there might be cascade of followup bugs
* that would just muddy the log. So we report the first one and
* shut up after that.
*/
int debug_locks = 1;
EXPORT_SYMBOL_GPL(debug_locks);
/*
* The locking-testsuite uses <debug_locks_silent> to get a
* 'silent failure': nothing is printed to the console when
* a locking bug is detected.
*/
int debug_locks_silent;
EXPORT_SYMBOL_GPL(debug_locks_silent);
/*
* Generic 'turn off all lock debugging' function:
*/
int debug_locks_off(void)
{
if (debug_locks && __debug_locks_off()) {
#ifdef CONFIG_LOCKDEP
debug_locks_off_ts = sched_clock();
#endif
if (!debug_locks_silent) {
console_verbose();
return 1;
}
}
return 0;
}
EXPORT_SYMBOL_GPL(debug_locks_off);