Unlike most of the other architectures, PowerPC and ARM64 have __switch_to() as a C function which remains on the stack. Their respective __get_wchan() skips one stack frame unconditionally, without testing is_sched_functions(). Mark them __sched such that we can forgo that special case. Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> --- arch/arm64/kernel/process.c | 4 ++-- arch/powerpc/kernel/process.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -490,8 +490,8 @@ void update_sctlr_el1(u64 sctlr) /* * Thread switching. */ -__notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev, - struct task_struct *next) +__notrace_funcgraph __sched +struct task_struct *__switch_to(struct task_struct *prev, struct task_struct *next) { struct task_struct *last; --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1201,8 +1201,8 @@ static inline void restore_sprs(struct t } -struct task_struct *__switch_to(struct task_struct *prev, - struct task_struct *new) +__sched struct task_struct *__switch_to(struct task_struct *prev, + struct task_struct *new) { struct thread_struct *new_thread, *old_thread; struct task_struct *last;