Loading kernel/locking/spinlock_debug.c +7 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include <linux/debug_locks.h> #include <linux/delay.h> #include <linux/export.h> #include <linux/bug.h> #include <soc/qcom/watchdog.h> void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name, struct lock_class_key *key) Loading Loading @@ -64,6 +66,11 @@ static void spin_dump(raw_spinlock_t *lock, const char *msg) owner ? owner->comm : "<none>", owner ? task_pid_nr(owner) : -1, lock->owner_cpu); #ifdef CONFIG_DEBUG_SPINLOCK_BITE_ON_BUG msm_trigger_wdog_bite(); #elif defined(CONFIG_DEBUG_SPINLOCK_PANIC_ON_BUG) BUG(); #endif dump_stack(); } Loading lib/Kconfig.debug +23 −1 Original line number Diff line number Diff line Loading @@ -1064,6 +1064,28 @@ config DEBUG_SPINLOCK and certain other kinds of spinlock errors commonly made. This is best used in conjunction with the NMI watchdog so that spinlock deadlocks are also debuggable. choice prompt "Perform Action on spinlock bug" depends on DEBUG_SPINLOCK default DEBUG_SPINLOCK_BITE_ON_BUG config DEBUG_SPINLOCK_BITE_ON_BUG bool "Cause a Watchdog Bite on Spinlock bug" depends on QCOM_WATCHDOG_V2 help On a spinlock bug, cause a watchdog bite so that we can get the precise state of the system captured at the time of spin dump. This is mutually exclusive with the below DEBUG_SPINLOCK_PANIC_ON_BUG config. config DEBUG_SPINLOCK_PANIC_ON_BUG bool "Cause a Kernel Panic on Spinlock bug" help On a spinlock bug, cause a kernel panic so that we can get the complete information about the system at the time of spin dump in the dmesg. This is mutually exclusive with the above DEBUG_SPINLOCK_BITE_ON_BUG. endchoice config DEBUG_MUTEXES bool "Mutex debugging: basic checks" Loading Loading
kernel/locking/spinlock_debug.c +7 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include <linux/debug_locks.h> #include <linux/delay.h> #include <linux/export.h> #include <linux/bug.h> #include <soc/qcom/watchdog.h> void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name, struct lock_class_key *key) Loading Loading @@ -64,6 +66,11 @@ static void spin_dump(raw_spinlock_t *lock, const char *msg) owner ? owner->comm : "<none>", owner ? task_pid_nr(owner) : -1, lock->owner_cpu); #ifdef CONFIG_DEBUG_SPINLOCK_BITE_ON_BUG msm_trigger_wdog_bite(); #elif defined(CONFIG_DEBUG_SPINLOCK_PANIC_ON_BUG) BUG(); #endif dump_stack(); } Loading
lib/Kconfig.debug +23 −1 Original line number Diff line number Diff line Loading @@ -1064,6 +1064,28 @@ config DEBUG_SPINLOCK and certain other kinds of spinlock errors commonly made. This is best used in conjunction with the NMI watchdog so that spinlock deadlocks are also debuggable. choice prompt "Perform Action on spinlock bug" depends on DEBUG_SPINLOCK default DEBUG_SPINLOCK_BITE_ON_BUG config DEBUG_SPINLOCK_BITE_ON_BUG bool "Cause a Watchdog Bite on Spinlock bug" depends on QCOM_WATCHDOG_V2 help On a spinlock bug, cause a watchdog bite so that we can get the precise state of the system captured at the time of spin dump. This is mutually exclusive with the below DEBUG_SPINLOCK_PANIC_ON_BUG config. config DEBUG_SPINLOCK_PANIC_ON_BUG bool "Cause a Kernel Panic on Spinlock bug" help On a spinlock bug, cause a kernel panic so that we can get the complete information about the system at the time of spin dump in the dmesg. This is mutually exclusive with the above DEBUG_SPINLOCK_BITE_ON_BUG. endchoice config DEBUG_MUTEXES bool "Mutex debugging: basic checks" Loading