Re: OHCI root_port_reset() deadly loop...

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <davem@...>
Cc: <linux-usb-users@...>, <linux-kernel@...>, <greg@...>
Date: Tuesday, October 9, 2007 - 12:09 am

> To add some more information here, I think the EHCI idea might

There's actually no such thing as an "EHCI port" or an "OHCI port".
Instead, there's a set of ports, each of which can be switched so
the USB differential data signals go up to either controller.

When EHCI starts, that switch points to EHCI so that devices can try
enumerating with high speed signaling.  When a device doesn't respond
to that "chirp", the EHCI root hub driver switches the port to the
companion controller.  (Which is OHCI here, UHCI on some PCs, etc.)



Yes, that's why I asked about EHCI.  My speculation would be that
OHCI starts the reset, and EHCI claims the port before it completes;
or contrariwise OHCI starts the reset right after EHCI claims it.

And there's some point in that process where a hardware race makes
the trouble you've observed.  I believe there are plenty of other
places where it's perfectly fine if EHCI grabs the port, or this
little race would have shown up many times before.

- Dave


-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
OHCI root_port_reset() deadly loop..., David Miller, (Sun Oct 7, 2:53 am)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Sun Oct 7, 3:31 am)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Sun Oct 7, 3:51 am)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Mon Oct 8, 7:54 pm)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Tue Oct 9, 12:36 am)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Tue Oct 9, 12:44 am)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Tue Oct 9, 12:38 pm)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Tue Oct 9, 4:41 pm)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Tue Oct 9, 5:09 pm)
Re: OHCI root_port_reset() deadly loop..., Greg KH, (Tue Oct 9, 4:46 pm)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Tue Oct 9, 5:05 pm)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Tue Oct 9, 12:09 am)
Re: OHCI root_port_reset() deadly loop..., Benjamin Herrenschmidt, (Tue Oct 9, 1:13 am)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Tue Oct 9, 1:26 am)
Re: OHCI root_port_reset() deadly loop..., Benjamin Herrenschmidt, (Tue Oct 9, 2:37 am)
Re: OHCI root_port_reset() deadly loop..., Greg KH, (Mon Oct 8, 11:10 pm)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Mon Oct 8, 11:16 pm)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Mon Oct 8, 11:34 pm)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Mon Oct 8, 11:42 pm)
Re: OHCI root_port_reset() deadly loop..., Greg KH, (Tue Oct 9, 12:39 am)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Tue Oct 9, 1:00 am)
Re: OHCI root_port_reset() deadly loop..., Benjamin Herrenschmidt, (Tue Oct 9, 2:43 am)
Re: OHCI root_port_reset() deadly loop..., David Brownell, (Tue Oct 9, 2:48 pm)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Tue Oct 9, 1:23 am)
Re: OHCI root_port_reset() deadly loop..., David Miller, (Tue Oct 9, 12:47 am)
Re: OHCI root_port_reset() deadly loop..., Greg KH, (Tue Oct 9, 2:06 am)
Re: OHCI root_port_reset() deadly loop..., Benjamin Herrenschmidt, (Tue Oct 9, 1:11 am)