|
Description
|
On certain x86 systems, such as Dell XPS M1330, fast reboot would hang
during uhci_attach() as soon as interrupts are enabled for a certain dip.
Further debugging showed that the hang is caused by interrupt flood on uhci
nodes still in UHCI_CTLR_INIT_STATE, USBSTS (status) has USBSTS_REG_USB_INTR
(0x0001) bit set, but USBINTR (interrupt enable) is 0 (all disabled). As
a result, uhci_intr() is continuously invoked to handle this interrupt, yet
since interrupt is not enabled yet, the interrupt is not claimed. The system
hangs.
The fix is to clear the status bits in uhci_quiesce(). See suggested fix
for details.
|