[Alan] > On Thu, 27 May 2010, Linus WALLEIJ wrote: > > > OK I understand it will be rather OK to do this. For example I have > > drivers/spi/amba-pl022.c which is quite clearly taking elements > > off a queue and transmitting them. > > > > Currently, as we do not have suspend blockers, we try to stop the > > queue in suspend() and if that fails we return something negative > > so that the suspend() is blocked by the negative return code. > > How can it fail? Even if the queue can't be stopped immediately, can't > the suspend routine block for a few milliseconds until the queue can be > stopped? > > > Maybe the behaviour for an SPI bus should rather be to return > > -EBUSY as long as there are events in the queue. I don't quite > > know frankly. > > No. It should stop the queue. > > Think of it this way: Somebody has just closed the lid of their > laptop and thrown the computer into a backpack. You don't want the > machine to fail to suspend merely because an SPI queue wasn't empty. Not quite! On the other end of that SPI link is our power regulators. (I'm not making this up, they are really there.) The events in the queue may be the register writes that actually put the system to low-power sleep. But the apropriate action may likely be to wait for this queue to become empty before returning 0 from suspend(). Yours, Linus Walleij _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm