OpenSolaris

Printable Version Enter a New Search
Bug ID 6337131
Synopsis ehci_detach panics debug kernel with a failed assertion with ALi USB2.0 PCI card
State 10-Fix Delivered (Fix available in build)
Category:Subcategory usb_sw:ehci
Keywords opensolaris | oss-request | oss-sponsor
Sponsor frits
Submitter jk
Responsible Engineer Frits Vanderlinden
Reported Against
Duplicate Of
Introduced In
Commit to Fix snv_28
Fixed In snv_28
Release Fixed solaris_nevada(snv_28) , solaris_10u2(s10u2_05) (Bug ID:2132618) solaris_9u9(s9u9_03) (Bug ID:2139006,)
Related Bugs 5047712
Submit Date 14-October-2005
Last Update Date 3-December-2005
Description
Category
   driver
Sub-Category
   usb-ehci
Description
   modunload -i {ehci_module_id} panics the debug kernel, with:

>> ::status

debugging crash dump vmcore.1 (32-bit) from elise
operating system: 5.11 opensolaris (i86pc)
panic message:
assertion failed: after_frame_number > before_frame_number, file: ../../common/io/usb/hcd/ehci/ehci_util.c, line: 3631
dump content: kernel pages only

>> $c

vpanic(fea35bf8, fa1425c0, fa142594, e2f)
assfail+0x5c(fa1425c0, fa142594, e2f)
ehci_wait_for_sof+0x126(c87ac000)
ehci_cleanup+0xc2(c87ac000)
ehci_detach+0x35(d0509990, 0)
devi_detach+0x86(d0509990, 0)
detach_node+0x6d(d0509990, 8000000)
i_ndi_unconfig_node+0x10b(d0509990, 4, 8000000)
i_ddi_detachchild+0x36(d0509990, 8000000)
devi_detach_node+0x61(d0509990, 8000000)
unconfig_immediate_children+0xdf(d0234ab8, 0, 8000000, 3e)
devi_unconfig_common+0xf5(d0234ab8, 0, 8000000, 3e, 0)
mt_config_thread+0x9b(ce040510, 0)
thread_start+8()
========================================================================
In ehci_cleanup() all ports are routed to the classic controller before
ehci_wait_for_sof() is called:
                /* Route all Root hub ports to Classic host controller */
                Set_OpReg(ehci_config_flag, EHCI_CONFIG_FLAG_CLASSIC);
                ...
                /* wait for the next SOF */
                (void) ehci_wait_for_sof(ehcip);
In 5047712, a fix was added to route all USB port to EHCI before waiting for
SOF (because the ALi chip didn't send interrupts when the ports are routed
to the classic controller).
Apparently a similar issue exists in the ehci_cleanup() code:  as soon as
we route back the ports to the classic controller, the current frame number
counter does not increment and more, and this triggers a failed assertion
in ehci_wait_for_sof().
Frequency
   Always
Regression
   Solaris 10
Steps to Reproduce
   Make sure the system has a PCI USB 2.0 card with ALi chipset installed
(pci vendor,device: 10b9,5239 Rev 1)
Make sure there are no usb 2.0 devices connected to the ALi USB 2.0 card.
Run "modunload -i {ehci_module_id}"
Expected Result
   Debug kernel doesn't crash when ehci_detach() is called.
Actual Result
   Kernel panic, with 

>> ::status

debugging crash dump vmcore.1 (32-bit) from elise
operating system: 5.11 opensolaris (i86pc)
panic message:
assertion failed: after_frame_number > before_frame_number, file: ../../common/io/usb/hcd/ehci/ehci_util.c, line: 3631
dump content: kernel pages only

>> $c

vpanic(fea35bf8, fa1425c0, fa142594, e2f)
assfail+0x5c(fa1425c0, fa142594, e2f)
ehci_wait_for_sof+0x126(c87ac000)
ehci_cleanup+0xc2(c87ac000)
ehci_detach+0x35(d0509990, 0)
devi_detach+0x86(d0509990, 0)
detach_node+0x6d(d0509990, 8000000)
i_ndi_unconfig_node+0x10b(d0509990, 4, 8000000)
i_ddi_detachchild+0x36(d0509990, 8000000)
devi_detach_node+0x61(d0509990, 8000000)
unconfig_immediate_children+0xdf(d0234ab8, 0, 8000000, 3e)
devi_unconfig_common+0xf5(d0234ab8, 0, 8000000, 3e, 0)
mt_config_thread+0x9b(ce040510, 0)
thread_start+8()
Error Message(s)
   > ::status
debugging crash dump vmcore.1 (32-bit) from elise
operating system: 5.11 opensolaris (i86pc)
panic message:
assertion failed: after_frame_number > before_frame_number, file: ../../common/io/usb/hcd/ehci/ehci_util.c, line: 3631
dump content: kernel pages only

>> $c

vpanic(fea35bf8, fa1425c0, fa142594, e2f)
assfail+0x5c(fa1425c0, fa142594, e2f)
ehci_wait_for_sof+0x126(c87ac000)
ehci_cleanup+0xc2(c87ac000)
ehci_detach+0x35(d0509990, 0)
devi_detach+0x86(d0509990, 0)
detach_node+0x6d(d0509990, 8000000)
i_ndi_unconfig_node+0x10b(d0509990, 4, 8000000)
i_ddi_detachchild+0x36(d0509990, 8000000)
devi_detach_node+0x61(d0509990, 8000000)
unconfig_immediate_children+0xdf(d0234ab8, 0, 8000000, 3e)
devi_unconfig_common+0xf5(d0234ab8, 0, 8000000, 3e, 0)
mt_config_thread+0x9b(ce040510, 0)
thread_start+8()
Test Case
   Submitter wants to work on bug
   Yes
Additional configuration information
   snv_22, bfu'ed to snv_24 (=debug kernel).
ASUS P2B mainboard with an ALi EHCI+OHCI USB 2.0 PCI controller:
Chipset:  ALi
          M5273  A1
          0342 TS05
          CK370961000B
There are no USB 2.0 devices connected to the USB 2.0 controller.
Work Around
Use a USB 2.0 controller from a different vendor (NEC, VIA, Intel, ...).
Comments
N/A