Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1641179

[patch 17/18] sched: Enable might_sleep() checks early

From Thomas Gleixner <tglx@linutronix.de>
Newsgroups linux.kernel
Subject [patch 17/18] sched: Enable might_sleep() checks early
Date 2017-05-14 20:40 +0200
Message-ID <tH6AW-56V-11@gated-at.bofh.it> (permalink)
References <tH6AV-56V-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


might_sleep() checks are enabled after the boot process is done. That hides
bugs in the smp bringup and driver initialization code.

Enable it right when the scheduler starts working, i.e. when init task and
kthreadd have been created and right before the idle task enables
preemption.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 init/main.c         |    2 ++
 kernel/sched/core.c |    4 +++-
 2 files changed, 5 insertions(+), 1 deletion(-)

--- a/init/main.c
+++ b/init/main.c
@@ -410,6 +410,8 @@ static noinline void __ref rest_init(voi
 	 * at least once to get things moving:
 	 */
 	init_idle_bootup_task(current);
+	/* Enable might_sleep() checks */
+	system_state = SYSTEM_BOOTING_UP;
 	schedule_preempt_disabled();
 	/* Call into cpu_idle with preempt disabled */
 	cpu_startup_entry(CPUHP_ONLINE);
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6226,8 +6226,10 @@ void ___might_sleep(const char *file, in
 
 	if ((preempt_count_equals(preempt_offset) && !irqs_disabled() &&
 	     !is_idle_task(current)) ||
-	    system_state != SYSTEM_RUNNING || oops_in_progress)
+	    system_state == SYSTEM_BOOTING || system_state > SYSTEM_RUNNING ||
+	    oops_in_progress)
 		return;
+
 	if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
 		return;
 	prev_jiffy = jiffies;

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[patch 17/18] sched: Enable might_sleep() checks early Thomas Gleixner <tglx@linutronix.de> - 2017-05-14 20:40 +0200
  Re: [patch 17/18] sched: Enable might_sleep() checks early Steven Rostedt <rostedt@goodmis.org> - 2017-05-15 17:20 +0200
    Re: [patch 17/18] sched: Enable might_sleep() checks early Thomas Gleixner <tglx@linutronix.de> - 2017-05-15 21:20 +0200
      Re: [patch 17/18] sched: Enable might_sleep() checks early Peter Zijlstra <peterz@infradead.org> - 2017-05-16 09:20 +0200
        Re: [patch 17/18] sched: Enable might_sleep() checks early Thomas Gleixner <tglx@linutronix.de> - 2017-05-16 09:40 +0200
          Re: [patch 17/18] sched: Enable might_sleep() checks early Steven Rostedt <rostedt@goodmis.org> - 2017-05-16 15:20 +0200

csiph-web