Hello.

On 04-03-2013 12:22, Hannes Reinecke wrote:

xhci has its own interrupt enabling routine, which will try to
use MSI-X/MSI if present. So the usb core shouldn't try to enable
legacy interrupts; on some machines the xhci legacy IRQ setting
is invalid.

Cc: Bjorn Helgaas <bhelg...@google.com>
Cc: Oliver Neukum <oneu...@suse.de>
Cc: Thomas Renninger <tr...@suse.de>
Cc: Yinghai Lu <ying...@kernel.org>
Cc: Frederik Himpe <fhi...@vub.ac.be>
Cc: David Haerdeman <da...@hardeman.nu>
Cc: Alan Stern <st...@rowland.harvard.edu>
Signed-off-by: Hannes Reinecke <h...@suse.de>

diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
index 622b4a4..2647e75 100644
--- a/drivers/usb/core/hcd-pci.c
+++ b/drivers/usb/core/hcd-pci.c
[...]
@@ -187,15 +188,21 @@ int usb_hcd_pci_probe(struct pci_dev *dev, const struct 
pci_device_id *id)
                return -ENODEV;
        dev->current_state = PCI_D0;

-       /* The xHCI driver supports MSI and MSI-X,
-        * so don't fail if the BIOS doesn't provide a legacy IRQ.
+       /*
+        * The xHCI driver supports MSI and MSI-X,
+        * so don't fail if the BIOS doesn't provide a legacy IRQ
+        * and do not try to enable legacy IRQs.
         */
-       if (!dev->irq && (driver->flags & HCD_MASK) != HCD_USB3) {
-               dev_err(&dev->dev,
-                       "Found HC with no IRQ.  Check BIOS/PCI %s setup!\n",
-                       pci_name(dev));
-               retval = -ENODEV;
-               goto disable_pci;
+       if ((driver->flags & HCD_MASK) != HCD_USB3) {
+               if (!dev->irq) {
+                       dev_err(&dev->dev,
+                               "Found HC with no IRQ.  "
+                               "Check BIOS/PCI %s setup!\n",

The message strings are allowed to take more than 80 chars (to facilitate grepping for them), so no need to break this one; checkpatch.pl should not complain...

+                               pci_name(dev));
+                       retval = -ENODEV;
+                       goto disable_pci;
+               }
+               hcd_irq = dev->irq;
        }

        hcd = usb_create_hcd(driver, &dev->dev, pci_name(dev));

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to