1*ee0ff669SCheng-Yang Chou# sched-ext mandatory options 2*ee0ff669SCheng-Yang Chou# 3*ee0ff669SCheng-Yang ChouCONFIG_BPF=y 4*ee0ff669SCheng-Yang ChouCONFIG_BPF_SYSCALL=y 5*ee0ff669SCheng-Yang ChouCONFIG_BPF_JIT=y 6*ee0ff669SCheng-Yang ChouCONFIG_DEBUG_INFO_BTF=y 7*ee0ff669SCheng-Yang ChouCONFIG_BPF_JIT_ALWAYS_ON=y 8*ee0ff669SCheng-Yang ChouCONFIG_BPF_JIT_DEFAULT_ON=y 9*ee0ff669SCheng-Yang ChouCONFIG_SCHED_CLASS_EXT=y 10*ee0ff669SCheng-Yang Chou 11*ee0ff669SCheng-Yang Chou# Required by some rust schedulers (e.g. scx_p2dq) 12*ee0ff669SCheng-Yang Chou# 13*ee0ff669SCheng-Yang ChouCONFIG_KALLSYMS_ALL=y 14*ee0ff669SCheng-Yang Chou 15*ee0ff669SCheng-Yang Chou# Required on arm64 16*ee0ff669SCheng-Yang Chou# 17*ee0ff669SCheng-Yang Chou# CONFIG_DEBUG_INFO_REDUCED is not set 18*ee0ff669SCheng-Yang Chou 19*ee0ff669SCheng-Yang Chou# LAVD tracks futex to give an additional time slice for futex holder 20*ee0ff669SCheng-Yang Chou# (i.e., avoiding lock holder preemption) for better system-wide progress. 21*ee0ff669SCheng-Yang Chou# LAVD first tries to use ftrace to trace futex function calls. 22*ee0ff669SCheng-Yang Chou# If that is not available, it tries to use a tracepoint. 23*ee0ff669SCheng-Yang ChouCONFIG_FUNCTION_TRACER=y 24*ee0ff669SCheng-Yang Chou 25*ee0ff669SCheng-Yang Chou# Enable scheduling debugging 26*ee0ff669SCheng-Yang Chou# 27*ee0ff669SCheng-Yang ChouCONFIG_SCHED_DEBUG=y 28*ee0ff669SCheng-Yang Chou 29*ee0ff669SCheng-Yang Chou# Enable extra scheduling features (for a better code coverage while testing 30*ee0ff669SCheng-Yang Chou# the schedulers) 31*ee0ff669SCheng-Yang Chou# 32*ee0ff669SCheng-Yang ChouCONFIG_SCHED_AUTOGROUP=y 33*ee0ff669SCheng-Yang ChouCONFIG_SCHED_CORE=y 34*ee0ff669SCheng-Yang ChouCONFIG_SCHED_MC=y 35*ee0ff669SCheng-Yang Chou 36*ee0ff669SCheng-Yang Chou# Enable fully preemptible kernel for a better test coverage of the schedulers 37*ee0ff669SCheng-Yang Chou# 38*ee0ff669SCheng-Yang Chou# CONFIG_PREEMPT_NONE is not set 39*ee0ff669SCheng-Yang Chou# CONFIG_PREEMPT_VOLUNTARY is not set 40*ee0ff669SCheng-Yang ChouCONFIG_PREEMPT=y 41*ee0ff669SCheng-Yang ChouCONFIG_PREEMPT_DYNAMIC=y 42*ee0ff669SCheng-Yang Chou 43*ee0ff669SCheng-Yang Chou# Additional debugging information (useful to catch potential locking issues) 44*ee0ff669SCheng-Yang ChouCONFIG_DEBUG_LOCKDEP=y 45*ee0ff669SCheng-Yang ChouCONFIG_DEBUG_ATOMIC_SLEEP=y 46*ee0ff669SCheng-Yang ChouCONFIG_PROVE_LOCKING=y 47*ee0ff669SCheng-Yang Chou 48*ee0ff669SCheng-Yang Chou# Bpftrace headers (for additional debug info) 49*ee0ff669SCheng-Yang ChouCONFIG_BPF_EVENTS=y 50*ee0ff669SCheng-Yang ChouCONFIG_FTRACE_SYSCALLS=y 51*ee0ff669SCheng-Yang ChouCONFIG_DYNAMIC_FTRACE=y 52*ee0ff669SCheng-Yang ChouCONFIG_KPROBES=y 53*ee0ff669SCheng-Yang ChouCONFIG_KPROBE_EVENTS=y 54*ee0ff669SCheng-Yang ChouCONFIG_UPROBES=y 55*ee0ff669SCheng-Yang ChouCONFIG_UPROBE_EVENTS=y 56*ee0ff669SCheng-Yang ChouCONFIG_DEBUG_FS=y 57*ee0ff669SCheng-Yang Chou 58*ee0ff669SCheng-Yang Chou# Enable access to kernel configuration and headers at runtime 59*ee0ff669SCheng-Yang ChouCONFIG_IKHEADERS=y 60*ee0ff669SCheng-Yang ChouCONFIG_IKCONFIG_PROC=y 61*ee0ff669SCheng-Yang ChouCONFIG_IKCONFIG=y 62