kernel panic in usb0; was: RE: using vkbd device

Norbert Koch NKoch at demig.de
Tue Jun 14 13:11:17 GMT 2005


> The ukbd-specific detaching only works, because I implemented something in
> ukbd.c,
> that Hans Petter Selasky [hselasky at c2i.net] suggested in thread
> "usbd.conf:
> detach ukbd".
> (See the patch files, I posted there)
>
> When the kernel panics, it does this in usb0 kernel thread.
> I figured out that this is only related to connecting/disconnecting
> the usb keyboard. It panics without kbdmux loaded and it panics with
> unmodified ukbd.c. So I'll have to try to remote debug it, as
> my embedded device has no swap space at all and so no core dump device
> (256MB flash/256 MD dram).

Hello,

I am observing spurious crashes in usb0 under FreeBSD 4.11.
Kernel configuration/hardware:
  HZ=400, NO_SWAPPING, DEVICE_POLLING (with kern.polling.user_frac=90),
  fxp ethernet, 6x sio, ohci, Pentium MMX 166 MHz

When quickly connecting/disconnecting
a usb keyboard, after some time I have a panic in process 3 (usb0),
either at usbd_ar_pipe+0x7 (when detaching)
 or at usbd_get_interface_descriptor+0x6 (when attaching).

Stack traces are:

(a)
usbd_ar_pipe+0x7
  usbd_ar_pipe(0,...)
  usbd_abort_pipe(0,...)
  ukbd_enable_intr()
  ukbd_term()
  ukbd_detach()
  DEVICE_DETACH()
  device_detach()
  device_delete_child()
  usb_discommect_port()
  uhub_explore()
  usb_discover()
  usb_event_thread()

(b)
usbd_get_interface_descriptor+0x6
  usbd_get_interface_descriptor(0)
  ukbd_attach(c0bf3b80)
  DEVICE_ATTACH()
  device_probe_and_attach()
  usbd_probe_and_attach()
  usbd_new_device()
  uhub_explore()
  usb_discover()
  usb_event_thread()

In situation(a), ipl is at bio, ks_intr_pipe is NULL when calling
usbd_abort_pipe().

In situation (b), ipl is at none, USB_ATTACH_START() in USB_ATTACK(ukbd) in
ukbd.c
seems to make problems.

The above stack traces are from ddb. Booting the kernel with -gd and using
gdb -k
didn't give more information. I almost always get an unusable empty stack
trace
and different crash addresses.

It seems like 'usbd_setup_pipe: failed to start endpoint, IOERROR' always
comes
before the crash and ipl is mostly at bio, never at usb.

When I'm doing these tests, I have an ssh console connected through fxp0
where I
run usbd -dv.

Any idea?

Norbert



More information about the freebsd-hackers mailing list