Hi, On Tuesday 25 April 2006 22:28, Nigel Cunningham wrote: > On Wednesday 26 April 2006 04:56, Rafael J. Wysocki wrote: > > You're saying that (9) is wrong, so could you please suggest what to do > > instead of it? > > 'scuse me for butting in, but here's my suggested modified version: > > > Well, suppose we have a modular driver that's not loaded before resume. > > Then it goes like that (approximately): > > (1) We activate swsusp which calls .suspend() for all devices including our > > driver (this is a real suspend). > > (2) swsusp snapshots the system and creates the image. > > (3) swsusp calls .resume() for all devices in order to be able to save the > > image (.resume() for our driver is also called which is OK). > > (4) swsusp turns off the system. > > (5) (some time later) We start a new kernel and tell it to resume. > > (6) It activates swsusp which reads the image. > > (7) (without your change) swsusp calls .suspend() for all device drivers > > that are present at that time, but our driver is not there, so its > > .suspend() _won't_ be called. [Of course with your change .suspend() won't > > be called for any driver.] > > We also make a list that is safely available after the atomic restore of > drivers that have had .suspend methods called. Do you mean we place the list in a __nosave area? Rafael