Re: BUG: xhci_hcd Spurious interrupt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux