On Tue, Jul 17, 2018 at 04:21:57PM +0200, Peter Zijlstra wrote: > On Thu, Jul 12, 2018 at 01:29:40PM -0400, Johannes Weiner wrote: > > diff --git a/include/linux/sched/stat.h b/include/linux/sched/stat.h > > index 04f1321d14c4..ac39435d1521 100644 > > --- a/include/linux/sched/stat.h > > +++ b/include/linux/sched/stat.h > > @@ -28,10 +28,14 @@ static inline int sched_info_on(void) > > return 1; > > #elif defined(CONFIG_TASK_DELAY_ACCT) > > extern int delayacct_on; > > + if (delayacct_on) > > + return 1; > > +#elif defined(CONFIG_PSI) > > + extern int psi_disabled; > > + if (!psi_disabled) > > + return 1; > > #endif > > + return 0; > > } > > Doesn't that want to be something like: > > static inline bool sched_info_on(void) > { > #ifdef CONFIG_SCHEDSTAT > return true; > #else /* !SCHEDSTAT */ > #ifdef CONFIG_TASK_DELAY_ACCT > extern int delayacct_on; > if (delayacct_on) > return true; > #endif /* DELAYACCT */ > #ifdef CONFIG_PSI > extern int psi_disabled; > if (!psi_disabled) > return true; > #endif > return false; > #endif /* !SCHEDSTATE */ > } > > Such that if you build a TASK_DELAY_ACCT && PSI kernel, and boot with > nodelayacct, you still get sched_info_on(). You're right, that was a brainfart on my end. But as you point out in the other email, the SCHED_INFO dependency is artificial, so I'll rework this entire part.