|
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.
|