Re: [linux-pm] [PATCH] Remove process freezer from suspend to RAM pathway

Rafael J. Wysocki
2007-07-05T13:40:04Z

On Thursday, 5 July 2007 14:50, Johannes Berg wrote:
> On Thu, 2007-07-05 at 14:51 +0200, Rafael J. Wysocki wrote:
>
> > > > Remember what I wrote a few minutes ago about khubd and ksuspend_usbd
> > > > wanting to resume devices during a system suspend transition? This is
> > > > exactly what happens when those threads aren't frozen.
> > >
> > > So, I wonder why I don't see that error on my powerbook?
> >
> > Because you have only one CPU running while your suspend code is being
> > executed?
>
> If that's really all the problem then what's wrong with just unplugging
> the other CPUs earlier? Sure, that makes suspend no longer perfectly
> transparent since userspace might notice the CPUs being unplugged, but
> it has to cope with that anyway since a user can do it manually...

This is a bit complicated, but I'll try to explain.

We used to disable the nonboot CPUs before suspending devices and enable
them after resuming devices, but that turned out to lead to resume problems on
some ACPI systems. Namely, it turned out that this code ordering was not in
line with the ACPI spec that assumed specific ordering of events during a
suspend. For this reason, we changed the code ordering and now it is more or
less in agreement with ACPI (for the first time, AFAICS). I don't think that
anyone would like to revert that change right now.

Moreover, in the meantime we learned that the CPU hotplug code that we use
for disabling the nonboot CPUs, is generally problematic on x86 and only works
for us because we have the majority of interrupt sources disabled when it's
invoked.

Greetings,
Rafael

--
"Premature optimization is the root of all evil." - Donald Knuth