I've seen the mails from Andiry in February which add support for multiple event rings. The approach is very unusual in that every interrupt processes all event rings. This is bad for NUMA, as you only want to process the event ring that's local to your node. The patches I'm sending don't go as far as actually creating multiple event rings, but they do restructure the xhci driver so that adding multiple event rings should be quite straightforward. And the last patch makes the MSI interrupt handler much lighter-weight. The approach I've taken is to define an interrupter data structure. Initially I defined an xhci_interrupter data structure, but it turned out to be a superset of the xhci_erst data structure, so I started over and this time just moved pieces to the xhci_erst data structure as necessary. There's a lot more work to be done to make the xhci driver NUMA-friendly. For example, we might want a per-erst lock that we can use instead of the per-hcd lock for things like queueing TRBs. But I'm currently working on my laptop while travelling, and it's not NUMA :-) -- 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