Am Samstag, 16. April 2005 00:53 schrieb David Brownell: > > > > Auditing locking in all drivers is not. > > > > Switching to tasklets would result in revisting locking in drivers. > > > > > > Why would switching uhci-hcd over to a tasklet require any change in > > > other > > > drivers? > > > > You have to audit all drivers to check them for synchronization between > > the callback and other hard irqs. In addition to reap the full benefit from > > a switch to tasklets, you'd have to change the drivers to use > > spin_lock_bh(). > > Not many USB device driver use tasklets, but all those would need to be > audited/modified.
Not quite so simple. Have a look at this code from message.c: static void sg_complete (struct urb *urb, struct pt_regs *regs) { struct usb_sg_request *io = (struct usb_sg_request *) urb->context; spin_lock (&io->lock); This is equivalent to spin_lock_irqsave if called from hard irq. In a tasklet it is spin_lock_bh. Do you know whether io->lock is ever taken in hard irq? You need to find out. Simply taking _irqsave would counter the purpose of switching to a tasklet. Regards Oliver ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel