From: Stanislaw Gruszka <sgruszka@redhat.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org, Ivo van Doorn <IvDoorn@gmail.com>,
Gertjan van Wingerde <gwingerde@gmail.com>,
Helmut Schaa <helmut.schaa@googlemail.com>,
Amir Hedayaty <hedayaty@gmail.com>
Subject: [PATCH] rt2800pci: handle spurious interrupts
Date: Wed, 16 Nov 2011 11:09:17 +0100 [thread overview]
Message-ID: <20111116100915.GA2191@redhat.com> (raw)
Some devices may generate spurious interrupts, we have to handle them
otherwise interrupt line will be disabled with below message and driver
will not work:
[ 2052.114334] irq 17: nobody cared (try booting with the "irqpoll" option)
[ 2052.114339] Pid: 0, comm: swapper Tainted: P 2.6.35.6-48.fc14.x86_64 #1
[ 2052.114341] Call Trace:
[ 2052.114342] <IRQ> [<ffffffff810a6e2b>] __report_bad_irq.clone.1+0x3d/0x8b
[ 2052.114349] [<ffffffff810a6f93>] note_interrupt+0x11a/0x17f
[ 2052.114352] [<ffffffff810a7a73>] handle_fasteoi_irq+0xa8/0xce
[ 2052.114355] [<ffffffff8100c2ea>] handle_irq+0x88/0x90
[ 2052.114357] [<ffffffff8146f034>] do_IRQ+0x5c/0xb4
[ 2052.114360] [<ffffffff81469593>] ret_from_intr+0x0/0x11
[ 2052.114361] <EOI> [<ffffffff8102b7f9>] ? native_safe_halt+0xb/0xd
[ 2052.114366] [<ffffffff81010f03>] ? need_resched+0x23/0x2d
[ 2052.114367] [<ffffffff8101102a>] default_idle+0x34/0x4f
[ 2052.114370] [<ffffffff81008325>] cpu_idle+0xaa/0xcc
[ 2052.114373] [<ffffffff81461f2a>] start_secondary+0x24d/0x28e
[ 2052.114374] handlers:
[ 2052.114375] [<ffffffff81332944>] (usb_hcd_irq+0x0/0x7c)
[ 2052.114378] [<ffffffffa00697da>] (rt2800pci_interrupt+0x0/0x18d [rt2800pci])
[ 2052.114384] Disabling IRQ #17
Resolve:
https://bugzilla.redhat.com/show_bug.cgi?id=658451
Reported-and-tested-by: Amir Hedayaty <hedayaty@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
I changed rt2800pci only because get bug report for that device, not
sure if similar changes are not needed for other rt2x00 PCI devices.
drivers/net/wireless/rt2x00/rt2800pci.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index da48c8a..4dc2d0f 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -880,8 +880,13 @@ static irqreturn_t rt2800pci_interrupt(int irq, void *dev_instance)
rt2x00pci_register_read(rt2x00dev, INT_SOURCE_CSR, ®);
rt2x00pci_register_write(rt2x00dev, INT_SOURCE_CSR, reg);
+ /*
+ * Some devices can generate interrupts with empty CSR register, we
+ * "handle" such irq's to prevent interrupt controller treat them as
+ * spurious interrupts and disable irq line.
+ */
if (!reg)
- return IRQ_NONE;
+ return IRQ_HANDLED;
if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
return IRQ_HANDLED;
--
1.7.1
next reply other threads:[~2011-11-16 10:07 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-16 10:09 Stanislaw Gruszka [this message]
2011-11-16 10:14 ` [PATCH] rt2800pci: handle spurious interrupts Ivo Van Doorn
2011-11-16 11:17 ` Stanislaw Gruszka
2011-11-16 11:45 ` Ivo Van Doorn
2011-11-16 10:46 ` Helmut Schaa
2011-11-16 10:52 ` Ivo Van Doorn
2011-11-16 11:01 ` Helmut Schaa
2011-11-22 20:33 ` Michael Basse
2011-11-22 22:10 ` Helmut Schaa
2011-11-23 6:25 ` Michael Basse
[not found] ` <20111123073500.GA9833@redhat.com>
2011-11-23 15:50 ` Michael Basse
2011-11-22 21:49 ` John W. Linville
2011-11-23 8:05 ` Stanislaw Gruszka
2011-11-23 8:50 ` Ivo Van Doorn
2011-11-23 8:51 ` Helmut Schaa
2011-11-23 10:51 ` Stanislaw Gruszka
[not found] ` <CAHJ2optb4E2r6W2w21oswptZh=_Q9kB+RbQ=F0TWg9zHGjXwZA@mail.gmail.com>
2011-11-23 14:40 ` Stanislaw Gruszka
2011-11-23 14:45 ` Luis Correia
[not found] ` <CAN6fvj2=EhimZUy-DKtpzAKq1mpvBt03KtX9vCi0dBTCXWVsRg@mail.gmail.com>
2011-11-23 15:14 ` Stanislaw Gruszka
2011-11-23 15:44 ` Stanislaw Gruszka
2011-11-23 17:00 ` Stanislaw Gruszka
2011-11-23 20:47 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111116100915.GA2191@redhat.com \
--to=sgruszka@redhat.com \
--cc=IvDoorn@gmail.com \
--cc=gwingerde@gmail.com \
--cc=hedayaty@gmail.com \
--cc=helmut.schaa@googlemail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.