On Sun, 16 May 2004, Martin Jonsson wrote:

> Hi all.
> 
> I have an APC BackUPS CS connected to my linux 2.6.5 box. The usb
> communication works just fine for quite a while, but after 30-40 days of
> uptime or so, it starts to behave strange and the communication doesn't
> work correctly anymore. Also, it doesn't work to kill -9 apcupsd, probably
> it's stuck in a syscall somewhere in the usb driver. This also resulted in
> the kernel being unable to free some memory when I tried to unload the
> uchi-hcd module.

Does your system use USB controllers made by VIA Technologies?  You can 
find out by running lspci.

> I looked around in linux-2.6.6/drivers/usb/host/uhci-hcd.c and found the
> following:
> 
> #ifdef I_HAVE_BUGGY_APC_BACKUPS
>         /* APC BackUPS Pro kludge */
>         /* It tries to send all of the descriptor instead of the amount */
>         /*  we requested */
>         if (status & TD_CTRL_IOC &&     /* IOC is masked out by uhci_status_bits */
>             status & TD_CTRL_ACTIVE &&
>             status & TD_CTRL_NAK)
>                 return 0;
> #endif
> 
> Could this have something to do with my BackUPS CS problems? I tried to
> #define I_HAVE_BUGGY_APC_BACKUPS for my new-compiled 2.6.6 kernel, but as
> the problem takes more than a month to reproduce, any suggestions would be
> greatly appreciated.

I doubt this has anything to do with your problem at all.  This part of
the code is much more likely to be used when you first attach the USB
cable to the UPS, not months later.

> Oh, and btw, the logrotate scripts of my debian box restarts apcupsd every
> day - could this be related in any way?

Very unlikely.

> dmesg says the following:
> 
> drivers/usb/input/hid-core.c: ctrl urb status -2 received
> <repeated 14 times>
> drivers/usb/input/hid-core.c: timeout initializing reports
> 
> usb 1-2: control timeout on ep0out
> <repeated 4 times>
> 
> drivers/usb/input/hid-core.c: ctrl urb status -2 received
> <repeated some more times>
> 
> 
> When I try to rmmod uhci-hcd:
> 
> 
> uhci_hcd 0000:00:07.2: remove, state 1
> usb usb1: USB disconnect, address 1
> usb 1-2: USB disconnect, address 2
> uhci_hcd 0000:00:07.2: dma_pool_destroy uhci_td, c9abb000 busy
> uhci_hcd 0000:00:07.2: USB bus 1 deregistered
> slab error in kmem_cache_destroy(): cache `uhci_urb_priv': Can't free all
> objects
> Call Trace:
>  [<c0137016>] kmem_cache_destroy+0x86/0x100
>  [<d090bf0c>] uhci_hcd_cleanup+0x1c/0x67 [uhci_hcd]
>  [<c012cb90>] sys_delete_module+0x130/0x170
>  [<c0140394>] sys_munmap+0x44/0x70
>  [<c0106fbb>] syscall_call+0x7/0xb
> 
> drivers/usb/host/uhci-hcd.c: not all urb_priv's were freed!
> drivers/usb/input/hid-core.c: timeout initializing reports
> 
> Then the kernel oopses.
> 
> Thanks in advance.
> 
> /marty

If you turn on USB debugging in your kernel's configuration, it may 
provide additional information that could help tracking down the source of 
your problem.  Even if it takes a month or more.

Alan Stern



-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to