On Saturday, 5 May 2007 23:44, Alan Stern wrote: > On Sat, 5 May 2007, Rafael J. Wysocki wrote: > > > > In addition we may want to have early/late variations on these (for use > > > after interrupts have been disabled), which would lead to: > > > > > > pre_snapshot() > > > pre_snapshot_late() > > > post_snapshot_early() > > > post_snapshot() > > > pre_restore() > > > pre_restore_late() > > > post_restore_early() > > > post_restore() > > > > > > Yes, it's a large list... But it seems to be necessary for providing all > > > the information drivers will need. > > > > I think we may need yet another callback, executed before pre_snapshot() > > and before we shrink memory during the hibernation, to be used by drivers > > that need a lot of additional memory in pre_snapshot(). > > pre_snapshot_early() OK So, I think the hibernation code ordering should be like this (let's forget about ACPI for now): 1) tasks are frozen 2) pre_snapshot_early() 3) memory is freed for the snapshot image 4) pre_snapshod() 5) nonboot CPUs are offlined 6) IRQs are disabled 7) pre_snapshot_late() 8) sysdev_pre_snapshot() 9) snapshot image is created 10) sysdev_post_snapshot() 11) post_snapshot_early() 12) IRQs are enabled 13) nonboot CPUs are enabled 14) post_snapshot() 15) snapshot image is saved 16) device_shutdown() 17) system is powered off Apart from this, we may need notifiers for subsystems that should do something before the freezing and after the thawing of tasks (like FUSE etc.). Also, if there's an error, we have to be able to thaw tasks after post_snapshot() and continue running. The restore code, IMO, should be like this (again, let's ignore ACPI for now): 1) boot kernel is started, initrd is loaded etc. 2) tasks are frozen 3) snapshot image is loaded 4) pre_restore() 5) nonboot CPUs are offlined 6) IRQs are disabled 7) pre_restore_late() 8) sysdev_pre_restore() 9) boot kernel is replaced with the 'hibernated' kernel 10) sysdev_post_restore() 11) post_restore_early() 12) IRQs are enabled 13) nonboot CPUs are enabled 14) post_restore() 15) tasks are thawed 16) system is running and we may need a notifier for subsystems that should do something after tasks have been thawed. Greetings, Rafael _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm