Stephen Hemminger wrote: > On Fri, 01 Dec 2006 20:45:51 +0300 > Alexey Starikovskiy <alexey.y.starikovskiy at linux.intel.com> wrote: > > >> Linus Torvalds wrote: >> >>> On Fri, 1 Dec 2006, Pavel Machek wrote: >>> >>> >>> >>>>>> So it looks like we need this sequence: >>>>>> >>>>>> enable_nonboot_cpus() /* INIT */ >>>>>> finish() /* _WAK */ >>>>>> device_resume() >>>>>> >>>>>> >>>>> Can somebody remind me about this immediately after 2.6.19? >>>>> >>>>> >>>> Remind. But note that freezer is not yet SMP safe... Rafael is working >>>> on that. >>>> >>>> >>> Thanks. >>> >>> On the other hand, I really wonder (and suspect) whether the problem isn't >>> really the freezer or even the kernel resume ordering, but simply an ACPI >>> internal resume ordering thing. >>> >>> Doesn't ACPI have per-device "WAK" calls anyway? Shouldn't we just call >>> those _individually_ as we walk the device tree (perhaps in the >>> "early_resume" stage) rather than calling them all in one chunk? >>> >>> Linus >>> >>> >> _WAK method is system-wide. Individual objects do not have their own >> resume methods. >> One way of reordering internal ACPI resume is done in patch series to >> 7122, I mentioned that earlier. >> It's possible to resume ACPI devices after execution of _WAK in pm->finish. >> > > Does it solve the original problem where finish() was getting run after > device_resume(), and finish() was corrupting PCI register settings like > MSI? > > No, only the case with ACPI devices... all other devices are untouched.