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

Reply via email to