here's a patch which resolves the problem during shutdown.
The sum "now_uframe+mod-1" obviously can get greater than mod. If this is the case the if-clause "now_uframe==clock" results always into false.
Consequently the loop for(;;) loops forever.
/Bernd
--- ehci-sched.c.orig Sat Jan 31 17:51:57 2004
+++ ehci-sched.c Sat Jan 31 17:53:49 2004
@@ -1246,7 +1246,7 @@
if (HCD_IS_RUNNING (ehci->hcd.state))
clock = readl (&ehci->regs->frame_index) % mod;
else
- clock = now_uframe + mod - 1;
+ clock = (now_uframe + mod - 1) % mod;
for (;;) {
union ehci_shadow q, *q_p;
