On Thu, 2004-01-15 at 17:20, Alan Stern wrote: > > So I guess that is bad (meaning the hardware is buggy?). > > I would hesitate to make that conclusion, but it's certainly a > possibility. The best test would be to try running your driver on a > different computer.
As mentioned in one of my first mails regarding this issue I tested it on my development machine (other cpu, chipset, etc.) and it works without problems. The following trace is taken from a working unplugging event from that machine: Preceding the lines below are more uhci_irq calls than on the buggy machine. They start with the same 32 -> 1 -> 32 -> ... pattern (repeats 3-4 times as well) then there are like 15 additional 0 -> 32 -> ... loops. Then I see the "USB disconnect" and the uhci_urb_dequeue() exactly the same way as on the other machine. Then some more 0,32,0,32,... lines and then suddenly: Jan 15 22:08:52 strand kernel: drivers/usb/host/uhci-hcd.c: c400: suspend_hc Jan 15 22:08:52 strand kernel: uhci_irq status 32 Jan 15 22:08:52 strand kernel: uhci_remove_pending_qhs process c40b33c0 Jan 15 22:08:52 strand kernel: >>> uhci_clear_next_interrupt Jan 15 22:08:52 strand kernel: << uhci_clear_next_interrupt Jan 15 22:08:52 strand kernel: >>> uhci_finish_urb c40b33c0 Jan 15 22:08:52 strand kernel: >>> uhci_set_next_interrupt Jan 15 22:08:52 strand kernel: << uhci_set_next_interrupt Jan 15 22:08:52 strand kernel: >>> giveback c40b33c0 Jan 15 22:08:52 strand kernel: spheroncam.c: spheroncam_complete urb: c40b33c0 status: -104 > Another possibility is that, for some reason, the controller isn't running > when uhci_urb_dequeue() is called. In your printk at the end of the > routine, try displaying the value of uhci->state. On both machines I get uhci->state == 3 at the end of uhci_urb_dequeue(). > However, if the > controller had stopped there ought to be a message in your system log > saying so. Something like: > > kernel: d400: suspend_hc > > And the controller shouldn't stop as long as your device is plugged in. As seen above, on the working machine I get such a line after the disconnect and before the uhci_remove_pending_qhs() call actually removes the URB. On the buggy machine I see one after the disconnect as well: Jan 15 23:06:57 koffer kernel: drivers/usb/host/uhci-hcd.c: e400: suspend_hc The crucial difference is, that the buggy machine doesn't get any uhci_irq() calls after the disconnect. > No, that's not true. There's no counter or anything like that involved. > All that matters is which one runs last. So even if set_next is called 10 > times, if clear_next is called it will cancel the effect. I understand. That means the uhci_irq gets called in other cases as well but what ever caused the interrupt, clear_next is called, which would not be always be necessary? (not that I really cared...) > > Jan 14 23:33:26 koffer kernel: uhci_irq status 32 > > Status 32? That means the controller _is_ stopped! But then _nothing_ > should be working... Since the develop machine works but I get even more uhci_status = 32 reads, I guess they are not as bad as you thought. Thanks, Axel. ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel