Sarah Sharp wrote: > On Tue, May 04, 2010 at 03:24:51PM +0100, David Vrabel wrote: > > Andiry Xu wrote: > > > + for (i = 0; i < xhci->msix_count; i++) { > > > + fn = (irq_handler_t)xhci_msi_irq; > > > + ret = request_irq(xhci->msix_entries[i].vector, > > > + fn, 0, "xhci_hcd", xhci_to_hcd(xhci)); > > > + if (ret) > > > + goto disable_msix; > > > + } If the second call to request_irq fails, isn't the first handler leaked? > > Are multiple vectors useful if they all use the same interrupt handler > > that locks the same spinlock? > > This patch is also less useful because it doesn't add a new event ring > per MSI-X interrupter. (Each USB device's events can be directed to a > different event ring.) Making each interrupt handler use a different > spinlock doesn't make sense until we give each interrupter a separate > event ring to process. > > Andiry, does using MSI or MSI-X save any power or have any other > benefit? Using unshared interrupts allows to run the handlers on different CPU cores, and I've heard that closed-source video drivers still introduce latencies if you share interrupts with them. As long as we can trust all the hardware out there to work with MSI, I see no reason not to use it. (Does the Windows xHCI driver use MSI?) Regards, Clemens -- 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