[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