mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
The hung_task_panic sysctl is currently a blunt instrument: it's all or nothing. Panicking on a single hung task can be an overreaction to a transient glitch. A more reliable indicator of a systemic problem is when multiple tasks hang simultaneously. Extend hung_task_panic to accept an integer threshold, allowing the kernel to panic only when N hung tasks are detected in a single scan. This provides finer control to distinguish between isolated incidents and system-wide failures. The accepted values are: - 0: Don't panic (unchanged) - 1: Panic on the first hung task (unchanged) - N > 1: Panic after N hung tasks are detected in a single scan The original behavior is preserved for values 0 and 1, maintaining full backward compatibility. [lance.yang@linux.dev: new changelog] Link: https://lkml.kernel.org/r/20251015063615.2632-1-lirongqing@baidu.com Signed-off-by: Li RongQing <lirongqing@baidu.com> Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Reviewed-by: Lance Yang <lance.yang@linux.dev> Tested-by: Lance Yang <lance.yang@linux.dev> Acked-by: Andrew Jeffery <andrew@codeconstruct.com.au> [aspeed_g5_defconfig] Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: David Hildenbrand <david@redhat.com> Cc: Florian Wesphal <fw@strlen.de> Cc: Jakub Kacinski <kuba@kernel.org> Cc: Jason A. Donenfeld <jason@zx2c4.com> Cc: Joel Granados <joel.granados@kernel.org> Cc: Joel Stanley <joel@jms.id.au> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Kees Cook <kees@kernel.org> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: "Paul E . McKenney" <paulmck@kernel.org> Cc: Pawan Gupta <pawan.kumar.gupta@linux.intel.com> Cc: Petr Mladek <pmladek@suse.com> Cc: Phil Auld <pauld@redhat.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Russell King <linux@armlinux.org.uk> Cc: Shuah Khan <shuah@kernel.org> Cc: Simon Horman <horms@kernel.org> Cc: Stanislav Fomichev <sdf@fomichev.me> Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
120 lines
2.7 KiB
Plaintext
120 lines
2.7 KiB
Plaintext
# Help: Debugging for CI systems and finding regressions
|
|
#
|
|
# The config is based on running daily CI for enterprise Linux distros to
|
|
# seek regressions on linux-next builds on different bare-metal and virtual
|
|
# platforms. It can be used for example,
|
|
#
|
|
# $ make ARCH=arm64 defconfig debug.config
|
|
#
|
|
# Keep alphabetically sorted inside each section.
|
|
#
|
|
# printk and dmesg options
|
|
#
|
|
CONFIG_DEBUG_BUGVERBOSE=y
|
|
CONFIG_DYNAMIC_DEBUG=y
|
|
CONFIG_PRINTK_CALLER=y
|
|
CONFIG_PRINTK_TIME=y
|
|
CONFIG_SYMBOLIC_ERRNAME=y
|
|
#
|
|
# Compile-time checks and compiler options
|
|
#
|
|
CONFIG_DEBUG_INFO=y
|
|
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
|
|
CONFIG_DEBUG_SECTION_MISMATCH=y
|
|
CONFIG_FRAME_WARN=2048
|
|
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
|
|
#
|
|
# Generic Kernel Debugging Instruments
|
|
#
|
|
# CONFIG_UBSAN_ALIGNMENT is not set
|
|
# CONFIG_UBSAN_DIV_ZERO is not set
|
|
# CONFIG_UBSAN_TRAP is not set
|
|
# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
|
|
CONFIG_DEBUG_FS=y
|
|
CONFIG_DEBUG_FS_ALLOW_ALL=y
|
|
CONFIG_DEBUG_IRQFLAGS=y
|
|
CONFIG_UBSAN=y
|
|
CONFIG_UBSAN_BOOL=y
|
|
CONFIG_UBSAN_BOUNDS=y
|
|
CONFIG_UBSAN_ENUM=y
|
|
CONFIG_UBSAN_SHIFT=y
|
|
CONFIG_UBSAN_UNREACHABLE=y
|
|
#
|
|
# Networking Debugging
|
|
#
|
|
CONFIG_NET_DEV_REFCNT_TRACKER=y
|
|
CONFIG_NET_NS_REFCNT_TRACKER=y
|
|
CONFIG_DEBUG_NET=y
|
|
#
|
|
# Memory Debugging
|
|
#
|
|
# CONFIG_DEBUG_PAGEALLOC is not set
|
|
# CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF is not set
|
|
# CONFIG_DEBUG_RODATA_TEST is not set
|
|
# CONFIG_DEBUG_WX is not set
|
|
# CONFIG_KFENCE is not set
|
|
# CONFIG_PAGE_POISONING is not set
|
|
# CONFIG_SLUB_STATS is not set
|
|
CONFIG_PAGE_EXTENSION=y
|
|
CONFIG_PAGE_OWNER=y
|
|
CONFIG_DEBUG_KMEMLEAK=y
|
|
CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN=y
|
|
CONFIG_DEBUG_OBJECTS=y
|
|
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
|
|
CONFIG_DEBUG_OBJECTS_FREE=y
|
|
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
|
|
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
|
|
CONFIG_DEBUG_OBJECTS_TIMERS=y
|
|
CONFIG_DEBUG_OBJECTS_WORK=y
|
|
CONFIG_DEBUG_PER_CPU_MAPS=y
|
|
CONFIG_DEBUG_STACK_USAGE=y
|
|
CONFIG_DEBUG_VIRTUAL=y
|
|
CONFIG_DEBUG_VM=y
|
|
CONFIG_DEBUG_VM_PGFLAGS=y
|
|
CONFIG_DEBUG_VM_RB=y
|
|
CONFIG_DEBUG_VM_VMACACHE=y
|
|
CONFIG_KASAN=y
|
|
CONFIG_KASAN_GENERIC=y
|
|
CONFIG_KASAN_INLINE=y
|
|
CONFIG_KASAN_VMALLOC=y
|
|
CONFIG_PTDUMP_DEBUGFS=y
|
|
CONFIG_SCHED_STACK_END_CHECK=y
|
|
CONFIG_SLUB_DEBUG_ON=y
|
|
#
|
|
# Debug Oops, Lockups and Hangs
|
|
#
|
|
CONFIG_BOOTPARAM_HUNG_TASK_PANIC=0
|
|
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
|
CONFIG_DEBUG_ATOMIC_SLEEP=y
|
|
CONFIG_DETECT_HUNG_TASK=y
|
|
CONFIG_PANIC_ON_OOPS=y
|
|
CONFIG_PANIC_TIMEOUT=0
|
|
CONFIG_SOFTLOCKUP_DETECTOR=y
|
|
#
|
|
# Lock Debugging (spinlocks, mutexes, etc...)
|
|
#
|
|
# CONFIG_PROVE_RAW_LOCK_NESTING is not set
|
|
CONFIG_PROVE_LOCKING=y
|
|
#
|
|
# Debug kernel data structures
|
|
#
|
|
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
|
#
|
|
# RCU Debugging
|
|
#
|
|
CONFIG_RCU_EXPERT=y
|
|
CONFIG_PROVE_RCU=y
|
|
CONFIG_PROVE_RCU_LIST=y
|
|
#
|
|
# Tracers
|
|
#
|
|
CONFIG_BRANCH_PROFILE_NONE=y
|
|
CONFIG_DYNAMIC_FTRACE=y
|
|
CONFIG_FTRACE=y
|
|
CONFIG_FUNCTION_TRACER=y
|
|
#
|
|
# Preemption
|
|
#
|
|
CONFIG_DEBUG_PREEMPT=y
|
|
CONFIG_PREEMPT=y
|