This patchset might be better named "xHCI: stop lying and develop a split personality". USB 3.0 external hubs show up as two completely separate devices: a USB 2.0 hub with LS/FS/HS ports, and a USB 3.0 hub with SS ports. The xHCI roothub emulation code has always lied to the USB core and created a single roothub with modified USB 2.0 hub descriptors, that handles ports of all speeds. With John's patch to add USB 3.0 hub support to the core, we can finally stop lying and register two xHCI roothubs. Alan Stern suggested I register two usb_hcd structures with the USB core instead of trying to modify all the different HCD's roothub code to fix the hcd-is-a-bus assumption. I've done that, and probably touched less code than trying to properly fix that false assumption. This is still a WIP, since I haven't addressed the bus and PCI suspend/resume code yet. I'm considering allowing each bus to suspend separately (e.g. putting the USB 2.0 ports in suspend, and leaving the USB 3.0 ports active), but making sure that each bus is suspended before the whole PCI device is suspended. The code does seem to work when USB selective suspend is disabled. John Youn (1): USB 3.0 Hub Changes Sarah Sharp (14): xhci: Remove old no-op test. usb: Make USB 3.0 roothub have a SS EP comp descriptor. xhci: Always use usb_hcd in URB instead of converting xhci_hcd. xhci: Change hcd_priv be a pointer. xhci: Setup array of USB 2.0 and USB 3.0 ports. usb: Make usb_hcd_pci_probe labels more descriptive. usb: Refactor irq enabling out of usb_add_hcd() usb: Change usb_hcd->bandwidth_mutex to a pointer. usb: Make core allocate resources per PCI-device. xhci: Prepare driver for multiple usb_hcds. usb: Register second xHCI roothub. xhci: Return a USB 3.0 hub descriptor for USB3 roothub. xhci: Limit roothub ports to 15 USB3 & 31 USB2 ports. xhci: Make roothub functions deal with device removal. drivers/staging/usbip/vhci_hcd.c | 4 +- drivers/usb/core/hcd-pci.c | 55 ++++++++-- drivers/usb/core/hcd.c | 181 +++++++++++++++++++++++-------- drivers/usb/core/hub.c | 81 ++++++++++++-- drivers/usb/core/message.c | 22 ++-- drivers/usb/gadget/dummy_hcd.c | 4 +- drivers/usb/host/ehci-hub.c | 4 +- drivers/usb/host/imx21-hcd.c | 4 +- drivers/usb/host/isp116x-hcd.c | 4 +- drivers/usb/host/isp1362-hcd.c | 4 +- drivers/usb/host/isp1760-hcd.c | 4 +- drivers/usb/host/ohci-hub.c | 10 +- drivers/usb/host/oxu210hp-hcd.c | 4 +- drivers/usb/host/r8a66597-hcd.c | 4 +- drivers/usb/host/sl811-hcd.c | 4 +- drivers/usb/host/u132-hcd.c | 10 +- drivers/usb/host/xhci-hub.c | 220 +++++++++++++++++++++++++++++-------- drivers/usb/host/xhci-mem.c | 223 ++++++++++++++++++++++++++++++++++++-- drivers/usb/host/xhci-pci.c | 38 ++++++- drivers/usb/host/xhci-ring.c | 65 +++++++----- drivers/usb/host/xhci.c | 66 ++++++++---- drivers/usb/host/xhci.h | 37 +++++-- drivers/usb/wusbcore/rh.c | 4 +- include/linux/usb/ch11.h | 41 +++++++- include/linux/usb/hcd.h | 7 +- 25 files changed, 872 insertions(+), 228 deletions(-) -- 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