init: Introduce SYSTEM_SCHEDULING state
might_sleep() debugging and smp_processor_id() debugging should be active right after the scheduler starts working. The init task can invoke smp_processor_id() from preemptible context as it is pinned on the boot cpu until sched_smp_init() removes the pinning and lets it schedule on all non isolated cpus. Add a new state which allows to enable those checks earlier and add it to the xen do_poweroff() function. No functional change. Tested-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Acked-by: Mark Rutland <mark.rutland@arm.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Juergen Gross <jgross@suse.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Link: http://lkml.kernel.org/r/20170516184736.196214622@linutronix.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
		
							parent
							
								
									c6202adf3a
								
							
						
					
					
						commit
						69a78ff226
					
				| @ -190,6 +190,7 @@ static void do_poweroff(void) | ||||
| { | ||||
| 	switch (system_state) { | ||||
| 	case SYSTEM_BOOTING: | ||||
| 	case SYSTEM_SCHEDULING: | ||||
| 		orderly_poweroff(true); | ||||
| 		break; | ||||
| 	case SYSTEM_RUNNING: | ||||
|  | ||||
| @ -490,9 +490,13 @@ extern int root_mountflags; | ||||
| 
 | ||||
| extern bool early_boot_irqs_disabled; | ||||
| 
 | ||||
| /* Values used for system_state */ | ||||
| /*
 | ||||
|  * Values used for system_state. Ordering of the states must not be changed | ||||
|  * as code checks for <, <=, >, >= STATE. | ||||
|  */ | ||||
| extern enum system_states { | ||||
| 	SYSTEM_BOOTING, | ||||
| 	SYSTEM_SCHEDULING, | ||||
| 	SYSTEM_RUNNING, | ||||
| 	SYSTEM_HALT, | ||||
| 	SYSTEM_POWER_OFF, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user