Am Donnerstag, 1. März 2007 21:07 schrieb Alan Stern: > On Thu, 1 Mar 2007, Oliver Neukum wrote:
> > There is no uniform user space. IO requests originate from different users > > and sometimes the kernel itself. You cannot assume that the priviledge to do > > IO with a device at the time open() (or equivalent) was called means that > > this priviledge remains. > > Oh dear! This means the entire kernel will have to be rewritten! :-) > > Seriously, exactly that assumption _is_ made throughout the kernel. > That's why open() checks user privileges but read() and write() don't -- > they only check whether the fd is open for reading or for writing. Down an interface and it stays down. Suspend an interface and it ... Why? > That difference is minimal. If there's ongoing I/O then setting the delay > to 0 won't have any immediate effect. On the other hand doing an > immediate suspend won't have much effect either, because the ongoing I/O > will quickly cause an autoresume. Very well, so autosuspend with delay 0 is enough. > > I am afraid not. This introduces a race condition. If a device is woken up > > for a specific purpose, the better interface would be an interface that > > made the device stay awake until that purpose is satisfied, however long > > that may take. > > I can't think of any way to express the idea of "a specific purpose" in a > form the kernel can understand. However the user could always disable > autosuspend; that also should force an immediate resume and it wouldn't Yes, only waking up, as opposed to wake up and keep woken up, is useless from user space. > have any races. (But it might lead to problems if the user then didn't > have permission to re-enable autosuspend -- a perverse situation.) Yes, that should be avoided. > Well, we could do a privilege check in the attribute's store() method. > But it would be a lot more flexible to have distinct attributes. Yes. > > > Open question: Do we need a suspend mode in which the device _doesn't_ > > > wake up on request? I don't think so... and in any case, there's no way > > > to pass this information (whether to ignore I/O requests) to the driver. > > > > Why not? > > Take a look at the definition of pm_message_t and tell me where you think > the information could be stored. How many in kernel data structures have been changed? Though if we limit pm to autosuspend the point is moot. Regards Oliver ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel