On Wed, 5 Sep 2018, Mukesh Ojha wrote: > On 9/5/2018 5:03 PM, Thomas Gleixner wrote: > > > + st->rollback = true; > > > + st->target = prev_state; > > > + st->bringup = !st->bringup; > > No, this is just papering over the actual problem. > > > > The state inconsistency happens in take_cpu_down() when it returns with a > > failure from __cpu_disable() because that returns with state = TEARDOWN_CPU > > and st->state is then incremented in undo_cpu_down(). > > > > That's the real issue and we need to analyze the whole cpu_down rollback > > logic first. > > Could this be done like below ? IOW, more papering over the real root cause. > diff --git a/kernel/cpu.c b/kernel/cpu.c > index aa7fe85..47bce90 100644 > --- a/kernel/cpu.c > +++ b/kernel/cpu.c > @@ -802,17 +802,18 @@ static int take_cpu_down(void *_param) > int err, cpu = smp_processor_id(); > int ret; ^^^^^^^ Please fix your mailer or your editor. That patch is whitespace damaged. Thanks, tglx