mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
exit: Add PANIC_ON_RECURSIVE_FAULT Kconfig option
If a recursive fault is detected during do_exit(), tasks are left to sit and wait in an un-interruptible sleep until the system reboots (typically manually). Add Kconfig option to change this behaviour and force a panic. This is particularly important if a critical system task encounters a recursive fault (ex. a kworker). Otherwise, the system may be unusable, but since the scheduler is still running system watchdogs may continue to be pet. Change-Id: Ifc26fc79d6066f05a3b2c4d27f78bf4f8d2bd640 Signed-off-by: Matt Wagantall <mattw@codeaurora.org>
This commit is contained in:
parent
7cef4908ce
commit
6499baf92d
@ -797,7 +797,11 @@ void __noreturn do_exit(long code)
|
|||||||
* leave this task alone and wait for reboot.
|
* leave this task alone and wait for reboot.
|
||||||
*/
|
*/
|
||||||
if (unlikely(tsk->flags & PF_EXITING)) {
|
if (unlikely(tsk->flags & PF_EXITING)) {
|
||||||
|
#ifdef CONFIG_PANIC_ON_RECURSIVE_FAULT
|
||||||
|
panic("Recursive fault!\n");
|
||||||
|
#else
|
||||||
pr_alert("Fixing recursive fault but reboot is needed!\n");
|
pr_alert("Fixing recursive fault but reboot is needed!\n");
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* We can do this unlocked here. The futex code uses
|
* We can do this unlocked here. The futex code uses
|
||||||
* this flag just to verify whether the pi state
|
* this flag just to verify whether the pi state
|
||||||
|
@ -879,6 +879,17 @@ config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
|
|||||||
default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
|
default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
|
||||||
default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
|
default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
|
||||||
|
|
||||||
|
config PANIC_ON_RECURSIVE_FAULT
|
||||||
|
bool "Panic on recursive faults during task exit"
|
||||||
|
help
|
||||||
|
Panic upon the detection of a recursive fault during task exit,
|
||||||
|
rather than putting the task into an uninterruptible sleep.
|
||||||
|
This is particularly useful for debugging system hangs in
|
||||||
|
scenarios where the task experiencing the fault is critical
|
||||||
|
for system operation, rendering the system inoperable.
|
||||||
|
|
||||||
|
Say N if unsure.
|
||||||
|
|
||||||
config DETECT_HUNG_TASK
|
config DETECT_HUNG_TASK
|
||||||
bool "Detect Hung Tasks"
|
bool "Detect Hung Tasks"
|
||||||
depends on DEBUG_KERNEL
|
depends on DEBUG_KERNEL
|
||||||
|
Loading…
x
Reference in New Issue
Block a user