On Wed, 2013-03-27 at 04:23 +0000, Mike wrote: > Ben Hutchings wrote: > > However, the lspci output you attached to #703469 shows that the xHCI > > does not have a driver bound to it. Perhaps the kernel log (from > > dmesg) would explain why. > > Thanks Ben. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=703469#25 > "request interrupt 255 failed"? > > That's the dmesg output from the running (non-Xen, that's another bug) > system, not from the UEFI d-i.
I think that *might* be fixed by: commit ec51ee786df8a44d9058a478348534cf46945faf Author: Hannes Reinecke <h...@suse.de> Date: Mon Mar 4 17:14:43 2013 +0100 USB: xhci: correctly enable interrupts commit 00eed9c814cb8f281be6f0f5d8f45025dc0a97eb upstream. which went into Linux 3.2.42 earlier today. But that change won't go into Debian for at least a week or so. You could try it yourself using the attached patch and the instructions at <http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-official>. Ben. -- Ben Hutchings I'm not a reverse psychological virus. Please don't copy me into your sig.
From: Hannes Reinecke <h...@suse.de> Date: Mon, 4 Mar 2013 17:14:43 +0100 Subject: USB: xhci: correctly enable interrupts commit 00eed9c814cb8f281be6f0f5d8f45025dc0a97eb upstream. 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. v3: Be careful to not break XHCI_BROKEN_MSI workaround (by trenn) 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> Acked-by: Sarah Sharp <sarah.a.sh...@linux.intel.com> Reviewed-by: Thomas Renninger <tr...@suse.de> Signed-off-by: Hannes Reinecke <h...@suse.de> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> Signed-off-by: Ben Hutchings <b...@decadent.org.uk> --- drivers/usb/core/hcd-pci.c | 23 ++++++++++++++--------- drivers/usb/host/xhci.c | 3 ++- 2 files changed, 16 insertions(+), 10 deletions(-) --- a/drivers/usb/core/hcd-pci.c +++ b/drivers/usb/core/hcd-pci.c @@ -173,6 +173,7 @@ int usb_hcd_pci_probe(struct pci_dev *de struct hc_driver *driver; struct usb_hcd *hcd; int retval; + int hcd_irq = 0; if (usb_disabled()) return -ENODEV; @@ -187,15 +188,19 @@ int usb_hcd_pci_probe(struct pci_dev *de 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 has its own irq management + * make sure irq setup is not touched for xhci in generic hcd code */ - 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", + pci_name(dev)); + retval = -ENODEV; + goto disable_pci; + } + hcd_irq = dev->irq; } hcd = usb_create_hcd(driver, &dev->dev, pci_name(dev)); @@ -245,7 +250,7 @@ int usb_hcd_pci_probe(struct pci_dev *de pci_set_master(dev); - retval = usb_add_hcd(hcd, dev->irq, IRQF_SHARED); + retval = usb_add_hcd(hcd, hcd_irq, IRQF_SHARED); if (retval != 0) goto unmap_registers; set_hs_companion(dev, hcd); --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -342,7 +342,7 @@ static int xhci_try_enable_msi(struct us * generate interrupts. Don't even try to enable MSI. */ if (xhci->quirks & XHCI_BROKEN_MSI) - return 0; + goto legacy_irq; /* unregister the legacy interrupt */ if (hcd->irq) @@ -363,6 +363,7 @@ static int xhci_try_enable_msi(struct us return -EINVAL; } + legacy_irq: /* fall back to legacy interrupt*/ ret = request_irq(pdev->irq, &usb_hcd_irq, IRQF_SHARED, hcd->irq_descr, hcd);
signature.asc
Description: This is a digitally signed message part