On Friday 15 May 2009, Johannes Berg wrote: > Hi, Hi, > According to pm.h one should enable wakup events in the suspend() and > poweroff() callbacks. > > However, poweroff is not called for the 'shutdown' or 'restart' > hibernate methods. This seems problematic, since then with proper > drivers platforms that have no 'platform' suspend method then cannot WoL > or anything like that (well, for 'restart' that isn't very relevant). I think the solution for these platforms is to define hibernation operations (struct platform_hibernation_ops) that do nothing and use the 'platform' mode. WoL is not really supported in the 'shutdown' mode due to drivers that don't have a ->shutdown() method setting up WoL. Also, on ACPI systems we often need to do some ACPI magic for the WoL to really work and this is not done in the 'platform' mode. > The only way to hack around that seems to be to implement the > dev->driver->shutdown method, but I don't think that is intended? On the > other hand calling both ->shutdown and ->poweroff seems problematic. > > Right now what I'm trying to do is preserve a wireless connection across > hibernate. This is possible by telling the AP that we're asleep, in > which case it will buffer frames for us (it may eventually kick us off > anyway, but that's ok, without telling it we're asleep I don't even > survive a 'reboot' method cycle). > > Also, shouldn't it be possible to WoL while your machine is shut down? > How do you program that? Set up WoL in ->shutdown(), like e1000 for example. In fact I don't like it too, because IMO we clearly seem to need to split the current ->shutdown() into non-PM and PM parts, but that's how it goes at the moment. Thanks, Rafael _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm