Commit a2f4b16e authored by Tejun Heo's avatar Tejun Heo

sched_ext: Build fix on !CONFIG_STACKTRACE[_SUPPORT]

scx_dump_task() uses stack_trace_save_tsk() which is only available when
CONFIG_STACKTRACE. Make CONFIG_SCHED_CLASS_EXT select CONFIG_STACKTRACE if
the support is available and skip capturing stack trace if
!CONFIG_STACKTRACE.
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Reported-by: default avatarkernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407161844.reewQQrR-lkp@intel.com/Acked-by: default avatarDavid Vernet <void@manifault.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 958b1891
...@@ -136,6 +136,7 @@ config SCHED_CORE ...@@ -136,6 +136,7 @@ config SCHED_CORE
config SCHED_CLASS_EXT config SCHED_CLASS_EXT
bool "Extensible Scheduling Class" bool "Extensible Scheduling Class"
depends on BPF_SYSCALL && BPF_JIT && DEBUG_INFO_BTF depends on BPF_SYSCALL && BPF_JIT && DEBUG_INFO_BTF
select STACKTRACE if STACKTRACE_SUPPORT
help help
This option enables a new scheduler class sched_ext (SCX), which This option enables a new scheduler class sched_ext (SCX), which
allows scheduling policies to be implemented as BPF programs to allows scheduling policies to be implemented as BPF programs to
......
...@@ -4330,7 +4330,7 @@ static void scx_dump_task(struct seq_buf *s, struct scx_dump_ctx *dctx, ...@@ -4330,7 +4330,7 @@ static void scx_dump_task(struct seq_buf *s, struct scx_dump_ctx *dctx,
static unsigned long bt[SCX_EXIT_BT_LEN]; static unsigned long bt[SCX_EXIT_BT_LEN];
char dsq_id_buf[19] = "(n/a)"; char dsq_id_buf[19] = "(n/a)";
unsigned long ops_state = atomic_long_read(&p->scx.ops_state); unsigned long ops_state = atomic_long_read(&p->scx.ops_state);
unsigned int bt_len; unsigned int bt_len = 0;
if (p->scx.dsq) if (p->scx.dsq)
scnprintf(dsq_id_buf, sizeof(dsq_id_buf), "0x%llx", scnprintf(dsq_id_buf, sizeof(dsq_id_buf), "0x%llx",
...@@ -4355,7 +4355,9 @@ static void scx_dump_task(struct seq_buf *s, struct scx_dump_ctx *dctx, ...@@ -4355,7 +4355,9 @@ static void scx_dump_task(struct seq_buf *s, struct scx_dump_ctx *dctx,
ops_dump_exit(); ops_dump_exit();
} }
#ifdef CONFIG_STACKTRACE
bt_len = stack_trace_save_tsk(p, bt, SCX_EXIT_BT_LEN, 1); bt_len = stack_trace_save_tsk(p, bt, SCX_EXIT_BT_LEN, 1);
#endif
if (bt_len) { if (bt_len) {
dump_newline(s); dump_newline(s);
dump_stack_trace(s, " ", bt, bt_len); dump_stack_trace(s, " ", bt, bt_len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment