kern/68420: panic: EHCI and umass

Bryan Liesner bryan at kishka.net
Sun Jun 27 07:10:19 PDT 2004


>Number:         68420
>Category:       kern
>Synopsis:       panic: EHCI and umass
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jun 27 14:10:18 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Bryan Liesner
>Release:        5.2-current
>Organization:
>Environment:
FreeBSD gravy.kishka.net 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Sun Jun 27 02:58:27 EDT 2004     bryan at gravy.kishka.net:/usr/obj/usr/src/sys/GRAVY  i386
>Description:
Large transfers to a USB 2.0 hard disk grind to a halt after approx 100MB is transferred.
This problem started with the introduction of ehci.c 1.7 and ehcireg.h 1.4

Unable to obtain a crash dump, here is the DDB output.

Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x53425355
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xc05147d2
stack pointer           = 0x10:0xd4294b6c
frame pointer           = 0x10:0xd4294b8c
code  segment           = base 0x0 limit 0xffff, type 0x1b
                        = DPL0, pres 1, def32 1, gran1
processor eflags        = interrupt enabled, resume, IOPL=0
current process         = 20 (irq10: pcm0 ehci0)
kernel: type 12 trap,code=0

Stopped at usb_allocmem+0x82: cmpl %esi, 0(%eax)

usb_allocmem(c1a50000,d,0,c1a5453c,d429bd4) at usb_allocmem+0x82
ehci_allocm(c1a50000,c1a5453c,d,d429bd8,c057c561) at ehci_allocm_0x27
usbd_transfer(c1a54500,c1a4e500,c1a54800,c1a5485b,d) at usbd_transfer+0x54
umass_setup_transfer(c1a54800,c1a4e50000,c1a5485b,d,0) at umass_setup_transfer+0x51
umass_bbb_state(c1a54700,c1a54800,0,0,c1a5473c) at umass_bbb_state+0x183
usb_transfer_complete(c1a54700,d4294c78,c058c89d,10000,c1a4e480) at usb_transfer_complete+0x111
ehci_idone(c1a54700,0,0,d4294ca4,c04ffe32) at ehci_idone+0xdf
ehci_check_intr(c1a50000,c1a54700,c1a50000,1,d4294cb0) at ehci_check_intr+0x60
ehci_softintr(c1a50000,d4294cd0,c04ffbd4,c1a50000,c06a7155) at ehci_softintr+0x32
usb_schedsoftintr(c1a50000,c06a7155,167,337fba46,c1a70480) at usb_schedsoftintr+0x12
ehci_intr1(c1a500000,d4294d18,c0556a39,c1a50000,0) at ehci_intr1+0xb4
ehci_intr(c1a50000,0,0,0,0) at ehci_intr+0x2f
ithread_loop(c196a880,d4294d48,0,0,c196a880) at ithread_loop+0x199
fork_exit(c05568a0,c19a880,d4284d48) at fork_exit+0x78
fork_trampoline() at fork_trampoline+0x8

      
>How-To-Repeat:
Attach and mount a USB 2.0 hard drive.  Dump a filesystem to a regular file on the USB hard drive.  The dump will stop shortly after the "dumping regular files" message.  The dump process is stuck in a wdrain state, and when aborted with a ctrl-c, will panic with the above stack trace. The system will also panic wihout aborting the dump. This is also repeatable when using tar to copy the contents of a hard drive to a tar file on the target USB drive.
>Fix:
Not really a fix, but backing out the changes to ehci.c and ehcireg.h alleviates the problem      
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list