Re: [3/5] 2.6.21-rc4: known regressions (v2)

Rafael J. Wysocki
2007-03-25T19:11:11Z

On Sunday, 25 March 2007 14:56, Eric W. Biederman wrote:
> "Rafael J. Wysocki" <rjw@sisk.pl> writes:
>
> > Yes, in kernel/power/disk.c:power_down() .
> >
> > Please comment out the disable_nonboot_cpus() in there and retest (but please
> > test the latest Linus' tree).
>
> <rant>
>
> Why do we even need a disable_nonboot_cpus in that path? machine_shutdown
> on i386 and x86_64 should take care of that. Further the code that computes
> the boot cpu is bogus (not all architectures require cpu == 0 to be
> the boot cpu), and disabling non boot cpus appears to be a strong
> x86ism, in the first place.

Yes.

> If the only reason for disable_nonboot_cpus there is to avoid the
> WARN_ON in init_low_mappings() we should seriously consider killing
> it.

We have considered it, but no one was sure that it was a good idea.

> If we can wait for 2.6.22 the relocatable x86_64 patchset that
> Andi has queued, has changes that kill the init_low_mapping() hack.

I think we should kill the WARN_ON() right now, perhaps replacing it with
a FIXME comment.

> I'm not very comfortable with calling cpu_down in a common code path
> right now either. I'm fairly certain we still don't have that
> correct. So if we confine the mess that is cpu_down to #if
> defined(CPU_HOTPLUG) && defined(CONFIG_EXPERIMENTAL) I don't care.
> If we start using it everywhere I'm very nervous.
> migration when bringing a cpu down is strongly racy, and I don't think
> we actually put cpus to sleep properly either.

I'm interested in all of the details, please. I seriously consider dropping
cpu_up()/cpu_down() from the suspend code paths.

Greetings,
Rafael