On Mon, Sep 19, 2016 at 4:33 PM, Greg KH <gre...@linuxfoundation.org> wrote:
> On Mon, Sep 19, 2016 at 04:05:45PM +0930, Joel Stanley wrote:
>> We can't halt the secondary HCD, because it's also the primary HCD,
>> which will cause problems if we have devices attached to the primary
>> HCD, like a keyboard.
>> We've been carrying this in our Linux-as-a-bootloader environment for a
>> while now. The machines all have the same TI TUSB73x0 part, and when we kexec
>> the devices don't come back until a system power cycle.
>> I'd like some advice on an acceptable way to upstream the fix, so that the
>> device survives kexec.
> Any reason you didn't cc: Mathias?
Fat fingers - I missed him when grabbing names from get_maintainers.
Thanks for adding him in.
On Mon, Sep 19, 2016 at 5:11 PM, Mathias Nyman
> What kernel version is this?
This patch is against 4.4.21. I've tested newer releases but haven't
seen any improvement.
> As Greg said there are fixes in this area in the 4.8 latest rc kernel.
> If that doesn't work then we need to figure out what the real issue is.
No dice on 4.8-rc7 (without any patches).
Here's 4.8-rc7 loading:
[ 3.699524] xhci_hcd 0021:09:00.0: xHCI Host Controller
[ 3.699556] xhci_hcd 0021:09:00.0: new USB bus registered, assigned
bus number 1
[ 3.699640] xhci_hcd 0021:09:00.0: Using 64-bit DMA iommu bypass
[ 3.699697] xhci_hcd 0021:09:00.0: hcc params 0x0270f06d hci
version 0x96 quirks 0x00000000
[ 3.700286] hub 1-0:1.0: USB hub found
[ 3.700299] hub 1-0:1.0: 4 ports detected
[ 3.700493] xhci_hcd 0021:09:00.0: xHCI Host Controller
[ 3.700522] xhci_hcd 0021:09:00.0: new USB bus registered, assigned
bus number 2
[ 3.700552] usb usb2: We don't know the algorithms for LPM for this
host, disabling LPM.
[ 3.700733] hub 2-0:1.0: USB hub found
[ 3.700748] hub 2-0:1.0: 4 ports detected
Then we kexec into the second kernel. Here's what the second kernel
prints when trying to bring the controller up:
[ 1.588272] xhci_hcd 0021:09:00.0: xHCI Host Controller
[ 1.588282] xhci_hcd 0021:09:00.0: new USB bus registered, assigned
bus number 1
[ 1.619279] xhci_hcd 0021:09:00.0: Host not halted after 16000 microseconds.
[ 1.619281] xhci_hcd 0021:09:00.0: can't setup: -110
[ 1.619447] xhci_hcd 0021:09:00.0: USB bus 1 deregistered
[ 1.619457] xhci_hcd 0021:09:00.0: init 0021:09:00.0 fail, -110
[ 1.619571] xhci_hcd: probe of 0021:09:00.0 failed with error -110
Note that the second kernel is a distro one (Ubuntu 4.4.0-36-generic).
> xhci hardware is really just one controller. The split into primary and
> secondary HCD
> is a software only. We always load the primary HCD first (USB2) and
> secondary second (USB3).
> We unload them in reverse order, and need to stop the xhci (halt the hcd) as
> a first step.
> load primary
> load secondary (starts the xhci controller
> unload secondary (halts the controller)
> unload primary (free memory)
Thanks for the explanation. I wasn't the author of the first hack we
put in our tree, but I have rewritten it as we rebase on the stable
So the hack as I sent it doesn't do any halt the secondary, and lets
the primary unload path halt the controller. Any theory as to why this
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html