Hi Mathias, Here's a resend of my previous series. This time I've added a few more patches which I have been working on and also cherry-pick three old patches which have been pending since May this year. Note, in particular, the work done for XHCI tracers which will help us a lot on debugging sessions. Note, also, that we're starting to save a lot of memory with XHCI after these patches. Only allocating memory for slots which we support, instead of default to static 256 entry arrays. There's still a lot of work to be done, but I suppose this is a step in the right direction. I've been running these patches for several weeks now using SKL most of the time. Tested with our tree of devices we have in the office. Mass Storage, mouse, keyboard, cameras, all still working fine. While testing, I've found a regression on v4.10-rc1 (vanilla), btw. One of the devices in our tree dies after 5 consecutive USB Resets are driven on the bus. Not sure if this is a problem with the device, but on a different laptop with i5-4200U (Broadwell?) running v4.4 the same test works fine. I'm building v4.10-rc1 to see if the devices fails with Broadwell too. Anyway, please consider taking these patches to v4.11 merge window. cheers Felipe Balbi (37): usb: host: xhci: dynamically allocate devs array usb: host: xhci: handle COMP_STOP from SETUP phase too usb: host: xhci: change pre-increments to post-increments usb: host: xhci: print HCIVERSION on debug usb: host: xhci: rename completion codes to match spec usb: host: xhci: WARN on unexpected COMP_SUCCESS usb: host: xhci: WARN() if we interrupt without event_ring usb: host: xhci: simplify irq handler return usb: host: xhci: clear only STS_EINT usb: host: xhci: remove unneded semicolon usb: host: xhci: use slightly better list helpers usb: host: xhci: major rewrite of process_ctrl_td() usb: host: xhci: major rewrite of process_bulk_intr_td() usb: host: xhci: cleanup finish_td() usb: host: xhci: reorder variable definitions usb: host: xhci: introduce xhci_td_cleanup() usb: host: xhci: remove bogus __releases()/__acquires() annotation usb: host: xhci: check for a valid ring when unmapping bounce buffer usb: host: xhci: unconditionally call xhci_unmap_td_bounce_buffer() usb: host: xhci: don't try to mask critical errors usb: host: xhci: remove debug argument from trb_in_td() usb: host: xhci: remove unnecessary list_for_each_entry_safe() usb: host: xhci: introduce helper to convert a single TRB in no-op usb: host: xhci: use trb_to_noop() from xhci_handle_stopped_cmd_ring() usb: host: xhci: simplify implementation of trb_in_td() usb: host: xhci: avoid code duplication usb: host: xhci: convert to list_for_each_entry_safe() usb: host: xhci: mark trb_in_td() static usb: host: xhci: combine event TRB completion debugging messages usb: host: xhci: make a generic TRB tracer usb: host: xhci: add urb_enqueue/dequeue/giveback tracers usb: host: xhci: switch to running avg trb length usb: host: xhci: convert several if() to a single switch statement usb: host: xhci: refactor xhci_hub_control() usb: host: xhci: remove newline from tracer usb: host: xhci: add xhci_virt_device tracer usb: host: xhci: dynamically allocate dcbaa drivers/usb/host/xhci-dbg.c | 22 +- drivers/usb/host/xhci-ext-caps.h | 2 +- drivers/usb/host/xhci-hub.c | 659 +++++++++++++++++++++---------------- drivers/usb/host/xhci-mem.c | 268 +++++---------- drivers/usb/host/xhci-ring.c | 695 +++++++++++++++++++-------------------- drivers/usb/host/xhci-trace.h | 184 +++++++++-- drivers/usb/host/xhci.c | 68 ++-- drivers/usb/host/xhci.h | 509 +++++++++++++++++++++++----- 8 files changed, 1421 insertions(+), 986 deletions(-) -- 2.11.0 -- 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