Re: PCI PM: Restore standard config registers of all devices early

Linus Torvalds
2009-02-02T20:56:30Z

On Mon, 2 Feb 2009, Linus Torvalds wrote:
>
> I suspect that we could possibly make ACPI happy by actually leaving
> interrupts "enabled" in the suspend-late (and early-resume) paths, but
> with all hardware interrupts actually turned off. But that's really just a
> "let's fool people by turning off interrupts a different way" thing - it
> in no way really changes any fundamental issues.

Btw, I do think that we can make ACPI happy regardless.

We quite commonly call into ACPI during the early boot sequence, when
interrupts are disabled for all the same reasons. We don't get the
"might_sleep()" warnings, simply because we have these kinds of checks:

..
if ((!in_atomic() && !irqs_disabled()) ||
system_state != SYSTEM_RUNNING || oops_in_progress)
return;
..

ie we know that "system_state != SYSTEM_RUNNING" is a special case where
things are allowed to do things that they aren't normally allowed to do.

I suspect that late-suspend/early-resume is just exactly the same. It's a
boot, after all. Just let ACPI do its odd things, despite the fact that
interrupts are disabled. The fact that doing them while the system is
_running_ is invalid doesn't necessarily mean that it is invalid under
bootup or suspend/resume.

We might even make it possible to have timers going, if we end up saying
"we'll mask all hardware interrupts _except_ for the timer". I'm not sure
that is necessarily something we can do portably, though..

Linus