Re: can't get linux to perform a bios suspend (was: Re: [FIX, please test] Re: 2.5.70-bk16 - nfs interferes with s4bios suspend)

Pavel Machek (pavel@suse.cz)
Sun, 22 Jun 2003 17:15:49 +0200


Hi!

> > > Ponderance: Why did it do a full s/w suspend when I asked for the bios
> > > to handle it? I have s4bios showing up in /proc/acpi/sleep and the bios
> > > is set to suspend to disk. I've even got an a0 partition fully formatted
> > > and it still ignored it all.
> >
> > I don't know, try looking at drivers/acpi/sleep/main.c, and if
> > neccessary insert some printk()s to see what's going on.
>
> I've had a wee look into it and if I remove software suspend from the
> compile, I get no sleep states at all. period. /proc/acpi/sleep does
> not exist and nothing is reported in dmesg.
>
> Now I had a look in drivers/acpi/sleep and in the proc.c file I found
> this bit of code:
>
> ...
> state = simple_strtoul(state_string, NULL, 0);
>
> if (state < 1 || state > 4)
> goto Done;
>
> if (!sleep_states[state])
> goto Done;
>
> #ifdef CONFIG_SOFTWARE_SUSPEND
> if (state == 4) {
> software_suspend();
> goto Done;
> }
> #endif
> status = acpi_suspend(state);
> ...
>
> To me this appears to indicate that it's treating a request for a
> sleep state of 4 (s/w suspend) and 4b (bios suspend) as the same thing
> as simple_strtoul will stop at the b and return 4 and there are no
> further checks being done. In a small experiment I added a test of
> state_string[1] == 'b', recompiled and tried it again. It did not go
> into s/w suspend as expected but it failed to do a suspend alltogether.
>
> At this point I'm slightly lost. To me it's obvious that there's
> something whacky with acpi_suspend() or something it calls but I'm
> not sure what. :/

If you have 2.4.X, get 2.5.72. That should have
do_suspend_lowlevel_s4bios in wakeup.S. Look around and fix it so that
it is called when user does echo 4b. It may well be broken.

Pavel

-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/