On Mon, May 13, 2002, David Brownell <[EMAIL PROTECTED]> wrote:
> > > That summary _does_ assume a working system.  ...
> > 
> > I don't see what's really different? If the HC halted due to error,
> > wouldn't the devices disappear that are on the root hub?
> 
> What, you mean as if by magic without the HCD doing anything
> at all?  Hardly not!  (Peals of laughter.)  Absolutely everything
> needs to be cleaned up "by hand" as it were.

What I meant was why is this any different from disconnecting a device?
Everything is cleaned up fine in that code path.

> > > > When you remove all of that extra code, it appears to reduce down to a
> > > > single pci_pool_free call. Is that correct?
> > > 
> > > No extra code ... that's wrong.  As I said, it's possible that a QH
> > > may still be linked to the hardware after its URBs are unlinked.
> > > (Or for OHCI, an ED.)
> > > 
> > > We know that (modulo bugs) all URBs will be unlinked when
> > > that code is called.  We can't know that all QHs will be, since
> > > that involves a hardware handshake that for various reasons
> > > may not have been completed -- or even started -- by then.
> > 
> > Then don't decrement the reference count until the QH is fully unlinked.
> 
> I guess I don't see how what you suggest relates to anything.
> In what sense is that not being done already?

Because when it is done, you'll decrement the reference count and then
you'll finally get your ->deallocate() callback.

No muss, no fuss.

Works for me(tm)

JE


_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to