From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754441AbdEQK7f (ORCPT ); Wed, 17 May 2017 06:59:35 -0400 Received: from foss.arm.com ([217.140.101.70]:45886 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754389AbdEQK7c (ORCPT ); Wed, 17 May 2017 06:59:32 -0400 Date: Wed, 17 May 2017 11:58:56 +0100 From: Mark Rutland To: Thomas Gleixner Cc: LKML , Peter Zijlstra , Ingo Molnar , Steven Rostedt , Greg Kroah-Hartman , Boris Ostrovsky , Juergen Gross Subject: Re: [patch V2 16/17] init: Introduce SYSTEM_SCHEDULING state Message-ID: <20170517105856.GG14654@leverpostej> References: <20170516184231.564888231@linutronix.de> <20170516184736.196214622@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170516184736.196214622@linutronix.de> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 16, 2017 at 08:42:47PM +0200, Thomas Gleixner wrote: > 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. > > Signed-off-by: Thomas Gleixner > Cc: Boris Ostrovsky > Cc: Juergen Gross > Cc: Greg Kroah-Hartman Makes sense to me. FWIW: Acked-by: Mark Rutland Mark. > --- > > V2: Use only one intermediate state and document that state order matters. > > drivers/xen/manage.c | 1 + > include/linux/kernel.h | 6 +++++- > 2 files changed, 6 insertions(+), 1 deletion(-) > > --- a/drivers/xen/manage.c > +++ b/drivers/xen/manage.c > @@ -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: > --- a/include/linux/kernel.h > +++ b/include/linux/kernel.h > @@ -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, > >