So, as described on IRC #ubuntu-kernel by mjg59, the issue is USB host
controllers sharing physical ports.

In this test-case the PC has 4x USB 1.1 host controllers and 1x USB2
host controller.

The three physical external USB ports are connected such that the USB2
host controller and one of the USB1.1 controllers can access and claim
them.

The test-case used port 1 (the rear-most port). If ehci_hcd (USB2)
starts first it claims the port via:

/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0/host8/target8:0:0

If uhci_hcd (USB1.1) starts first it claims the port via:

/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0/host7/target7:0:0

So, as we know,  the solution is to force ehci_hcd to load and
initialise a host controller and, most importantly, *claim the shared
ports* before uhci_hcd.

The previous gap in our understanding of this issue is the nature of the
physical ports being *shared* by the host controllers on a first come,
first served basis.

If the USB drivers remain as modules then this requires the modules
listed in required load-order in /etc/initramfs-tools/modules:

ehci_hcd
uhci_hcd
ohci_hcd

Alternatively, if the modules are built-in to the kernel image we need
to ensure the link order is the same (fastest protocol driver first),
and that support for USB3 (SuperSpeed - 5Gbps) via a xhci_hcd module
doesn't get tripped up by this issue in the future.

-- 
warning: ehci_hcd loaded AFTER uhci_hcd and ohci_hcd
https://bugs.launchpad.net/bugs/296710
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to