On Tue, Mar 12, 2002 at 02:15:05PM -0800, David Brownell wrote: > > > It doesn't make sense to me that if more delays are added in > > > the kernel code, userland needs to see even more. > > > > I agree, but Olaf and others prove that this works. > > There was that hypothesis that it's really control traffic > interference ... I notice that usb_control_msg() chose > against the "keep the setup data in struct usb_device > and lock it with a semaphore" strategy (it kmallocs > the setup buffer), so I could see how that'd happen.
It's always been this way, right? > "usbmodules" asks the device for its config descriptor, > rather than reading /proc/bus/usb/BBB/DDD, so HCDs > that don't handle control queuing (I think OHCI behaves > there, and EHCI, but not the UHCIs) might suffer from > concurrent control messages from it and from HID ... > > I think the best that can be done for now would be a > hack: add a lock in usb_device that must be held > by whoever submits a control request, and released > when that request completes. The non-hack solution > is to support control queuing in all HCDs. > > What kind of lock? Maybe that binary semaphore. > Code that needs to issue control requests in_interrupt() > would need to be modified, as would usb_control_msg(). Yes, this would be the best way. I don't think it's a hack, as some drivers (like the usb-storage one) have said that they really need to lock the control pipe for a while to prevent things from happening out of order (for very dumb devices.) > Usbmodules is used to cope with /sbin/hotplug not providing > a complete interface descriptor dump: it only shows the first > of N inferface descriptors. With coldplug, it doesn't run, and > doesn't provide any descriptors at all -- so it must be used. > > However, even for the hotplug case "usbmodules" gives a > more complete module list. In the case of an audio device > with a sound/ISO interface and a control/HID interface, it'll > pick up the HID. Ah, thanks for explaining this, makes more sense now. greg k-h _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel