On Wed, Jan 20, 2021 at 02:11:14PM +0100, Peter Zijlstra wrote: > On Mon, Jan 11, 2021 at 05:10:46PM +0000, [email protected] wrote: > > @@ -157,26 +162,24 @@ static int cpuhp_invoke_callback(unsigned int cpu, > > enum cpuhp_state state, > > > > if (st->fail == state) { > > st->fail = CPUHP_INVALID; > > - > > - if (!(bringup ? step->startup.single : step->teardown.single)) > > - return 0; > > - > > return -EAGAIN; > > } > > > > + if (cpuhp_step_empty(bringup, step)) { > > + WARN_ON_ONCE(1); > > + return 0; > > + } > > This changes the behaviour of fail.. might be best to refactor without > changing behaviour. >
Aah, the trick is in cpuhp_next_state() skipping empty states, so we'll never get there.

