Re: FYI: my current bigdiff

From: Stefan Seyfried
Date: Sat Sep 11 2004 - 11:48:29 EST




Bjorn Helgaas wrote:

> I'm completely ignorant about how swsusp works; I guess this is my
> chance to learn. "pci=routeirq" just causes us to do all the PCI
> ACPI IRQ routing at boot-time, before the drivers start up. This
> happens in pci_acpi_init(), which is a subsys_initcall that is run
> at initial boot-time, but (I assume) not during a resume.

a resume is basically a fresh boot, including hardware initialization by
the compiled-in drivers (but not modules) but before starting init /
entering initrd, the old system state is read from swap, copied back and
somehow we continue where we left off at suspend time. Now the resume
methods of all device drivers are called, processes are restarted and we
are back in the game. (At least this is how i understood it all :-)

I can easily imagine that a driver with a slightly broken suspend /
resume method may fail without pci=routeirq if it does not do the irq
routing correctly during resume. It may work with pci=routeirq since
then everything is prepared for it before the resume actually happens.

Kevin may get away with unloading the usb host controller and the
prism54 drivers before suspend and reloading them after resume.

Stefan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/