On 01/10/2012 03:34 PM, Alex Shi wrote: > 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 OK, I think this patch answers my question for patch2... so you changed the behaviour for all xHCI pci hosts, not limited to Intel products. 1. With this patch, I think the free_irq() part in xhci_try_enable_msi() can be removed. 2. Why don't you merge patch2 and patch3? You defined a Intel device ID in patch1, use it in patch2, and then remove the code in patch3... With patch2 and 3 merged, you don't need to add any device ID at all. Thanks, Andiry -- 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