On Fri, Oct 22, 2010 at 10:40:30PM +0200, Lawrence Rust wrote: > Hi, > > Just built a 2.6.36 kernel and on re-booting got this error: > > Oct 22 10:13:05 gagarin kernel: [ 5.157428] xhci_hcd 0000:01:00.0: Failed to enable MSI-X > Oct 22 10:13:05 gagarin kernel: [ 5.157448] xhci_hcd 0000:01:00.0: failed to allocate MSI entry > > followed by a stream of these... > > Oct 22 10:13:05 gagarin kernel: [ 5.891099] xhci_hcd 0000:01:00.0: Spurious interrupt. > Oct 22 10:13:05 gagarin kernel: [ 9.038074] xhci_hcd 0000:01:00.0: Spurious interrupt. > Oct 22 10:13:05 gagarin kernel: [ 9.088027] xhci_hcd 0000:01:00.0: Spurious interrupt. > Oct 22 10:13:05 gagarin kernel: [ 9.137971] xhci_hcd 0000:01:00.0: Spurious interrupt. > > repeated until re-boot. Lawrence, Does the xHCI host controller still work, despite the warning messages? Do USB devices plugged into the blue ports still work? (I assume you have some of those, if not, you may need to figure out which ports are connected to the xHCI host controller by watching to see if xHCI messages like "WARN short control transfer" show up in the dmesg when you plug a USB device into a port.) I think what's happening is the i915 driver registers on the interrupt later than the xHCI driver, so whenever the i915 hardware interrupts the system, the xHCI driver has to check whether the host generated the interrupt. It hasn't, so that printk gets triggered. I think the fix is just to remove the printk. Can you test the attached patch with CONFIG_PCI_MSI=n? Sarah Sharp
>From 5a9fbe7dec412f9a3b5304cfa9f34ce7756431db Mon Sep 17 00:00:00 2001 From: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> Date: Fri, 5 Nov 2010 09:59:01 -0400 Subject: [PATCH] xhci: Remove excessive printks with shared IRQs. If the xHCI host controller shares an interrupt line with another device, the xHCI driver needs to check if the interrupt was generated by its hardware. Unfortunately, the user will see a ton of "Spurious interrupt." lines if the other hardware interrupts often. Lawrence found his dmesg output cluttered with this output when the xHCI host shared an interrupt with his i915 hardware. Remove the warning, as sharing an interrupt is a normal thing. Signed-off-by: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> Reported-by: Lawrence Rust <lvr@xxxxxxxxxxxxxxxx> --- drivers/usb/host/xhci-ring.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 9f3115e..df558f6 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -2104,7 +2104,6 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) if (!(status & STS_EINT)) { spin_unlock(&xhci->lock); - xhci_warn(xhci, "Spurious interrupt.\n"); return IRQ_NONE; } xhci_dbg(xhci, "op reg status = %08x\n", status); -- 1.6.3.3