On Sun, May 14, 2017 at 08:27:24PM +0200, Thomas Gleixner wrote: > To enable smp_processor_id() and might_sleep() debug checks earlier, it's > required to add system states between SYSTEM_BOOTING and SYSTEM_RUNNING. > > get_nid_for_pfn() checks for system_state == BOOTING to decide whether to > use early_pfn_to_nid() when CONFIG_DEFERRED_STRUCT_PAGE_INIT=y. > > That check is dubious, because the switch to state RUNNING happes way after > page_alloc_init_late() has been invoked. > > Change the check to less than RUNNING state so it covers the new > intermediate states as well. > > Signed-off-by: Thomas Gleixner <t...@linutronix.de> > Cc: Mel Gorman <mgor...@techsingularity.net> > Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> > --- > drivers/base/node.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > --- a/drivers/base/node.c > +++ b/drivers/base/node.c > @@ -377,7 +377,7 @@ static int __ref get_nid_for_pfn(unsigne > if (!pfn_valid_within(pfn)) > return -1; > #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT > - if (system_state == SYSTEM_BOOTING) > + if (system_state < SYSTEM_RUNNING)
Someone better comment the place where these are defined that they need to be in a specific order, I don't think they have been tested this way in the past... With that change: Acked-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> thanks, greg k-h