| # 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_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=0 | |
| 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 |