On Thu, Jul 12, 2012 at 2:04 AM, Andiry Xu <andiry.xu@xxxxxxx> wrote: > On 07/12/2012 10:53 AM, Matt Causey wrote: >> >> On Wed, Jul 11, 2012 at 11:03 AM, Matt Causey<matt.causey@xxxxxxxxx> >> wrote: >>> >>> On Wed, Jul 11, 2012 at 10:12 AM, Matt Causey<matt.causey@xxxxxxxxx> >>> wrote: >>>> >>>> On Tue, Jul 10, 2012 at 10:55 PM, Andiry Xu<andiry.xu@xxxxxxx> wrote: >>>>> >>>>> On 07/11/2012 01:56 AM, Matt wrote: >>>>>> >>>>>> >>>>>> Lee Harris<lee.r.harris@...> writes: >>>>>> >>>>>>> >>>>>>> >>>>>>> Hi Sarah >>>>>>> >>>>>>> Whenever I restart or coldboot, my external drive (3.5 sata in a USB3 >>>>>>> enclosure) is not detected / initialised correctly. fdisk -l does not >>>>>>> show the drive at all. >>>>>>> I have found that I have to: >>>>>>> turn it off ( or disconnect the usb cable) >>>>>>> modprobe -r xhci_hcd >>>>>>> modprobe xhci_hcd >>>>>>> and then turn it on. It is then found and initialised. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> I'm having this same issue. Does anyone have any ideas? >>>>>> >>>>> >>>>> Can you post the bootup dmesg with device connected and >>>>> CONFIG_USB_DEBUG and >>>>> CONFIG_USB_XHCI_HCD_DEBUGGING enabled? >>>>> >>>>> Thanks, >>>>> Andiry >>>>> >>>>> >>>> >>>> Some more background...I've got another OS image that runs Linux >>>> 2.6.32-33-generic (Ubuntu 10.4 LTS) - and that OS on this hardware >>>> works as expected. I've also tested Linux 3.2.22 and it fails in the >>>> same way on my system. >>>> >>>> Upon more digging, what I'm finding is that if I leave my device >>>> disconnected from the USB3 port when I boot the system, and the >>>> connect the device after the system has booted fully, the device works >>>> correctly. The problem occurs when a device is connected to the USB3 >>>> port, and I simply boot the system. The dmesg below is from the test >>>> system that has the problem. My configuration is also included as an >>>> attachment, in case that's helpful. >>>> >>>> dmesg: > > > ... > > >>>> xhci_hcd 0000:05:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 >>>> xhci_hcd 0000:05:00.0: setting latency timer to 64 >>>> xhci_hcd 0000:05:00.0: xHCI Host Controller >>>> drivers/usb/core/inode.c: creating file '003' >>>> xhci_hcd 0000:05:00.0: new USB bus registered, assigned bus number 3 >>>> xhci_hcd 0000:05:00.0: xHCI capability registers at f8060000: >>>> xhci_hcd 0000:05:00.0: CAPLENGTH AND HCIVERSION 0x960020: >>>> xhci_hcd 0000:05:00.0: CAPLENGTH: 0x20 >>>> xhci_hcd 0000:05:00.0: HCIVERSION: 0x96 >>>> xhci_hcd 0000:05:00.0: HCSPARAMS 1: 0x4000840 >>>> xhci_hcd 0000:05:00.0: Max device slots: 64 >>>> xhci_hcd 0000:05:00.0: Max interrupters: 8 >>>> xhci_hcd 0000:05:00.0: Max ports: 4 >>>> xhci_hcd 0000:05:00.0: HCSPARAMS 2: 0xc0000f1 >>>> xhci_hcd 0000:05:00.0: Isoc scheduling threshold: 1 >>>> xhci_hcd 0000:05:00.0: Maximum allowed segments in event ring: 15 >>>> xhci_hcd 0000:05:00.0: HCSPARAMS 3 0x7ff000a: >>>> xhci_hcd 0000:05:00.0: Worst case U1 device exit latency: 10 >>>> xhci_hcd 0000:05:00.0: Worst case U2 device exit latency: 2047 >>>> xhci_hcd 0000:05:00.0: HCC PARAMS 0x270f06d: >>>> xhci_hcd 0000:05:00.0: HC generates 64 bit addresses >>>> xhci_hcd 0000:05:00.0: FIXME: more HCCPARAMS debugging >>>> xhci_hcd 0000:05:00.0: RTSOFF 0x4a0: >>>> xhci_hcd 0000:05:00.0: xHCI operational registers at f8060020: >>>> xhci_hcd 0000:05:00.0: USBCMD 0x0: >>>> xhci_hcd 0000:05:00.0: HC is being stopped >>>> xhci_hcd 0000:05:00.0: HC has finished hard reset >>>> xhci_hcd 0000:05:00.0: Event Interrupts disabled >>>> xhci_hcd 0000:05:00.0: Host System Error Interrupts disabled >>>> xhci_hcd 0000:05:00.0: HC has finished light reset >>>> xhci_hcd 0000:05:00.0: USBSTS 0x0: >>>> xhci_hcd 0000:05:00.0: Event ring is empty >>>> xhci_hcd 0000:05:00.0: No Host System Error >>>> xhci_hcd 0000:05:00.0: HC is running >>>> xhci_hcd 0000:05:00.0: f8060420 port status reg = 0x2a0 >>>> xhci_hcd 0000:05:00.0: f8060424 port power reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f8060428 port link reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f806042c port reserved reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f8060430 port status reg = 0xa03 > > > Here the device is connected. > > >>>> xhci_hcd 0000:05:00.0: f8060434 port power reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f8060438 port link reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f806043c port reserved reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f8060440 port status reg = 0x2a0 >>>> xhci_hcd 0000:05:00.0: f8060444 port power reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f8060448 port link reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f806044c port reserved reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f8060450 port status reg = 0x2a0 >>>> xhci_hcd 0000:05:00.0: f8060454 port power reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f8060458 port link reg = 0x0 >>>> xhci_hcd 0000:05:00.0: f806045c port reserved reg = 0x0 >>>> xhci_hcd 0000:05:00.0: // Halt the HC >>>> xhci_hcd 0000:05:00.0: `MEM_WRITE_DWORD(3'b000, 32'hf8060020, 32'h0, >>>> 4'hf); >>>> xhci_hcd 0000:05:00.0: can't setup > > > This is where the error occurs. The host controller is not halted. > > >>>> xhci_hcd 0000:05:00.0: USB bus 3 deregistered >>>> xhci_hcd 0000:05:00.0: PCI INT A disabled >>>> xhci_hcd 0000:05:00.0: init 0000:05:00.0 fail, -110 >>>> xhci_hcd: probe of 0000:05:00.0 failed with error -110 > > > ... > > >>> >> >> Hello again, everyone! >> >> OK apologies again for replying to my own stinking posting...but I've >> made some progress and wanted to note it here for those hapless souls >> wandering through the internets later. >> >> You'll notice that the kernel configuration I posted earlier is almost >> entirely monolithic. I had assumed that I could just say >> CONFIG_USB_XHCI_HCD=y and be done for enabling xHCI. Well Sarah >> mentioned here: http://sarah.thesharps.us/2009-06-09-13-30.cherry that >> the USB-related modules should be compiled as modules for xHCI to work >> correctly. I made some changes (diff below) and now it works. >> Thanks, Sarah! >> > > I think the document is written pretty long ago. At that time xhci-hcd is > not stable enough so Sarah prefer to load xhci-hcd as module. I don't know > why all the USB-related modules should be compiled as modules. As I know, > now xhci-hcd is compiled into kernel as default. > > Can you revert to the original kernel config and try the patch attached to > see if it helps? > > Thanks, > Andiry > So, I won't pretend to understand _why_, but that appears to work! That's pretty cool. Basically it seems that you're making it so that a failure to halt the xHCI is not a reason to shut it down entirely. I also don't know what this means... Does it mean that I have buggy hardware, for which this is a workaround....or is this a patch that will end up in the Kernel tree? Or something else entirely? :-) -- Matt -- 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