Em 04-08-2011 20:22, Matthew Dharm escreveu: > On Thu, Aug 4, 2011 at 3:56 PM, Greg KH <greg@xxxxxxxxx <mailto:greg@xxxxxxxxx>> wrote: > > On Thu, Aug 04, 2011 at 07:21:47PM -0300, Mauro Carvalho Chehab wrote: > > I know that this problem were somewhat solved for 3G modems, with the usage > > of the userspace problem usb_modeswitch, and with some quirks for the USB > > storage driver, but I'm not sure if such tricks will scale forever, as more > > functions are seen on some USB devices. > > Well, no matter how it "scales" it needs to be done in userspace, like > usb_modeswitch does. We made that decision a while ago, and it is > working out very well. I see no reason why you can't do it in userspace > as well as that is the easiest place to control this type of thing. > > I thought we had a long discussion about this topic a while ago and came > to this very conclusion. Or am I mistaken? > > > We keep having the discussion over and over again. But, you are correct: the conclusion was that this all needs to live in userspace. In the case of 3G modem x USB storage only, it is possible to handle it on userspace. However, when there are more functions added, an they're not (completely) mutually exclusive, then I don't see an easy way (if is there a way) for doing it at userspace. Several devices offer more than one function at the same time, but some resources are mutually exclusive. A TV stick with just one tuner, and both analog and digital demods offer both analog and digital TV at the same time. So, both analog and digital parts of the driver will offer the device to userspace. However, unpredictable results will happen if userspace tries to use both at the same time. The Digital camera devices that offer PTP transfers and V4L support also fall at the same type of trouble. Some of those devices just delete all pictures from the memory, if streaming is started. So, receiving an automatic Skype video call may delete all pictures you took. Worse than that, currently, the PTP protocol is handled via libusb, while streaming is done via V4L2 API. The best technical approach, IMO, is to implement the PTP protocol in kernelspace, and do some sort of inter-subsystem locking to prevent such troubles. Regards, Mauro -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html