From: Alexey Neyman <stilor@att.net>
To: Chris Ball <cjb@laptop.org>,
linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Avoid needless loop in sdhci_irq() for Card Interrupt
Date: Tue, 22 Oct 2013 11:19:12 -0700 [thread overview]
Message-ID: <3529161.O27qBHpvvG@mistral> (raw)
[-- Attachment #1: Type: text/plain, Size: 713 bytes --]
[Patch ping #2]
Hi all,
I've discovered that the sdhci_irq() function needlessly iterates re-reading
the interrupt status and doing nothing (until it runs out of max_loops) when
it handles the "Card Interrupt" status in the interrupt status register.
The reason is that the "Card Interrupt" bit is not cleared until the
sdhci_irq() calls mmc_signal_sdio_irq(), so if Card Interrupt was asserted,
re-reading the interrupt status will find this bit set over and over, even if
no other bits are reported.
The fix: ignore Card Interrupt bits in the interrupt status if we already know
that mmc_signal_sdio_irq() is going to be called at the end of sdhci_irq().
Signed-off-by: Alexey Neyman <stilor@att.net>
[-- Attachment #2: sdhci.c.diff --]
[-- Type: text/x-patch, Size: 688 bytes --]
commit 7f23315b344ca51ddf22a78f326f88404fa8c81d
Author: Alexey Neyman <stilor@att.net>
Date: Wed Oct 9 22:23:54 2013 -0700
Avoid a loop in sdhci.c.
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 7a7fb4f..a83cd1b 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2491,6 +2491,14 @@ again:
result = IRQ_HANDLED;
intmask = sdhci_readl(host, SDHCI_INT_STATUS);
+
+ /*
+ * If we know we'll call the driver to signal SDIO IRQ, disregard
+ * further indications of Card Interrupt in the status to avoid a
+ * needless loop.
+ */
+ if (cardint)
+ intmask &= ~SDHCI_INT_CARD_INT;
if (intmask && --max_loops)
goto again;
out:
next reply other threads:[~2013-10-22 18:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-22 18:19 Alexey Neyman [this message]
-- strict thread matches above, loose matches on Subject: below --
2013-11-04 18:43 Avoid needless loop in sdhci_irq() for Card Interrupt Alexey Neyman
2013-11-05 6:39 ` Dong Aisheng
2013-10-16 17:51 Alexey Neyman
2013-10-10 5:26 Alexey Neyman
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=3529161.O27qBHpvvG@mistral \
--to=stilor@att.net \
--cc=cjb@laptop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
/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.