Re: [PATCH] sched: Use SCHED_WARN_ON() instead of WARN_ON_ONCE() with CONFIG_SCHED_DEBUG

From: Steven Rostedt
Date: Tue Feb 09 2021 - 13:58:50 EST


On Wed, 3 Feb 2021 17:50:12 +0800
Yue Hu <zbestahu@xxxxxxxxx> wrote:

> From: Yue Hu <huyue2@xxxxxxxxxx>
>
> Since SCHED_WARN_ON() is provided as a wrapper for WARN_ON_ONCE().

Reviewed-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>

Peter, care to take this?

Also, looks like we can get rid of the #ifdef CONFIG_SCHED_DEBUG in
set_task_cpu() by replacing all the WARN_ON_ONCE() with SCHED_WARN_ON().

-- Steve


>
> Signed-off-by: Yue Hu <huyue2@xxxxxxxxxx>
> ---
> kernel/sched/core.c | 2 +-
> kernel/sched/rt.c | 4 +---
> 2 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 8c54810..8f1f345 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -5347,7 +5347,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void)
> int default_wake_function(wait_queue_entry_t *curr, unsigned mode, int wake_flags,
> void *key)
> {
> - WARN_ON_ONCE(IS_ENABLED(CONFIG_SCHED_DEBUG) && wake_flags & ~WF_SYNC);
> + SCHED_WARN_ON(wake_flags & ~WF_SYNC);
> return try_to_wake_up(curr->private, mode, wake_flags);
> }
> EXPORT_SYMBOL(default_wake_function);
> diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
> index 8f720b7..a90eab3 100644
> --- a/kernel/sched/rt.c
> +++ b/kernel/sched/rt.c
> @@ -114,9 +114,7 @@ static void destroy_rt_bandwidth(struct rt_bandwidth *rt_b)
>
> static inline struct task_struct *rt_task_of(struct sched_rt_entity *rt_se)
> {
> -#ifdef CONFIG_SCHED_DEBUG
> - WARN_ON_ONCE(!rt_entity_is_task(rt_se));
> -#endif
> + SCHED_WARN_ON(!rt_entity_is_task(rt_se));
> return container_of(rt_se, struct task_struct, rt);
> }
>