[Nut-upsdev] a nasty kernel oops

Charles Lepple clepple at gmail.com
Thu Jan 13 03:24:42 UTC 2011


On Jan 12, 2011, at 10:08 AM, Alfred Ganz wrote:

> EIP is at hid_close+0x2/0x1f
> eax: 00000000   ebx: d216bd20   ecx: f7fff080   edx: 00000000
> esi: d21ebc00   edi: c06b3470   ebp: 00000000   esp: f768ad34
> ds: 007b   es: 007b   ss: 0068
> Process usbhid-ups (pid: 2437, ti=f768a000 task=f7682000  
> task.ti=f768a000)
> Stack: c05976fd d20fe000 c0595668 d21ebc00 c06b3440 c058e1c5  
> d21ebc8c d21ebc14
>       c055e859 d21ebc14 d21ebc14 d21ebc00 c055ea91 d21ebc00 c0588351  
> ffffffc3
>       00000000 c0590cc0 f75ee340 00000000 00005516 00000000 c00c5512  
> d2173400
> Call Trace:
> [<c05976fd>] hiddev_disconnect+0x3f/0x5e
> [<c0595668>] hid_disconnect+0x81/0xbf
> [<c058e1c5>] usb_unbind_interface+0x34/0x6a
> [<c055e859>] __device_release_driver+0x7d/0xbb
> [<c055ea91>] device_release_driver+0x1c/0x2b
> [<c0588351>] usb_driver_release_interface+0x38/0x60
...

I suspect that the problem goes away once you have booted because the  
kernel HID driver has been detached from the UPS once already.

Perhaps I am misreading your description, but have you tried booting  
without any USB devices, plugging the UPS in later (maybe once the  
system has quiesced), then restarting the NUT init scripts?

It also might work better to disconnect the kernel HID driver before  
starting usbhid-ups. If you have libhid, it comes with an example  
program (libhid-detach-device) that detaches the kernel driver from  
the first interface of a USB device. If not, it's just a handful of  
libusb calls, and we can put together a test program to do that before  
usbhid-ups gets to it.



More information about the Nut-upsdev mailing list