On Tue, Jan 14, 2014 at 10:17:21AM -0800, Sarah Sharp wrote: > Hi Alan, > > All this info is second- or third-hand, so please excuse the extremely > vague bug report. > > A new Intel Atom system (Baytrail) comes with both an xHCI host and an > EHCI host, but the BIOS has an "EHCI only" option that hides the xHCI > host PCI device from the operating system. It appears that when the > BIOS is in this mode, the EHCI PCI interrupt is disabled, and the host > simply doesn't work. > > Jamie and Gaggery have more details about the system and the exact > failure mode. They can provide dmesg as well as a PCI register space > dump, if necessary. (Jamie and Gaggery, please note, a publicly > archived mailing list is Cc'ed.) Ah, I found the dmesg sent from Jamie: [ 10.800309] usb 1-1: khubd timed out on ep0in len=18/64 [ 15.920809] usb 1-1: khubd timed out on ep0out len=0/0 [ 21.130284] usb 1-1: khubd timed out on ep0out len=0/0 [ 21.339922] usb 1-1: device not accepting address 2, error -110 [ 21.469657] usb 1-1: new high-speed USB device number 3 using ehci_hcd [ 21.469657] usb 1-1: new high-speed USB device number 3 using ehci_hcd [ 26.470005] usb 1-1: khubd timed out on ep0in len=18/64 [ 31.599927] usb 1-1: khubd timed out on ep0out len=0/0 [ 36.809314] usb 1-1: khubd timed out on ep0out len=0/0 [ 37.018898] usb 1-1: device not accepting address 3, error -110 [ 37.148525] usb 1-1: new high-speed USB device number 4 using ehci_hcd [ 37.148525] usb 1-1: new high-speed USB device number 4 using ehci_hcd [ 42.149106] usb 1-1: khubd timed out on ep0out len=0/0 [ 47.369158] usb 1-1: khubd timed out on ep0out len=0/0 [ 47.578584] usb 1-1: device not accepting address 4, error -110 [ 47.708060] usb 1-1: new high-speed USB device number 5 using ehci_hcd [ 47.708060] usb 1-1: new high-speed USB device number 5 using ehci_hcd So it looks like the port reported the rate-matching hub connected, but control transfers to the device simply failed. > A customer reports that the following patch fixes the issue: > > diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c > index 3e86bf4371b3..e77566a021ec 100644 > --- a/drivers/usb/host/ehci-pci.c > +++ b/drivers/usb/host/ehci-pci.c > @@ -112,6 +112,9 @@ static int ehci_pci_setup(struct usb_hcd *hcd) > case PCI_VENDOR_ID_INTEL: > if (pdev->device == PCI_DEVICE_ID_INTEL_CE4100_USB) > hcd->has_tt = 1; > + /* Baytrail BIOS in EHCI only mode fails to enable interrupts */ > + if (pdev->device == 0x0f34) > + pci_intx(pdev, 1); > break; > case PCI_VENDOR_ID_TDI: > if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) > > I looked through the USB PCI initialization code, and I can't find any > place where interrupts are enabled, so I assume the PCI core is supposed > to enable interrupts? Or is it assumed that the system boots with all > PCI device interrupts enabled? In that case, is it a BIOS issue? > > Sarah Sharp > -- > To unsubscribe from this list: send the line "unsubscribe linux-usb" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html