Re: Logic errors involving QH_STATE_COMPLETING

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 23 July 2009, Alan Stern wrote:
> BTW, qh_link_async does an apparently unnecessary check that
> qh->qh_state == QH_STATE_IDLE.  Is there any reason for this?  It would 
> be a bug if the state weren't IDLE.

        /* clear halt and/or toggle; and maybe recover from silicon quirk */
        if (qh->qh_state == QH_STATE_IDLE)
                qh_refresh (ehci, qh);

I don't recall just now.  Probably it's left over from
early paranoia. 

ISTR it took a while to iron out the QH handling in that
driver, so there may be a few such things left:

 - early NEC silicon was solid but a bit slow (so it
   never triggered races) and had that "silicon quirk";
   which subtly affected QH handling;

 - early VIA silicon was deeply buggy but fast ("is this
   yet another silicon bug, or is the driver wrong?");

 - ISTR that until Philips sent me one of their eval boards
   (thank you to that now-NXP group in Hong Kong!) I had a
   very hard time reproducing (then fixing) some races; it
   reproduced many problems nicely, without HW bugs.

Nowadays the EHCI hardware is a lot better to work with,
and SMP systems are getting to be the norm.  :)

- Dave

--
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

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux