In order to add alternate interface settings support to the xHCI driver, I had to add a mutext to the root hub (bus->bandwidth_lock). This lock is held while the USB core is checking that the bus has enough bandwidth for the new alternate setting, issuing the control transfer to change the alternate setting, and reverting xHCI back to the previous alternate setting if that fails. The lock is also held while a new or changed configuration is being installed (including during device enumeration). Please review the last patch, as that contains most of the details. Sarah Sharp (3): xhci: Make reverting an alt setting "unfailable". xhci: Fix command completion after a drop endpoint. USB: Check bandwidth when switching alt settings. drivers/usb/core/hcd.c | 25 ++++++++++++-- drivers/usb/core/hcd.h | 3 +- drivers/usb/core/hub.c | 11 ++++++ drivers/usb/core/message.c | 68 ++++++++++++++++++++++++++++++++++--- drivers/usb/host/xhci-hcd.c | 32 +++++++++++++++--- drivers/usb/host/xhci-mem.c | 76 ++++++++++++++++++++++++++++++++++------- drivers/usb/host/xhci-ring.c | 36 +++++++++++--------- drivers/usb/host/xhci.h | 4 ++ include/linux/usb.h | 10 +++++ 9 files changed, 222 insertions(+), 43 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