Re: [patch 3/3] clockevents: Fix resume logic - updated version

Andrew Morton
2007-05-09T07:11:28Z

On Tue, 8 May 2007 22:59:20 -0700 Andrew Morton <akpm@linux-foundation.org> wrote:

> On Sun, 06 May 2007 17:03:03 +0200 Thomas Gleixner <tglx@linutronix.de> wrote:
>
> > Andrew,
> >
> > On Sat, 2007-05-05 at 13:51 +0200, Ingo Molnar wrote:
> > > * Andrew Morton <akpm@linux-foundation.org> wrote:
> > >
> > > > > Fixup the existing users.
> > > >
> > > > This one makes the Vaio-of-fun hang during suspend to disk. It gets
> > > > up to "swsusp: critical section/: done (%d pages copied)" then it
> > > > freezes.
> > >
> > > after trying to reproduce it on 2 boxes without success it did trigger
> > > some sw-suspend weirdness on a third box :) We are debugging it now.
> >
> > find an updated patch below. It fixes the problem on Ingo's
> > VAIO-of-fun-emulator and I got confirmation from several other affected
> > users, that the patch series is still solving their problems.
> >
>
> The machine is still hanging with this patch applied.
>
> suspend-to-disk gets up to "swsusp: critical section: done (NNN pages copied)"
>
> No netconsole, no printk-timestamping.
>
> ho hum, I guess I get to debug this.

It got ugly.

We finish swsusp_save() and a few other functions then we go

hibernate
->platform_finish
->acpi_hibernation_finish
->acpi_leave_sleep_state
->acpi_evaluate_object

and there it dies, in this call:

status = acpi_evaluate_object(NULL, METHOD_NAME__WAK, &arg_list, NULL);

I wonder how your patch caused that?

<debugs further>

OK, it gets to the last statement in acpi_evaluate_object():

return_ACPI_STATUS(status);

but doesn't hit the printk on return to the caller,
acpi_leave_sleep_state().

A working theory would be that something we did trashed the stack in
acpi_evaluate_object().

<switches from 8k stacks to 4k. No change>

foo. I'm not sure what to do now.