Kernel panic during boot in usb_add_task

Bill Hacker wbh at conducive.org
Mon Nov 26 13:24:53 PST 2007


Michael Neumann wrote:
Michael Neumann wrote:
Michael Neumann schrieb:
Bill Hacker schrieb:
Michael Neumann wrote:
For starters, what does NetBSD report as the hardware and can you 
capture *any* scan, dmesg, or other report from FreeBSD 7-BETA3 or 
DFLY?
I could track it down where the panic occurs:

http://opengrok.creo.hu/dragonfly/xref/src/sys/bus/usb/usb.c#374

More specifically:

  http://opengrok.creo.hu/dragonfly/xref/src/sys/sys/queue.h#428

  *(head)->tqh_last = (elm);

This expands to:

  *(&taskq->tasks)->tgh_last = task;

There a NULL pointer is dereferenced somehow.

usb_add_task is called from uhci_timeout:

  http://opengrok.creo.hu/dragonfly/xref/src/sys/bus/usb/uhci.c#1428

It seems to get only called when a timeout occurs. That's maybe that I 
am the only one having those problems :)

I couldn't track it down further. My pure guess would be that it would 
not panic if "uhci_abort_xfer(&uxfer->xfer, USBD_TIMEOUT);" is called 
instead (sc->sc_dying == 1), but I can't build a kernel right now, so I 
can't change the code and build an ISO image.

Any further ideas?

Regards,

  Michael
Looks to be decent detective work to me!

But I quit coding in 'C' the same year the 386-16 was launched,

;-)

. ..so we'll now need to wait for a developer to weigh-in.

Meanwhile - it is not *supposed to* matter - but on any OS that you are able to 
boot with the devices all optioned ON, can you confirm use of shared interrupts 
or NOT?

Ex:

Tyan Tomcat - some sharing:

triligon# ps -xa | grep '\[irq'
   22  ??  WL     0:00.00 [irq9: acpi0]
   23  ??  WL     0:07.04 [irq16: bge0 uhci3]
   24  ??  WL     0:00.02 [irq17: bge1]
   25  ??  WL     0:00.00 [irq23: uhci0 ehci0]
   29  ??  WL     0:23.97 [irq19: uhci1+]
   31  ??  WL     0:00.00 [irq18: uhci2+]
   35  ??  WL     0:00.00 [irq14: ata0]
   36  ??  WL     0:00.00 [irq15: ata1]
   37  ??  WL     0:00.00 [irq1: atkbd0]
   38  ??  WL     0:00.00 [irq12: psm0]
   40  ??  WL     0:00.00 [irq7: ppc0]
 3401  p0  S+     0:00.00 grep \\[irq
HP-Compaq Proliant - nothing shared:

datareplica# ps -xa | grep '\[irq'
   19  ??  WL     0:00.00 [irq9: acpi0]
   20  ??  WL     0:07.15 [irq76: ciss0]
   22  ??  WL     0:01.68 [irq72: em0]
   23  ??  WL     3:58.75 [irq73: em1]
   24  ??  WL     0:11.54 [irq24: mpt0]
   26  ??  WL     0:00.00 [irq25: mpt1]
   28  ??  WL     0:04.47 [irq16: uhci0]
   31  ??  WL     0:00.00 [irq19: uhci1]
   33  ??  WL     0:00.00 [irq23: ehci0]
   35  ??  WL     2:15.89 [irq17: bge0]
   36  ??  WL     0:00.00 [irq14: ata0]
   37  ??  WL     0:00.00 [irq15: ata1]
   40  ??  WL     0:00.00 [irq1: atkbd0]
   41  ??  WL     0:00.00 [irq12: psm0]
   42  ??  WL     0:00.00 [irq7: ppc0]
Asus P5K (with 'fast' PCI-e empty).
Poop hits the fan bigtime PCI-wise (one PCI-attached NIC, max) if that slot is used.
   25  ??  WL     0:00.00 [irq9: acpi0]
   26  ??  WL     0:00.00 [irq16: de0 uhci0+]
   30  ??  WL     0:00.00 [irq21: uhci1]
   32  ??  WL     0:00.00 [irq18: rl1 uhci2++]
   35  ??  WL     0:00.12 [irq17: rl0 atapci1]
   36  ??  WL     0:00.00 [irq23: uhci3 ehci1]
   38  ??  WL     0:00.00 [irq19: uhci4]
   42  ??  WL     2:06.03 [irq22: atapci2+]
   43  ??  WL     0:00.07 [irq1: atkbd0]
   44  ??  WL     0:00.00 [irq14: ata0]
   45  ??  WL     0:00.00 [irq15: ata1]
Mind - this may not have anything to do with the issue.

But fast peripherals - even just init'ing- can be quite greedy, and it is a 
cheaply made observation.

Bill





More information about the Kernel mailing list