Hi! > > > Well, there lies a problem - some devices have to do execve because > > > they need firmware to operate. Also, again, some buses with > > > hot-pluggable devices will attempt to clean up unsuccessful resume and > > > this will cause hotplug events. The point is you either resume system > > > or you don't. We probably need a separate "unfreeze" callback, > > > although this is kind of messy. > > > > There's a better solution for firmware: You should load your firmware > > prior to suspend and store it in RAM. Anything else just plain does > > not work. (Because your wireless firmware might be on NFS mounted over > > that wireless card). > > > > Hotplug... I guess udev just needs to hold that callbacks before > > system is fully up... it has to do something similar on regular boot, > > no? > > Well, I did not really look into udev but hotplug (which can iteract > with udev) does not keep anything. If it fails its ok - that's why > there are coldplug scripts that "recover" lost events. But here we > block trying to start hotplug - we not getting an error - and this is > bad. Unfortunately I am not familiar with block devices working to say > why it hangs. > > Should we pull Jens into the discussion? I don't really want us to try execve during resume... Could we simply artifically fail that execve with something if (in_suspend()) return -EINVAL; [except that in_suspend() just is not there, but there were some proposals to add it]. Or just avoid calling hotplug at all in resume case? And then do coldplug-like scan when userspace is ready... But we perhaps should cc linux-pm list. Pavel -- People were complaining that M$ turns users into beta-testers... ...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!