tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: USB lockup
> Add a check to ohci_softintr to see if the list goes circular and enter
> ddb / dump usbhist when it does...
I already did add a panic and it fired.
I'm still trying to find out how that happens.
What I'm seeing (dumped by device_ctrl_start()) is a chain of four TDs
(named here after their addresses' three least significant nybbles):
E20->EE0->FA0->F40->0
which are linked in that sense by both nexttd and td.td_nexttd.
Then, in ohci_softint(), the done queue is (as linked by td.nexttd):
FA0->EE0->E20->FA0->...
and, as expected, the nexttd links are as before.
Absent the E20->FA0 link, that's exactly what one would expect if the first
three TDs have been handled (the done list is most recently done first);
the big question is where that additinal link comes from.
I've added code to ohci_hash_add_td() to catch a TD being added with a
physical address already present in the hash list, but that didn't fire.
Home |
Main Index |
Thread Index |
Old Index