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. :/
-- Martin's distress was in contrast to the bitter satisfaction of some of his fellow marines as they surveyed the scene. "The Iraqis are sick people and we are the chemotherapy," said Corporal Ryan Dupre. "I am starting to hate this country. Wait till I get hold of a friggin' Iraqi. No, I won't get hold of one. I'll just kill him." - http://www.informationclearinghouse.info/article2479.htm - 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/