On Thursday 17 May 2007, Pete Zaitcev wrote:
> On Thu, 17 May 2007 12:08:15 -0700, David Brownell <[EMAIL PROTECTED]> wrote:
> 
> > > > As it happens, USB callbacks cannot be interrupted.  That's a somewhat 
> > > > artificial restriction; in theory there's no reason we couldn't allow 
> > > > interrupts.
> > > 
> > > Do you remember why we're doing this? I did not touch that part since
> > > the attempt to keep usb->lock across the callback (read: years back).
> > 
> > HCDs have, for historical reasons, issued URB completions in their IRQ
> > handlers.
> > 
> > In order to do that correctly -- since completion handlers need to be
> > able to submit URBs -- that must be done while (a) dropping the HCD's
> > internal spinlock, but also (b) not re-enabling the HCD's IRQ, and a bit
> > more subtly (c) ensuring certain HCD-internal state doesn't change until
> > after the completion returns.
> 
> I understand the points a-c above. The question is, why do we do
> local_irq_save across the URB callback? It seems to be completely
> non-functional.

Where is that done?  The HCDs just seem to call usb_hcd_giveback_urb()
after dropping their internal spinlock (except the u132 one, which has
always been kind of dubious and acts unmaintained).  And that routine
doesn't do a local_irq_save.

So the primary paths certainly don't do such a thing.

I could believe other paths have that in case they're not called from
an IRQ handler context.  Like for example with root hub URBs...

- Dave


> Linux already guarantees that interrupt handlers are 
> not re-entered. If the interrupt controller on the platform allows it,
> this is done by masking a specific IRQ. If that is impossible, interrupts
> are masked in the CPU (maybe only partially, e.g. on SPARC). However
> it is done though, the local_irq_save that we do adds nothing that
> I can see.
> 
> -- Pete
> 



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to