On Mon, Sep 22, 2003 at 02:02:38AM -0700, Pier Paolo Glave wrote:
> After a long session of debugging with printk, I found
> out that in those cases one of the calls to
> schedule_timeout() (issued when waiting for an URB
> response in usb.c) never returns.
> I can avoid this situation by removing the
> schedule_timeout() call in usb.c:
It is highly possible that your 2.4.18 kernel is tripping over a bug which
was discovered with set_current_state. Why are you insisting on using old
known buggy kernel versions?
The earliest kernel I'd personally feel happy running on any ARM device is
2.4.19-rmk7.
> --- original/usb.c 2002-08-14 11:50:10.000000000 +0200
> +++ my/usb.c 2003-09-19 15:57:21.000000000 +0200
> @@ -1078,7 +1078,7 @@
>
> while (timeout && !awd.done)
> {
> - timeout = schedule_timeout(timeout);
> + //timeout = schedule_timeout(timeout);
> set_current_state(TASK_UNINTERRUPTIBLE);
> rmb();
> }
>
> The system seems to work correctly anyway, with the
> URB requests correctly done.
>
> It is not clear to me why this function call can cause
> problems in my architecture, and I don't know either
> if my modification will result in buggy or unstable
> system behaviour.
It removes a scheduling point, which means that you'll be wasting CPU
cycles waiting for the URB to complete, rather than getting on with some
other user space task.
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel