2021-02-03 09:54:58

by Yue Hu

[permalink] [raw]
Subject: [PATCH] sched: Use SCHED_WARN_ON() instead of WARN_ON_ONCE() with CONFIG_SCHED_DEBUG

From: Yue Hu <[email protected]>

Since SCHED_WARN_ON() is provided as a wrapper for WARN_ON_ONCE().

Signed-off-by: Yue Hu <[email protected]>
---
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);
}

--
1.9.1


2021-02-10 07:50:15

by Steven Rostedt

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

On Wed, 3 Feb 2021 17:50:12 +0800
Yue Hu <[email protected]> wrote:

> From: Yue Hu <[email protected]>
>
> Since SCHED_WARN_ON() is provided as a wrapper for WARN_ON_ONCE().

Reviewed-by: Steven Rostedt (VMware) <[email protected]>

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 <[email protected]>
> ---
> 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);
> }
>