Am Dienstag, 22. Mai 2007 16:59 schrieb Alan Stern: > On Tue, 22 May 2007, Oliver Neukum wrote: > On the other hand, I still think you'd be better off with only one > spin_lock_irq() call in hid_suspend(). After all, you always have to > synchronize with the error handler, no matter what kind of suspend it > is. In addition there would be nothing really wrong with calling > usbhid_wait_io() for an autosuspend, since it should return right > away. If you follow this advice, you'll find that the two branches > share quite a lot more code than they do now.
I'll think about it. > > TODO > > > > - pre/post_reset is currently broken, it can no longer be a parasite > > on suspend/resume > > Why not? The only difference I can see is that you're allowed to fail > a suspend but not a pre_reset. Yes, but if you are in pre_reset, chances are something is wrong with the devices. Outright slaughter of all outstanding URBs is better than waiting for them to complete. > In fact, failing a non-auto suspend is not a good idea. You could > easily end up preventing somebody's laptop from hibernating when they > close the lid and put it in their knapsack. Yes, and I don't. That's one reason I want to separate the auto and system cases. > > - adapt to hibernate > > What adaptations are needed? Do I need to kill remote wakeup? > > There is a principal issue. What is to be done with output requests? > > Starting the queue as soon as one arrives seems the safest thing to do, > > but it is fatal in a subset of situations, that is, it must not be done > > during > > snapshotting and when going for system suspend. The freezer is insufficient > > to prevent new requests from coming in. > > Because new requests are generated as a result of interrupt processing. Yes. > But if you kill the interrupt URB then there will be no more inputs and > hence nothing to generate any more output. Thus, when suspending you > should kill the inputs and wait for the outputs to drain (or else > explicitly plug the output queue). Then it will be safe to autoresume > whenever a new output queue entry arrives. Nope. Devices share LED status. Now think of the case of having two keyboards, one already processed and the other still active. > Come to think of it, it would be safest to have an explicit way of > plugging the queues. But those details are up to you. What tells me when to do so? > > Alan, are you going to scream and leap with talons extended if I > > suggest yet another pair of methods for USB devices to facilitate > > that? > > Probably. Besides, it's not just a USB problem. Other drivers -- and > also some kernel threads -- will need to know when a hibernation is > about to start. Isn't there going to be a notifier chain added for > this? I have no idea. Should I ask on the pm list? Regards Oliver ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel