Current PCI hcd driver will check and enable line IRQ first, if line IRQ is no setting in BIOS, XHCI PCIe driver will exit. But infact, if MSI can work for this HCD, this behavior will refuse a workable HCD. This patch change the behavior. It skips the first line IRQ checking for PCI XHCI HCD in usb-core, and try to enable MSI first, if the MSI out of work, it is back to line IRQ at that time. And further more, trying MSI first can avoid a unnecessary request/fee irq for line IRQ for PCIe HCD. Thanks for Sarah's suggestion and review for this patch. Signed-off-by: Alex Shi <alex.shi@xxxxxxxxx> --- drivers/usb/host/xhci-pci.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index e12c00f..f0eeb61 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -137,11 +137,6 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) driver = (struct hc_driver *)id->driver_data; - /* stop line IRQ checking in xhci_hcd_pci_probe. */ - if (dev->vendor == PCI_VENDOR_ID_INTEL && - dev->device == PCI_DEVICE_ID_INTEL_USB_XHCI) - driver->flags |= HCD_MSI_FST; - /* Register the USB 2.0 roothub. * FIXME: USB core must know to register the USB 2.0 roothub first. * This is sort of silly, because we could just set the HCD driver flags @@ -249,7 +244,8 @@ static const struct hc_driver xhci_pci_hc_driver = { * generic hardware linkage */ .irq = xhci_irq, - .flags = HCD_MEMORY | HCD_USB3 | HCD_SHARED, + .flags = HCD_MEMORY | HCD_USB3 | HCD_SHARED | + HCD_MSI_FST, /* * basic lifecycle operations -- 1.6.3.3 -- 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